แนวคิดในการสร้างคุณหมายถึงฟีเจอร์ XYZ ในเว็บไซต์หรือไม่

ฉันต้องการให้ผู้ใช้สามารถค้นหารายชื่อธุรกิจจำนวนมากได้ แต่ยังคงพบรายการที่ใกล้เคียงกัน

ใครบ้างมีคำแนะนำเกี่ยวกับวิธีที่ดีที่สุดในการดำเนินการนี้เมื่อคุณไม่ได้กำหนดเป้าหมายคำในพจนานุกรมง่ายๆ แต่ใช้ชื่อที่ซับซ้อนเช่น ABC Business Name แทน

ความนับถือ.


person Keith Adler    schedule 08.12.2009    source แหล่งที่มา
comment
ฉันเห็นด้วย. ฉันชื่นชมความรู้เชิงลึกของเพื่อนวิศวกรซอฟต์แวร์ของฉัน และคำตอบทั้งหมดเหล่านี้ถือเป็นโอกาสในการขายที่ดี   -  person Keith Adler    schedule 09.12.2009


คำตอบ (4)


ดูบทความวิกิพีเดียเกี่ยวกับ ระยะทาง Levenshtein เป็นแนวคิดที่ค่อนข้างง่ายที่จะเข้าใจและค่อนข้างง่ายในการใช้อัลกอริทึมในภาษาใดก็ตามที่คุณใช้ ในกรณีของคุณคือ C#

ฉันพบตัวอย่างใน C# สำหรับคุณที่นี่

นอกจากนี้ ที่นี่ เป็นตัวอย่างหนึ่งของโปรแกรมแก้ไขการสะกดคำจาก Peter Norvig แห่ง Google มีการกล่าวในพอดแคสต์ SO เมื่อไม่กี่ตอนที่ผ่านมาว่า Jon Skeet พยายามเขียนอัลกอริทึมเดียวกันนี้ใหม่ใน C # ไม่แน่ใจว่าเขาทำเสร็จแล้วและ/หรือเผยแพร่ต่อสาธารณะหรือไม่

person jamesaharvey    schedule 08.12.2009
comment
สิ่งดีๆ. ฉันจะปรับใช้สิ่งนี้เพื่อใช้งานฝั่งเซิร์ฟเวอร์ SQL เป็น sproc เพื่อให้ได้ประสิทธิภาพที่ดีที่สุดเท่าที่จะเป็นไปได้ และใช้เฉพาะเมื่อไม่มีรายการที่ตรงกันเท่านั้น ขอบคุณสำหรับความเข้าใจ - person Keith Adler; 09.12.2009
comment
เพื่อเป็นการอัพเดต สิ่งนี้ได้ถูกนำไปใช้ใน C# ที่นี่ codegrunt.co.uk/2010/11/02/ - person Keith Adler; 22.03.2011

พิจารณาใช้การจับคู่คำหลักและแก้ไขความคล้ายคลึงกันตามระยะทาง อาจรวมกับ 'การค้นหาดั้งเดิม' เป็น 'คลิกจริง'

person Dr. Xray    schedule 08.12.2009

นี่อาจเป็นวิธีแก้ปัญหาที่บ้ามาก แต่คุณสามารถแบ่งชื่อธุรกิจตามช่องว่างแล้วค้นหารายการทั้งหมดหรืออาจเป็นสองสามรายการแรกก็ได้

ดังนั้นคุณอาจค้นหาด้วยคำว่า 'ABC' และ 'ธุรกิจ' แต่ไม่ต้องใส่ 'ชื่อ' เนื่องจากอาจใช้เวลานานเกินไป

คุณอาจตรวจสอบดูว่าสายอักขระนั้นมีความยาวตามที่กำหนดหรือไม่ จากนั้นจึงตัดแต่งและค้นหาจากตัวอักษร 5 ตัวแรก

คุณเคยดู "soundex" เป็นวิธีการค้นหาหรือไม่ ผ่านธุรกิจของคุณ ฉันคิดว่าคุณจะต้องแบ่งชื่อตามช่องว่าง

person griegs    schedule 08.12.2009

คุณอาจตรวจสอบ SQL Server SOUNDEX และฟังก์ชัน DIFFERENCE SOUNDEX แปลงลำดับอักขระ (เช่น คำ) ให้เป็นโค้ด 4 ตัวอักษร ซึ่งจะเหมือนกันสำหรับคำที่ฟังดูคล้ายกัน DIFFERENCE ให้ตัวเลขที่แสดงว่าสายสองสาย "ต่างกัน" นั้นมีพื้นฐานมาจากเสียงอย่างไร

ตัวอย่างเช่น คุณสามารถสร้างคอลัมน์จากการคำนวณตามฟังก์ชัน SOUNDEX และจับคู่กับคอลัมน์นั้นในภายหลังได้ หรือคุณสามารถใช้ DIFFERENCE ในส่วนคำสั่ง WHERE

person Aaron    schedule 08.12.2009
comment
คุณยังสามารถค้นหา MetaPhone ใน Google ได้ ซึ่งโดยพื้นฐานแล้วเป็น Soundex เวอร์ชันที่ซับซ้อนกว่า Soundex ถูกสร้างขึ้นจริงในปี 1918 และเป็นอัลกอริธึมพื้นฐานที่เรียบง่าย โดยทั่วไป Metaphone จะให้การจับคู่ที่ดีกว่า แต่ไม่ได้สร้างไว้ใน SQL แม้ว่าจะมีเวอร์ชัน T-SQL มากมายก็ตาม - person Sparky; 09.12.2009