Perpustakaan kecil yang ringan untuk Pencarian Fuzzy.
Saya membuat perpustakaan ini sebagai hasil pembelajaran tentang algoritma Jarak Levenshtein untuk menghitung jumlah minimum pengeditan karakter tunggal (penyisipan, penghapusan atau penggantian) yang diperlukan untuk mengubah satu kata ke kata lain oleh Vladimir Levenshtein.
Catatan
Catatan: Perpustakaan masih berada pada tahap awal, jadi jika Anda ingin membantu memperbaikinya, silakan buka terbitan.
Anda dapat memeriksa demonya di sini.
dengan yarn
yarn add fuzzify
dengan 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 ) ;
API search
memberikan perkiraan string yang cocok dengan kueri yang diteruskan dalam format di bawah ini.
Atribut | Keterangan |
---|---|
teks | String target yang cocok dengan kueri |
jarak | Jumlah minimum pengeditan (Penyisipan / Penghapusan / Pergantian) yang diperlukan untuk mengubah kueri menjadi teks target. |
[
{
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
- Menentukan apakah indices
yang karakternya cocok harus dikembalikan dalam respons. Setiap elemen match
terdiri dari dua indeks -
Contoh ?
query = "ala" , target string = "Australia"
matches : [
[ 0 , 5 ] ,
[ 1 , 6 ] ,
[ 2 , 8 ] ,
] ,
Dalam contoh di atas? kecocokan ditemukan
a
pada indeks 0th
di ala
cocok dengan karakter a
pada indeks 5th
di Australia
l
pada indeks 1st
di ala
cocok dengan karakter a
pada indeks 6th
di Australia
a
pada indeks 2nd
di ala
cocok dengan karakter a
pada indeks 8th
di Australia
Respon lengkapnya adalah?
[
{
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
Menentukan apakah skor harus ditambahkan pada hasil. Skor 1
berarti sama persis, namun skor 0
berarti tidak ada kecocokan dan opsi tersebut dihapus dari hasil. Jika Anda ingin mendapatkan semua opsi pada hasilnya, silakan buka masalah dan mari berdiskusi.
caseSensitive
Menentukan apakah kueri harus peka huruf besar-kecil atau tidak. Secara default, opsi ini false
.
Instal paket:
yarn
Mulai taman bermain pengembangan:
yarn start
Perintah bangun:
yarn build
Silakan buka masalah agar kita dapat mulai berdiskusi. Bantuan apa pun untuk meningkatkan perpustakaan sangat diharapkan :).