通过字符串相似性将搜索结果分组的最有效方法

Gid*_*don 5 algorithm search grouping fuzzy-search e-commerce

我正在研究sql server 2008 DB和asp.net mvc web电子商务应用程序.

我有不同的用户将他们的产品提供给数据库,我想比较具有相似名称的产品的价格.我知道字符串匹配是特定于域的,但我仍然需要最好的通用解决方案.

对搜索结果进行分组的最有效方法是什么?我应该使用Levenshtien Distance算法递归地比较每个记录吗?我应该在数据库中还是在代码中执行此操作?有没有办法为此任务实时实施SSIS模糊分组?有没有一种有效的方法来使用Sql server 2008自由文本搜索?

编辑1:网络图分析怎么样?如果我使用Levenshtien Distance算法定义矩阵,我可以使用聚类算法(例如:clauset newman moore)和单独的组,它们之间没有语音路径.我附上了尼克约翰逊(见评论)猫狗(例如红线是簇) - 并且通过使用clauset newman moore,我正在创建2个不同的簇并从狗中分离猫.

你怎么看?

在此输入图像描述

DRV*_*Vic 0

如果你能找到一个合适的同义词库/本体,它基本上可以提供最好的聚类——因为单词是概念树中的叶子,树中的距离就是语义意义上单词之间的距离。因此,猫和狗并不像虎斑猫和印花布(猫)那样接近,但它们比猫和香蕉更接近,而猫和香蕉本身又比猫(n.)和跳跃(v.)更接近。

允许小的拼写错误(通过在同义词库中查找拼写相似的单词来查找不存在的单词)可以提高稳健性,但也可能由于同音异义词而产生意想不到的结果。

至于在数据库中做还是在代码中做,就用代码做吧。只要您可以缓存,速度就会更快。