使数据库查询“智能”?

时间:2012-03-22 09:05:50

标签: algorithm search database

我有以下要求。

我有一个包含城市名称的列的表格。我将实施City的搜索选项。

但用户可能无法正确输入城市名称。

示例: 城市“马特勒”有时拼写为“Mathara”。 城市“努瓦拉埃利亚”有时写成“Nuwaraeliya”

我可以保持数据库列的一致性,但我想返回命中,即使最终用户使用替代词。

我需要用什么方法来有效地实现这个目标?

3 个答案:

答案 0 :(得分:2)

你应该实现像Levenshtein distance

这样的字符串距离检查

可以在此处找到更多方法:How do you implement a "Did you mean"?

答案 1 :(得分:1)

我认为使用Levenshtein Distance,PHP Similar Text或JaroWinkler Similarity可以充分解决上述问题。所有方法都为我提供了足够正确的结果。

Edit Distance Tool

enter image description here

答案 2 :(得分:0)

你想要像语音搜索这样的东西。 存在几种算法。您可以获得概述here

我们的想法是为您的表添加一个列,其中的拼音相当于您的城市, 并对此执行搜索(在为搜索的术语执行相同的功能之后)。

某些RDBMS(如Oracle)拥有预先实现的SOUNDEX功能,可以让您在没有添加列的情况下执行搜索。