在网站上创建“你是不是指XYZ”function的想法

我想让用户能够搜索大量的商家列表,但仍然可以找到近乎匹配的内容。

当你没有针对简单的词典单词,而是像ABC商业名称这样的复杂名称时,有没有人有关于如何最好地解决这个问题的建议?

问候。

查看有关Levenshtein距离的维基百科文章。 这是一个相当简单的概念,包括您的头脑,并且非常容易实现您使用的任何语言的算法,在您的情况下,C#。

我在这里为你找到了一个C#的例子。

此外, 这是来自Google的Peter Norvig的拼写纠正器的示例。 有人在SO播客上说过几集,Jon Skeet试图用C#重写同样的算法。 不确定他是否已完成和/或公开发布。

考虑使用关键字匹配并编辑基于距离的相似性。 可能会与’原始搜索’结合使用’实际点击’。

这可能是一个疯狂的解决方案,但你可以用空格分割商业名称,然后搜索所有项目或可能是第一对。

因此,您可以搜索“ABC”和“商家”,但忽略“名称”,因为这可能需要很长时间。

您甚至可以检查字符串是否具有一定长度,然后修剪并只搜索首先说5个字母。

你有没有看过“ soundex ”作为一种搜索你的业务的方式。 同样,我认为你需要按空格分割名称。

您可以查看SQL Server SOUNDEX和DIFFERENCE函数。 SOUNDEX将一系列字符(例如单词)转换为4字符代码,对于类似发音的单词将是相同的。 DIFFERENCE给出一个数字,表示两个字符串基于声音的“不同”。

例如,您可以基于SOUNDEX函数创建计算列,并在以后匹配该列。 或者您可以在WHERE子句中使用DIFFERENCE。