fuzzbunny ist ein kleiner (1K), schneller und maßstabsiger Fuzzy -String -Such-/Anpassungsbibliothek. Es funktioniert in einer Browserumgebung oder Node.js.
Andere ähnliche Bibliotheken sind Fuzzymatch, Fuzzy, Fuzzy-Search, Fuzzyjs.
fuzzbunny zielt darauf ab, flink und schnell zu sein. Es verfügt über eine einfache API, die leicht in jede Frontend -Bibliothek integriert werden kann, um eine großartige Such -Benutzeroberfläche zu erstellen. Wir verwenden es bei Mixpanel.com, um unsere UI -Dropdowns und -Tische mit Strom zu versorgen.
npm install --save fuzzbunny oder yarn add fuzzbunny
Fuzzbunny Gutenberg -Katalog -Demo →

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 verwendet einen Bewertungsalgorithmus, der die folgenden Signale priorisiert. Siehe Funktion _getMatchScore .
Beispiel 1:
{Mayfl}ower rangiert über The {Mayfl}owerThe {Mayfl}ower rangiert über Story of the {Mayfl}owerThe {Mayfl}ower rangiert über {May} {fl}owerThe {May} {fl}ower rangiert über This {May} {fl}ower 
Beispiel 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']} Gobbling pup{usa}s gewinnt, weil 3 Buchstaben angrenzend eine höhere Punktzahl erzielen.
Hinweis : fuzzbunny entfasst sich für aussagekräftige Ergebnisse. Es wird nur Substring/Präfix/Acronym-Matching durchgeführt, nicht gieriger Matching.
Dies liegt daran, dass Menschen des Menschen im Voraberruf großartig sind. ZB Wörter, die mit "CA" beginnen, sind viel einfacher zu erinnern als Wörter, die die Buchstaben "C" und "A" irgendwo enthalten. Es ist leicht zu erinnern, dass {usa} für {U}nited {S}tates of {A}merica , nicht F{u}ll Java{s}cript Fr{a}mework
fuzzbunny -Übereinstimmung ~ Millionen Zeilen/Sekunde auf moderne Hardware. Getestet am MacBook Pro 2018 mit 2,4 GHz CPU. Siehe Tests/Performance.js
fuzzbunny verfügt über autogenerierte Typskriptypen. Siehe Index.d.ts