fuzzbunnyは、小さな(1K)、高速およびメモリ効率の高いファジーストリング検索/マッチング/ハイライトライブラリです。ブラウザ環境またはnode.jsで同様にうまく機能します。
他の同様のライブラリは、Fuzzymatch、Fuzzy、Fuzzy-Search、Fuzzyjsです。
fuzzbunny 、機敏で速くなることを目指しています。フロントエンドライブラリと簡単に統合して、優れた検索UIを構築できるシンプルなAPIがあります。 MixPanel.comで使用して、UIドロップダウンとテーブルを強化します。
npm install --save fuzzbunnyまたはyarn add fuzzbunny
Fuzzbunny Gutenbergカタログデモ→

const { fuzzyFilter , fuzzyMatch } = require ( `fuzzbunny` ) ;
// or import {fuzzyFilter, fuzzyMatch} from 'fuzzbunny';
const heroes = [
{
name : `Claire Bennet` ,
ability : `Rapid cellular regeneration` ,
} ,
{
name : `Micah Sanders` ,
ability : `Technopathy` ,
} ,
{
name : `Hiro Nakamura` ,
ability : `Space-time manipulation` ,
} ,
{
name : `Peter Petrelli` ,
ability : `Tactile power mimicry` ,
} ,
] ;
// Use fuzzyFilter to filter an array of items on specific fields and get filtered + score-sorted results with highlights.
const results = fuzzyFilter ( heroes , `stm` , { fields : [ `name` , `ability` ] } ) ;
/*
results = [
{
item: {
name: 'Peter Petrelli',
ability: 'Tactile power mimicry',
},
score: 1786,
highlights: {
ability: ['', 'T', 'actile power ', 'm', 'imicry'],
},
},
{
item: {
name: 'Hiro Nakamura',
ability: 'Space-time manipulation',
},
score: 983,
highlights: {
ability: ['Space-', 't', 'ime ', 'm', 'anipulation'],
},
},
];
*/
// Use fuzzyMatch to match a single string to get score + highlights. Returns null if no match found.
const match = fuzzyMatch ( heroes [ 0 ] . name , `ben` ) ;
/*
match = {
score: 2893,
highlights: ['Claire ', 'Ben', 'net'],
};
*/ fuzzbunny 、次の信号を優先するスコアリングアルゴリズムを使用します。 _getMatchScore関数を参照してください。
例1:
{Mayfl}owerはThe {Mayfl}owerを上回りますThe {Mayfl}ower Story of the {Mayfl}owerの上にランク付けされますThe {Mayfl}ower {May} {fl}owerを超えてランク付けされますThe {May} {fl}ower This {May} {fl}owerの上にランク付けされます
例2:
const f = require ( `fuzzbunny` ) ;
f . fuzzyMatch ( `Gobbling pupusas` , `usa` ) ;
// {score: 2700, highlights: ['Gobbling pup', 'usa', 's']}
f . fuzzyMatch ( `United Sheets of Antarctica` , `usa` ) ;
// {score: 2276, highlights: ['', 'U', 'nited ', 'S', 'heets of ', 'A', 'ntarctica']} 3文字の連続したシーケンスがより高いスコアをもたらすため、 Gobbling pup{usa}s勝ちます。
注: fuzzbunny意味のある結果を得るためにオプトミーズします。それは、貪欲なマッチングではなく、サブストリング/プレフィックス/頭字語一致のみを行います。
これは、人間の脳がプレフィックスのリコールに最適だからです。たとえば、「ca」で始まる単語は、「c」と「a」という文字を含む単語よりもはるかに簡単です。 {usa}は{U}nited {S}tates of {A}merica 、not F{u}ll Java{s}cript Fr{a}mework表していることを覚えておくのは簡単です。
fuzzbunny 、最新のハードウェアで100万行/秒と一致します。 2.4GHz CPUで2018 MacBook Proでテストされました。 tests/performance.jsを参照してください
fuzzbunnyには、自動生成タイプスクリプトタイプが付属しています。 index.d.tsを参照してください