建议对古式拼写进行其他查询(例如 Google 的 Did You Mean)

2024-04-04

我的客户有一个包含 400 年历史的房地产记录数据库。他们有兴趣根据他们的数据向用户提供替代拼写建议。

我假设在这样的情况下,它会变成一个包含“Martin”行以及“Martyn”和“Martine”等建议的表。

有谁知道可以索引其数据的第三方解决方案?

EDIT

根据 magicmike 的回答SOUNDEX()摇滚这个!

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

谷歌的“你是说吗”很有趣:谷歌“你是说吗?”是如何表达的?算法工作? https://stackoverflow.com/questions/307291/how-does-the-google-did-you-mean-algorithm-work

过去,我曾设法实现类似的东西SOUNDEX http://www.madirish.net/?article=85它可以近似该功能。

Martin、Martyn 和 Martine 产生相同的输出SOUNDEX.

您可以包括以下所有结果SOUNDEX匹配,或选择他们要求的结果,然后select distinct name from table where SOUNDEX(name) = SOUNDEX(search_var)作为您的“建议”。

作为一种优化,您可以在搜索字段上预先计算 SOUNDEX 并将其保留为索引列以避免表扫描。

它不像 Google 的“Did You Mean”那么复杂,但您可以很快地相当接近。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

建议对古式拼写进行其他查询(例如 Google 的 Did You Mean) 的相关文章

随机推荐