fuzzify
v0.1.0
あいまい検索用の小さな軽量ライブラリ。
このライブラリは、ウラジミール レーベンシュタインによる、ある単語を別の単語に変換するために必要な単一文字の編集 (挿入、削除、置換) の最小数を計算するレーベンシュタイン ディスタンス アルゴリズムについて学習した結果として作成しました。
注記
注: ライブラリは非常に初期段階にあるため、改善に協力したい場合は、問題を作成してください。
ここでデモを確認できます。
yarn
で
yarn add fuzzify
npm
で
npm install fuzzify
import Fuzzy from "fuzzify" ;
const countries = [
"Australia" ,
"France" ,
"Germany" ,
"Hungary" ,
"Iceland" ,
"India" ,
"Israel" ,
"Italy" ,
"Japan" ,
"Malawi" ,
"Malaysia" ,
"Maldives" ,
] ;
const fuzzy = new Fuzzy ( countries ) ;
const query = "ala" ;
const results = fuzzy . search ( query ) ;
console . log ( "RESULTS" , results ) ;
search
API は、渡されたクエリとおおよそ一致する文字列を以下の形式で提供します。
属性 | 説明 |
---|---|
文章 | クエリが照合されるターゲット文字列 |
距離 | クエリをターゲット テキストに変換するために必要な編集 (挿入/削除/置換) の最小数。 |
[
{
text : "Malawi" ,
distance : 3 ,
} ,
{
text : "Malaysia" ,
distance : 5 ,
} ,
{
text : "Australia" ,
distance : 6 ,
} ,
{
text : "Italy" ,
distance : 3 ,
} ,
{
text : "Japan" ,
distance : 3 ,
} ,
{
text : "Iceland" ,
distance : 5 ,
} ,
{
text : "Maldives" ,
distance : 6 ,
} ,
{
text : "Israel" ,
distance : 5 ,
} ,
{
text : "India" ,
distance : 4 ,
} ,
{
text : "France" ,
distance : 5 ,
} ,
{
text : "Germany" ,
distance : 6 ,
} ,
{
text : "Hungary" ,
distance : 6 ,
} ,
] ;
includeMatches
includeMatches
- 文字が一致するindices
応答で返すかどうかを決定します。各match
要素は 2 つのインデックスで構成されます。
例 ?
query = "ala" , target string = "Australia"
matches : [
[ 0 , 5 ] ,
[ 1 , 6 ] ,
[ 2 , 8 ] ,
] ,
上の例では?一致が見つかりました
ala
の0th
のインデックスにある文字a
はAustralia
の5th
のインデックスにある文字a
と一致しますala
の1st
のインデックスにある文字l
Australia
の6th
のインデックスにある文字a
と一致しますala
の2nd
のインデックスにある文字a
Australia
の8th
のインデックスにある文字a
と一致します完全な応答は次のようになります。
[
{
text : "Malawi" ,
distance : 3 ,
matches : [
[ 0 , 1 ] ,
[ 1 , 2 ] ,
[ 2 , 3 ] ,
] ,
} ,
{
text : "Malaysia" ,
distance : 5 ,
matches : [
[ 0 , 1 ] ,
[ 1 , 2 ] ,
[ 2 , 7 ] ,
] ,
} ,
{
text : "Australia" ,
distance : 6 ,
matches : [
[ 0 , 5 ] ,
[ 1 , 6 ] ,
[ 2 , 8 ] ,
] ,
} ,
{
text : "Italy" ,
distance : 3 ,
matches : [
[ 0 , 2 ] ,
[ 1 , 3 ] ,
] ,
} ,
{
text : "Japan" ,
distance : 3 ,
matches : [
[ 0 , 1 ] ,
[ 2 , 3 ] ,
] ,
} ,
{
text : "Iceland" ,
distance : 5 ,
matches : [
[ 1 , 3 ] ,
[ 2 , 4 ] ,
] ,
} ,
{
text : "Maldives" ,
distance : 6 ,
matches : [
[ 0 , 1 ] ,
[ 1 , 2 ] ,
] ,
} ,
{
text : "Israel" ,
distance : 5 ,
matches : [
[ 0 , 3 ] ,
[ 1 , 5 ] ,
] ,
} ,
{
text : "India" ,
distance : 4 ,
matches : [ [ 2 , 4 ] ] ,
} ,
{
text : "France" ,
distance : 5 ,
matches : [ [ 2 , 2 ] ] ,
} ,
{
text : "Germany" ,
distance : 6 ,
matches : [ [ 2 , 4 ] ] ,
} ,
{
text : "Hungary" ,
distance : 6 ,
matches : [ [ 2 , 4 ] ] ,
} ,
] ;
includeScore
結果にスコアを追加するかどうかを決定します。スコア1
は完全一致を意味しますが、スコア0
は一致しないことを意味し、これらのオプションは結果から削除されます。結果のすべてのオプションを取得したい場合は、問題を開いて議論してください。
caseSensitive
クエリで大文字と小文字を区別するかどうかを決定します。デフォルトでは、このオプションはfalse
です。
パッケージをインストールします。
yarn
開発プレイグラウンドを開始します。
yarn start
ビルドコマンド:
yarn build
議論を開始できるよう、問題を開いてください。ライブラリを改善するための助けは大歓迎です :)。