ไลบรารีน้ำหนักเบาขนาดเล็กสำหรับ Fuzzy Search
ฉันสร้างห้องสมุดนี้จากการเรียนรู้เกี่ยวกับอัลกอริธึม Levenshtein Distance เพื่อคำนวณจำนวนขั้นต่ำของการแก้ไขอักขระตัวเดียว (การแทรก การลบ หรือการแทนที่) ที่จำเป็นสำหรับการแปลงคำหนึ่งไปเป็นอีกคำหนึ่งโดย Vladimir Levenshtein
บันทึก
หมายเหตุ: ห้องสมุดยังอยู่ในช่วงเริ่มต้น ดังนั้นหากคุณต้องการช่วยปรับปรุง โปรดเปิดประเด็น
คุณสามารถตรวจสอบการสาธิตได้ที่นี่
ด้วย 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 ) ;
API search
จะให้สตริงที่ตรงกันโดยประมาณพร้อมกับข้อความค้นหาที่ส่งผ่านในรูปแบบด้านล่าง
คุณสมบัติ | คำอธิบาย |
---|---|
ข้อความ | สตริงเป้าหมายที่ตรงกับแบบสอบถาม |
ระยะทาง | จำนวนการแก้ไขขั้นต่ำ (การแทรก / การลบ / การแทนที่) ที่จำเป็นในการแปลงข้อความค้นหาเป็นข้อความเป้าหมาย |
[
{
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
ประกอบด้วยสองดัชนี -
ตัวอย่าง ?
query = "ala" , target string = "Australia"
matches : [
[ 0 , 5 ] ,
[ 1 , 6 ] ,
[ 2 , 8 ] ,
] ,
ในตัวอย่างข้างต้น ? พบการแข่งขัน
a
ที่ดัชนี 0th
ใน ala
ตรงกับอักขระ a
ที่ดัชนี 5th
ใน Australia
l
ที่ดัชนี 1st
ใน ala
ตรงกับอักขระ a
ที่ดัชนี 6th
ใน Australia
a
ที่ดัชนี 2nd
ใน ala
ตรงกับอักขระ a
ที่ดัชนี 8th
ใน Australia
คำตอบที่สมบูรณ์จะเป็น ?
[
{
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
กรุณาเปิดประเด็นเพื่อที่เราจะได้เริ่มพูดคุยกัน ความช่วยเหลือในการปรับปรุงห้องสมุดยินดีเป็นอย่างยิ่ง :)