我正在参加信息检索课程,我们已经开始使用"布尔检索"。
我遇到了以下问题(取自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相当明显)。
答案 0 :(得分:0)
根据问题,您应该以升序(带尺寸)处理过帐列表。考虑 s1 = 100, s2 = 105, s3 = 110。所以你应该首先处理 s1 和 s2 。让我们说你得到 r1 = s1 AND s2 ,然后您应该处理 r1 和 s3 。
根据算法,您可以估算消耗量。
由于 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 )。所以处理按大小排列的过帐列表可能无法保证最佳。