0

所以,我有一个带有搜索栏的网站。

我只知道如何在匹配时获得结果(至少部分使用 Like %searchterm%)并且它有效。

显然,如果用户拼写错误,这对我没有帮助。

我们通过 HeatMapping 发现我们正在失去人们。

如何实现“更智能”的搜索功能?

谢谢,约尼

4

3 回答 3

1

您正在寻找的“真正”解决方案可能比您想象的要复杂。您可以使用更简单的解决方案,就像使用DIFFERENCE函数一样。

于 2013-10-28T18:05:05.223 回答
0

我正在尝试发表评论,但无法发表评论。所以我不得不把它留在这里,这可能不是 Yoni 所期望的理想答案。我可以想到两种方法。

  1. 使用 asp.net 自动完成功能。它将查询数据库,并在用户输入时动态地向用户反馈建议的搜索结果,这将防止用户以某种方式输入错误。许多搜索引擎经常使用它,如谷歌、雅虎。在 asp.net 中,很容易将其连接起来。

ASP.NET 自动完成

这就是自动完成的样子

  1. 添加一个类以在查询数据库之前重新处理搜索词,因此如果用户拼写错误或输入错误,您将不会得到 0 次命中。这是非常广泛的,并且根据您的商业模式概念而变化很大。

希望能帮助到你。:)

于 2013-10-28T16:51:33.237 回答
0

这是一个相当复杂的问题,会影响编码复杂性和查询性能。当然,可能有很多方法可以达到您要求的结果。

就个人而言,我会从使用别名开始:对于用户可能搜索的每个单词,我会创建一组别名,这些别名可能与单词语义值或单词本身的错误输入有关,例如:

词语: 表

别名:paper、shet、shee ...

因此,每个单词都必须被索引(这可能是一个繁琐的方面,取决于您的内容),并且对于每个 woed 可能有许多别名。

然后应用如下顺序逻辑:

1 - 标准搜索,就像你已经做过的那样

-> 如果没有匹配

2 - 别名搜索

-> 如果没有匹配

3 - 开始“玩”通配符(但这肯定会杀死你的数据库)

我知道这是一个非常通用的答案,但我认为您的问题可能没有绝对好的方法 - 性能方面。

于 2013-10-28T16:55:43.487 回答