ฟังก์ชันความคล้ายคลึงสตริงที่เรียบง่ายและมีน้ำหนักเบา (ลดขนาด ~ 700 ไบต์) โดยอิงจากการเปรียบเทียบจำนวนบิ๊กแกรมที่เหมือนกันระหว่างสองสตริงใดๆ ส่งกลับคะแนนระหว่าง 0 ถึง 1 บ่งบอกถึงความแข็งแกร่งของการแข่งขัน
จากค่าสัมประสิทธิ์ Sørensen–Dice อัลกอริทึมนี้มีประสิทธิภาพมากที่สุดในการตรวจจับคำที่จัดเรียงใหม่หรือการสะกดผิด มีแนวโน้มที่จะมีประสิทธิภาพน้อยลงเมื่อใช้สตริงที่สั้นมาก เว้นแต่ว่าคุณอาจเปลี่ยนไปใช้การเปรียบเทียบอักขระแต่ละตัวที่เหมือนกันแทนการใช้บิ๊กแกรม
ไม่คำนึงถึงขนาดตัวพิมพ์ เว้นแต่คุณจะระบุเป็นอย่างอื่น ไม่ละเลยเครื่องหมายวรรคตอนหรือช่องว่าง ในบางกรณี การนำเครื่องหมายวรรคตอนออกล่วงหน้าอาจช่วยปรับปรุงความแม่นยำได้
เวอร์ชัน 2.0 ปรับอัลกอริทึมให้เหมาะสมจากความซับซ้อนของเวลา O(n 2 ) เป็น O(n) และเปลี่ยนจากการใช้อาร์เรย์สำหรับบิ๊กแกรมเป็นแผนที่ ซึ่งพบว่าเร็วกว่าอย่างมากในการทดสอบประสิทธิภาพ
ไลบรารีนี้ใช้โครงสร้างข้อมูลแผนที่ในตัวเพื่อประสิทธิภาพสูงสุด ดังนั้นจึงต้องมีอย่างน้อย IE11 หรือโพลีฟิลสำหรับแผนที่
import { stringSimilarity } from "string-similarity-js" ;
// Rearranged words
stringSimilarity ( "Lorem ipsum" , "Ipsum lorem" )
// Returns a score of 0.9
// Typos
stringSimilarity ( "The quick brown fox jumps over the lazy dog" , "The quck brown fx jumps over the lazy dog" )
// 0.92
// Even more different
stringSimilarity ( "The quick brown fox jumps over the lazy dog" , "The quack brain fax jomps odor the lady frog" )
// 0.65
// Completely different strings
stringSimilarity ( "The quick brown fox jumps over the lazy dog" , "Lorem ipsum" )
// 0.07
// Tiny strings are less effective with default settings
stringSimilarity ( "DMV" , "DNV" )
// Returns 0, because technically there are no bigrams in common between the two
// Passing in a substring length of 1 may improve accuracy on tiny strings
stringSimilarity ( "DMV" , "DNV" , 1 )
// Returns 0.67, the percentage of letters in common between the two
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT - ดูรายละเอียดในไฟล์ LICENSE.md