使用倒排索引对搜索结果进行排名的有效方法

时间:2011-10-09 12:23:48

标签: performance algorithm search-engine

我的倒排索引是这样的:

  

token_word |文档ID,位置;文档ID,位置;文档ID,位置;

在算法中,为了在查询短语时排名,我打开每个单词的桶数据,然后查找连续位置匹配,排名更高,只是一个简单的相关性排名。 问题是,我需要检查算法中的所有结果,以便按“排名得分”排序,即使我每页只显示10个。

任何人都知道解决这个问题的方法吗?也许我需要在索引本身中对docid进行排名?

1 个答案:

答案 0 :(得分:4)

除了token_word | docid,position;docid,position;docid,position;方法外,我建议您添加token_word | docid,frequency;docid,frequency;docid,frequency;条记录。

这样,您只需在响应查询时考虑一次文档。这可能会增加预处理,但会在用户查询时减少无用的开销。

您可能在处理多个单词查询时遇到问题(即几乎所有查询),因此对{em>某些结果采用docid,position方法,领带。

如果我在你的位置,我会怎么做:由于你每页显示10个结果,我会根据频率索引所有文档,然后根据位置仅为第一页索引前10个。如果用户移动到第二页,则对第二页执行相同的操作。


这种方法的一个缺陷是,有时页面 n + 1 上的前几个结果可能会比 n 页面上的最后几个结果更好。