查询优化 - 联合查询的布尔检索

时间:2016-02-10 10:34:08

标签: query-optimization theory boolean-logic boolean-operations

我正在参加信息检索课程,我们已经开始使用"布尔检索"。

我遇到了以下问题(取自Stanford book信息检索):

  

对于联合查询,按大小顺序处理过帐列表   保证最佳?解释原因/为什么不。

给出的解释如下:

  

订单不保证是最佳的。考虑三个术语   发布列表大小s1 = 100,s2 = 105,s3 = 110。假设   s1和s2的交点长度为100且为s1的交点   排序s1,s2,s3需要100 + 105 + 100 + 110 = 315   逐步完成帖子列表。排序s1,s3,s2需要   100 + 110 + 0 + 0 = 210个步骤通过帖子列表。

有人可以解释一下吗?

例如:In" 100 +105+ 100 + 110&#34 ;; 100代表什么?是s1的大小还是s1和s2的交点? (105和110相当明显)。

1 个答案:

答案 0 :(得分:0)

根据问题,您应该以升序(带尺寸)处理过帐列表。考虑 s1 = 100, s2 = 105, s3 = 110。所以你应该首先处理 s1 s2 。让我们说你得到 r1 = s1 AND s2 ,然后您应该处理 r1 s3 。   enter image description here

根据算法,您可以估算消耗量。

由于 s1 AND s2 = r1 r1 有100长度消耗是:O(s1 + s2)= 100 + 105 = 205,然后用 s3 处理 r1 ,消耗为O(r1 + s3)= 100 + 110 = 210,因此整体消耗为205 + 210 = 415.

但我们已经知道 s1 AND s3 = 0,所以我们应该处理 s1 s3 首先消费O(s1 + s3)= 100 + 110 = 210,让我们称之为 r2 。最后处理 r2 s2 ,O(r2 + s2)= 0(因为 r2 的长度为0)。因此整个消耗量为210 + 0 = 210,小于415.

关键的想法是我们不知道中间结果(这里代表 r1 r2 )。所以处理按大小排列的过帐列表可能无法保证最佳。