gpt4 book ai didi

php - 通过相关性(模糊,同义词)进行 mySQL 搜索

转载 作者:行者123 更新时间:2023-11-29 00:47:41 25 4
gpt4 key购买 nike

我正在创建一个小型语言词典应用程序,它要求用户输入一个词(使用两种语言)并显示最相关的结果(满分 10 个或更多)。我的客户希望这可以解决拼写错误,因此我使用了 Damerau-Levenshtein 距离公式。作为示例,这里是应用程序应该执行的操作的片段:

MySQL fields - Term1 -> Value1 | Term2 -> Value2
Implementation - English Term -> English Value | German Term -> German Value
----------

forge -> to forge your parent's signature | fälschen -> die unterschrift de eltern fälschen
Synonyms: fake, imitation, etc,
fake -> to fake your parent's signature | fälschen -> die unterschrift de eltern fälschen
Synonyms: forge, imitation, etc,
black out -> to black out a classroom (with blinds) | verdunkeln -> (einen klassenraum) verdunkeln

由于 fake 和 forge 相似,我希望 forge(或 foreg 等)的搜索结果返回两者。我现在有一个粗略的实现,它将搜索大型数据库的每一行,但这是一个漫长的过程,我需要一个更好的系统。

作为附加信息,我正在使用 Moby Thesaurus 查找返回的每个单词的同义词。为了减少大量同义词(因为数组中放置了将近 20 个结果),我可能会删除数据库中找不到的条目。

无论如何,我想知道是否有比我现在使用的方法更快、更有效的数据库搜索方法。我希望我已经足够清楚了,如果不清楚,请随时问我更多。

非常感谢!

最佳答案

Damerau-Levenshtein 距离是一种无法通过预先计算的索引真正优化的算法。因此,在 DBMS 上下文中,您将遇到一些使其更快的问题。 (有一些技巧可以将单个单词与按词汇组织的字典进行比较,但它们非常奇特)。

但是,如果您可以检索同义词表内容的子集,然后使用距离算法,您可能会获胜。

第一步尝试内置于 mySQL 中的 SOUNDEX(一种草率且非常廉价的相似声音匹配算法)。或者,如果那张网太广,您可以查看 Metaphone 或 Double Metaphone 算法。

然后在第二步中使用距离算法执行您已经在执行的操作。

查看此问题和几个答案。 How do I do a fuzzy match of company names in MYSQL with PHP for auto-complete?

关于php - 通过相关性(模糊,同义词)进行 mySQL 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9923640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com