基于先前使用的搜索结果排序算法

时间:2009-12-16 01:59:06

标签: algorithm search full-text-search

首先,不是我不问,请告诉我Google是如何用两句话构建的。我要问的是略有不同。我有一个数据库,里面填充了用户输入的文本数据。我们还为他们提供了以后搜索此数据的功能。问题是,我们现在进行简单的全文搜索并以任何顺序返回结果。我想根据重量,用户输入频率的重量来返回结果。用户可以输入以下内容的示例:

“foo” 的 “博” “鲍勃” “鲍勃” “鲍勃” “博” “foo2的”

根据以上数据,对'b'的搜索应返回bo和bob,但应首先列出bob。根据用途,它是最相关的。

好奇,我应该研究哪种算法来有效地构建它?任何基于常见网络算法的书籍(我知道这不仅仅是网络特定的)会解释这个吗?

3 个答案:

答案 0 :(得分:0)

那里有各种搜索算法。

这里有一些指南: http://en.wikipedia.org/wiki/Search_algorithm

我自己并不是这方面的专家,所以我不能推荐一个具体的专家。

答案 1 :(得分:0)

我不知道你是如何在数据库环境中做到的,但这是一种方法:

使用trie存储每个唯一字词以及使用频率的计数。当您的用户开始输入时,trie允许您有效地获取具有给定前缀的所有字符串,然后您可以使用“计数为键”字样进行排序。

答案 2 :(得分:0)

我们使用apache solr进行搜索。 在这项技术中,我认为,这通常是通过提升来完成的。因此,索引您的数据,每天左右,然后根据用户查询提升单个文档。