布尔搜索说明


29

我的母亲正在学习一些在线课程,以便成为一名图书馆员,在此课程中,他们涵盖布尔搜索,因此他们可以有效地搜索数据库,但是,她遇到了一个听起来像这样的问题:

搜索“ x OR y”将产生105,000次点击,而仅搜索x将产生80 000次点击,仅搜索y将获得35000次点击。当组合的单个搜索给出115,000次点击时,为什么搜索“ x OR y”给出105,000次点击?

对我来说,这听起来很奇怪,所以我自己用培根三明治一词进行了测试。

  • 培根产生了1.79亿个结果
  • 三明治生产3.12亿个结果
  • 培根三明治给出了491,000,000的结果

但对我来说加起来:1.79亿(培根)+ 3.12亿(三明治)= 4.91亿(培根或三明治)

为什么OR查询的命中次数少于两个查询的总和?


22
您有一只蓝狗,一只蓝猫和一只红猫。(蓝色)编号= 2,(CAT)= 2,但NUMBER(蓝色或CAT)数= 3,而不是4
BlueRaja -丹尼Pflughoeft

11
我尝试过,培根获得了1.84亿个结果。从来没有去寻找三明治,因为我立即离开了自己炸了一些培根。
corsiKa's

15
我认为这里的真正问题是您的数据库中没有培根三明治。
MooseBoys's

@MooseBoys是的,这一定是为什么我的数字加起来的原因,因为它们不应该对吧?
sch 2016年

3
@klskl:如果您要从Google获得这些数字,请记住这些数字是非常非常粗略的估计。为了获得“培根或三明治”的估计值,它们只是将数字求和就可能是这样。这之所以可行,是因为估算值不需要具有任何准确性。
BlueRaja-Danny Pflughoeft

Answers:


62

提示:搜索x和y将产生10000次匹配。


是的,但是这很重要,老师声称他们的x或y搜索所得到的命中次数少于结合分别搜索x和y的命中率
sch

63
不,那不是重点。相反,这就是重点。
Yuval Filmus's

我对此很陌生,想详细说明吗?根据我的理解,AND会在两个单词中给出结果,因此结果要比单个单词少,但是与OR有什么关系呢?
sch 2016年

2
当AND为空时,OR的工作方式类似于ADD,否则就不行。@klskl x和y的信息至关重要。
邪恶的

我现在看到@YuvalFilmus,这就是重点!(我当时想,汉堡包和三明治的点击量不会达到1万次...)谢谢您
sch

93

此处适用的计数原理为包含-排除

|Xÿ|=|X|+|ÿ|-|Xÿ|

为了弄清楚数字,必须为10000。|Xÿ|

维恩图可能更令人信服于这种符号的人。

维恩图


4
这真的很好,会用这个来向妈妈解释,真的很干净,谢谢!
sch 2016年

3
|Xÿ|=|X|+|ÿ|-|Xÿ||Xÿ||X||ÿ||X|+|ÿ|
Devsman'5

数学计算出来,并且很有意义,但是与上面的集合代数不匹配。
凯文·布朗

我记得4-5岁时做过维恩图。他们真的被低估了。谢谢约翰·文恩。
法拉普

1
@Pharap的确,这样的图表值得我们的奉献。
梅森·惠勒

13

文件1:猫在桌子上
文件2:我的猫是黑色
文件3:狗在桌子下面
文件4:猫的名字是什么?
文档5:这是黑白照片

搜索cat:返回的文档为1,2,4(返回了3个文档)
搜索black:返回的文档为...
搜索cat或black:返回的文档为...

:-D :-D


3

简单来说:

搜索X给您n个答案。
搜索Y给您m个答案。
搜索X和Y给您p答案。

在搜索X OR Y时,搜索会在找到X或Y时立即终止。因此,如果在Y之前有一个X,则搜索X OR Y时将不计入Y。因此,您对X OR Y的搜索会给你n + m-p个答案。

请务必注意,无论您进行2次搜索还是一次搜索,结果都是相同的。只是在对这两个搜索求和时,对某些文档进行了两次计数。


“一旦找到X或Y,搜索就会中止。” 这不取决于实现吗?一个实现可以获取X的所有结果,获取Y的所有结果,然后以消除重复的方式组合结果。
jpmc26 2013年

@ArnabDatta我所描述的绝对不是XOR。“消除重复”表示消除第二个副本,而不是该元素的所有实例。
jpmc26

真正。我误解了。删除了我的评论。
Arnab Datta

3

假设您只有一个文档。这是文档#1:

X Y

现在,假设您有一个搜索功能,可以根据一个关键字为您提供所有文档:

search("X") => 1
search("Y") => 1

请注意,两种情况下的文档数均为1。现在,如果您具有一个搜索功能,可以为您提供与所提供的一个或多个关键字匹配的文档数:

search("X", "Y") => 1

将包含的文档数添加到包含的文档X数时Y,这会使您对同一文档计数两次。在您的情况下,发生的10000时间如上所述:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.