在搜索数据库时,无法检索结果的条目,我想允许“你的意思是…”建议(如Google).
所以例如,如果有人在寻找“jquyer”
“会输出”你的意思是 jquery?“
所以例如,如果有人在寻找“jquyer”
“会输出”你的意思是 jquery?“
当然,建议的结果必须与db内的值相匹配(我正在使用MysqL).
你知道一个可以做到这一点的图书馆吗?我已经google了,但没有发现任何好的结果.
或者你有一个想法如何自己构建这个?
一个快速简单的解决方案涉及到
SOUNDEX或类似SOUNDEX的功能.
原文链接:https://www.f2er.com/php/138159.html简而言之,SOUNDEX函数最初用于处理常见的拼写错误和替代名字的拼写错误,并且这个功能封装了很多常见的拼写错误(以英文语言).由于它专注于家族姓名,原始的声音功能可能是有限制的(例如,在第三或第四个不重复的辅音字母之后的编码停止),但是很容易消耗算法.
这种类型的功能的兴趣在于它允许提前计算可以与单词相关联的单个值.这不同于字符串距离函数,例如提供相对于一对字符串的值的edit distance函数(如Levenshtein,Hamming甚至Ratcliff / Obershelp).
通过预先计算和索引字典中所有单词的SOUNDEX值,可以在运行时根据用户提供的搜索项的[运行时]计算的SOUNDEX值快速搜索字典/数据库.该Soundex搜索可以系统地完成,作为纯关键字搜索的补充,或仅在关键字搜索没有产生满意数量的记录时执行,因此提供可能是用户提供的关键字的提示(是)拼写错误.
完全不同的方法,仅适用于包含多个单词的用户查询,基于对字典/数据库运行多个查询,不包括一个(或多个)用户提供的关键字.这些替代查询的结果列表提供了不同单词的列表;这个[减少]单词列表通常足够小,可以应用基于对的距离函数来在列表中选择更接近于所称错拼拼写的单词的单词.单词频率(结果列表内)可以用于限制单词的数量(仅评估发现多于x次的单词的相似度),以及提供权重以稍微偏斜相似度测量(即有利于数据库中“数量”中的单词,即使它们的相似度测量略少).