0

我的一个小个人项目是在不使用任何外部资源的情况下盲目地从头开始制作搜索引擎。这主要是为了学习经验,到目前为止我还没有遇到太多麻烦,我既进退两难,也遇到了棘手的问题。

观察这个案例:

苏西想搜索“毛绒熊”。这很好,功能也很好。然而,Suzy 搞砸了并输入了“fuzzybears”。现在,我的搜索算法崩溃了,因为这被解释为单个标记,而不是多个标记。任何情况或单词组合,即使出现一次这样的运行在术语或粘合标记,都会导致较差的搜索结果。

对于范围,这是我使用 C# 和 T-SQL 组合编写的。

我尝试了多种解决方案,但没有真正来自他们。首先,我使用列表来获取术语并创建变体,但这对我来说太慢了,并且需要比我认为应该需要的更多的内存。

我想将搜索查询保存到数据库中进行统计,并可能了解更多关于有机增长算法的信息,所以也许一种在 SQL 中处理这些粘合标记的方法可能是一种解决方案,但我不知道如何从类似的东西开始除非我使用光标或其他一些缓慢的解决方案。

我可以进行搜索,将它们保存到我的数据库中,创建不同的组合,其中一些标记被粘合,然后将这些粘合标记作为要点击的术语?这个解决方案的问题是它占用了相当多的空间,而且我并不总是需要这些字符串,因为这样的拼写错误并不常见。

主要是,我需要的是速度。它并不一定要漂亮,但如果它又快又准确,那么即使它占用了大量磁盘空间,我也很高兴。

不在这里寻求解决方案,但如果有人能指出我可以去的方向,或者将不胜感激。

4

1 回答 1

1

考虑这种方法:因为空格、标点符号和任何类似的东西都会搞砸这样的搜索,删除所有这些,转换为普通大小写(我更喜欢小写,但选择你喜欢的),然后根据音节进行标记,使用与英语单词连字符的划分规则大致相同。

因此,要搜索包含“考虑这种方法:”的答案,请将短语简化为“考虑这种方法”,然后将其标记为“con”、“sid”、“er”、“this”、“ap”、“proach” . 如果 con 和 sid 和 er 并排出现,并且按照这个顺序,你就找到了“consider”这个词。

这种方法也可以适用于统计匹配,例如,如果至少 85% 的音节以正确的顺序找到,您认为它是紧密匹配,并且可能按匹配百分比对结果进行排序,因此更有意义的匹配位于顶部。

于 2016-03-22T15:40:48.237 回答