我有以下要求。
我有一个包含城市名称的列的表格。我将实施City的搜索选项。
但用户可能无法正确输入城市名称。
示例: 城市“马特勒”有时拼写为“Mathara”。 城市“努瓦拉埃利亚”有时写成“Nuwaraeliya”
我可以保持数据库列的一致性,但我想返回命中,即使最终用户使用替代词。
我需要用什么方法来有效地实现这个目标?
答案 0 :(得分:2)
你应该实现像Levenshtein distance
这样的字符串距离检查可以在此处找到更多方法:How do you implement a "Did you mean"?
答案 1 :(得分:1)
我认为使用Levenshtein Distance,PHP Similar Text或JaroWinkler Similarity可以充分解决上述问题。所有方法都为我提供了足够正确的结果。
答案 2 :(得分:0)
你想要像语音搜索这样的东西。 存在几种算法。您可以获得概述here
我们的想法是为您的表添加一个列,其中的拼音相当于您的城市, 并对此执行搜索(在为搜索的术语执行相同的功能之后)。
某些RDBMS(如Oracle)拥有预先实现的SOUNDEX功能,可以让您在没有添加列的情况下执行搜索。