倒排索引之布尔查询模型

来源:互联网 发布:黑马java培训 编辑:程序博客网 时间:2024/05/16 03:09

布尔检索模型:接受布尔表达式查询,即通过AND、OR及NOT等逻辑操作符将词项连接起来的查询,在该模型下,每篇文档只被看成是一系列词的集合。

查询模式一:

term1  AND  term2,此模式较为简单,只需要在词典中分别查询term1 和 term2 词项,然后取两个倒排记录表的交集,标准的合并算法需要O(x+y),x,y分别是两个倒排记录表的倒排记录数目。

查询优化:指如何通过组织查询的处理过程来使处理工作量最小,考虑的一个主要因素是倒排记录表的访问顺序。当有多个词条进行与操作时,一个启发式思想是:按照词项的文档频率从小到大依次进行处理,但不保证一定最优。


查询模式二:

(term1 OR term2) AND (term3 OR term4)  AND  NOT term5,此模式为一般情况,仍然可以通过上述查询优化方式进行处理,对于OR操作的可以通过简单的文档频率相加作为运算结果大小的估计。 对于NOT操作,可采取的估计手段是:如果“非词项”为高频词,可采用 “N-文档频率”作为结果的文档频率估计,如果"非词项"为低频词,则就采用原有文档频率作为估计,但对低频词的“非词项”的合并往往放到最后处理。

提高合并的策略:如果查询中的两个词项都是常见词,还是有必要采用标准的倒排记录合并方法;当两个词项的倒排记录表相差很大的情况下,可以应用一些加速策略:(1)通过在长倒排记录表中对中间结果表中的每一个元素进行二分查找来实现合并(2)将长倒排记录表用哈希方式存储,可以在常数时间能完成对中间结果表中元素的查询。

0 0
原创粉丝点击