SQL模糊搜索和类似Google的改进

时间:2012-06-26 22:29:19

标签: sql tsql freetext

有趣的挑战;我的客户在SQL数据库中输入一些产品信息。该产品是一幅名为 Rachmaninoff 的着名古老俄罗斯作曲家的画作。所以该名称在描述字段中。现在,只有少数搜索产品的客户知道如何拼写这个名字,但大部分时间都拼写错误。除了拼写错误之外,还有很多国际客户只是将这个名字写成完全不同的名称,如 Rachmaninow Rahmaninov Рахманінаў

如果我在谷歌中放入任何这些拼写错误或翻译,它(几乎)总是知道如何纠正它并将我直接重定向到正确的页面。

有谁知道我在产品搜索中获得一些魔力的可能性是什么?我可以使用一些API吗?一些我不知道的超级自由文本选项?或者......

1 个答案:

答案 0 :(得分:2)

我们解决了类似的问题并取得了相当大的成功:通过电话号码搜索人名(德语名称)。

例如:非常普通的德国姓氏“Schmidt”,“Schmitt”,“Schmied”,“Schmid”,“Schmit”和“Schmiedt”在用声音给出时几乎不可能分开。将其与名字“Sylvia”或“Silvia”或“Sylvya”结合使用,并打电话说“嗨,我是Sylvia Schmidt,我忘记了我的客户编号”,没有机会被迅速找到。

我们的解决方案是列出一个同义词列表,例如: (伪代码,德语):

{consonant}+ := {consonant}
ie := i
ii := i
dt* := t
y|j := i
{vocal}v := {vocal}f
等等,你得到漂移。现在我们使用原始字符串存储了同音字段翻译的字符串,以便进行搜索。这非常有效。

我知道MySQL具有英文字符串的Soundex()功能。我希望MSSQL能有类似的东西。

相关问题