我的客户有一个400年的房地产记录数据库。他们有兴趣根据自己的数据向用户提出其他拼写建议。
我假设在这样的情况下,它会下降到一个表,其中有一行“Martin”和建议“Martyn”和“Martine”等。
有没有人知道第三方解决方案可以索引他们的数据?
编辑
根据magicmike的回答,这真是太棒了!

SELECT `Last` FROM `Names`
WHERE SOUNDEX(`Last`) RLIKE SOUNDEX ('Martin')
GROUP BY `Last`

生成一个很好的小列表:
Martens
Martenstein
Martin
Martina
Martindale
Martine
Martineau
Martines
Martinet
Martinez
Martini
Martino
Martinstein
Mertens
Miradona
Moret and Marchand
Mortimer
Morton

最佳答案

谷歌的“你的意思是”非常有趣:How does the Google "Did you mean?" Algorithm work?
在过去,我已经成功地实现了类似于“AA>”的类似功能。
Martin、Martyn和Martine的SOUNDEX输出相同。
您可以包含SOUNDEX匹配的所有结果,或者选择他们要求的结果,然后select distinct name from table where SOUNDEX(name) = SOUNDEX(search_var)作为您的“建议”。
作为优化,可以对搜索字段预先计算SOUNDEX,并将其作为索引列持久化,以避免表扫描。
它不像你说的谷歌那么复杂,但是你可以很快接近它。

关于mysql - 建议其他查询古式拼字(例如Google的“您是不是要”),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7099816/

10-10 14:22