부울 검색 설명


29

어머니는 일종의 사서가되기 위해 온라인 과정을 밟고 있습니다.이 과정에서 부울 검색을 다루므로 데이터베이스를 효율적으로 검색 할 수 있지만 다음과 같은 소리가납니다.

"x OR y"를 검색하면 105 000 개의 적중이 발생하지만 x 만 검색하면 80 000 개의 적중이 발생하고 y 만 검색하면 35,000 개의 적중이 발생합니다. 결합 된 개별 검색이 115 000 개의 조회를 제공 할 때 검색 "x OR y"가 105 000 개의 조회를 제공하는 이유는 무엇입니까?

나에게 이것은 이상하게 들렸으므로 베이컨샌드위치 라는 단어를 사용하여 직접 테스트했습니다 .

  • 베이컨 만이 1 억 7 천만 개의 결과를 산출했습니다
  • 샌드위치 굴복 312 개 000 000 결과를
  • 베이컨 OR 샌드위치491 000 000 결과를 주었다

그러나 나를 위해 합산하면 : 179 000 000 (베이컨) + 3 억 3, 000 000 (샌드위치) = 491 000 000 (베이컨 OR 샌드위치)

OR 쿼리로 인해 두 개별 쿼리를 합친 것보다 적중 횟수가 더 적은 이유는 무엇입니까?


22
파란 개, 파란 고양이, 빨간 고양이가 있습니다. NUMBER OF (BLUE) = 2, NUMBER OF (CAT) = 2, NUMBER OF (BLUE 또는 CAT) = 3, 4가 아님
BlueRaja-Danny Pflughoeft

11
나는 이것을 시도했는데 베이컨에 대한 1 억 8,700 만 개의 결과를 얻었다. 내가 베이컨을 튀기기 위해 즉시 떠났기 때문에 샌드위치를 ​​찾지 못했습니다.
corsiKa

15
실제 문제는 데이터베이스에 베이컨 샌드위치가 없다는 것입니다.
MooseBoys

@MooseBoys 예, 이것이 내 숫자가 합산되는 이유 여야합니다.
sch

3
@klskl : 당신이 구글에서 해당 번호를 받고있는 경우, 명심 그 숫자는 매우이다 매우 거친 추정. "베이컨 OR 샌드위치"에 대한 추정치를 얻기 위해 숫자를 합한 것만으로도 아주 잘 될 수 있습니다. 추정치는 어떤 종류의 정확도도 요구하지 않기 때문에 작동합니다.
BlueRaja-대니 Pflughoeft

답변:


62

힌트 : 검색 x AND y는 10 000 개의 적중을 초래합니다.


그렇습니다. 그러나 교사는 x OR y 검색이 개별적으로 검색 한 x와 y의 적중을 합친 것보다 적음 수가 적다고 주장합니다.
sch

63
아니, 요점은 아닙니다. 반대로 요점 자체입니다.
Yuval Filmus

나는 이것에 익숙하지 않다. 내가 이해하고 AND에서 두 단어로 결과를 제공하므로 각각 개별적으로보다 결과가 적지 만 OR과 관련이 있습니까?
sch

2
AND가 비어 있거나 ADD처럼 작동하면 그렇지 않습니다. @klskl은 x와 y의 정보가 중요합니다.
Evil

@YuvalFilmus 내가 지금 본 것은 요점입니다! (나는 햄버거와 샌드위치가 10,000 명중을주지 않았다 ...) 감사합니다
sch

93

여기에 적용되는 계산 원리는 포함 제외 입니다.

|XY|=|X|+|Y||XY|

|XY|

벤 다이어그램은 표기법에 의해 협박을받을 수있는 사람에게 더 설득력이있을 수 있습니다.

벤 다이어그램


4
이것은 정말 좋습니다. 어머니에게 정말 깨끗하고 감사합니다.
sch

3
|XY|=|X|+|Y||XY||XY||X||Y||X|+|Y|
Devsman

수학은 효과가 있지만 의미가 있지만 바로 위에 설정된 대수와 일치하지 않습니다.
Kevin Brown

4-5 세 때 벤 다이어그램을했던 것을 기억합니다. 실제로 과소 평가되었습니다. 존 벤 감사합니다.
Pharap

1
@Pharap 실제로, 그러한 다이어그램은 우리의 Venn-eration을받을 가치가 있습니다.
메이슨 휠러

13

문서 1 : 고양이가 책상 위에 있습니다.
문서 2 : 고양이가 검은 색입니다.
문서 3 : 개가 책상 아래에 있습니다.
문서 4 : 고양이 이름이 무엇입니까?
문서 5 : 이것은 흑백 사진입니다

고양이 검색 : 반환 된 문서는 1,2,4 (3 개 문서 반환) 검정
검색 : 반환 된 문서는 ... 고양이 검색 또는 검은 색 : 반환 된 문서는 ...

:-D :-D


3

간단히 말해서 :

X를 검색하면 n 개의 답변이 제공됩니다.
Y를 검색하면 답을 얻을 수 있습니다.
X와 Y를 검색하면 p 답변이 제공됩니다.

X OR Y를 검색 할 때 X 또는 Y를 찾 자마자 검색이 중단됩니다. 따라서 Y 앞에 X가 있으면 X 또는 Y를 검색 할 때 해당 Y가 계산되지 않습니다. 따라서 X OR Y를 검색하면 당신에게 n + m-p 답변을 줄 것입니다.

두 번의 검색을 수행하든 한 번만 수행하든 결과는 동일하다는 점에 유의해야합니다. 두 검색을 합산 할 때 일부 문서는 두 번 계산됩니다.


"X 나 Y를 찾 자마자 검색이 중단됩니다." 이것이 구현에 달려 있지 않습니까? 구현은 X에 대한 모든 결과를 얻고 Y에 대한 모든 결과를 얻은 다음 중복을 제거하는 방식으로 결과를 결합 할 수 있습니다.
jpmc26

@ArnabDatta 내가 설명한 것은 XOR이 아닙니다. "중복 제거"는 해당 요소의 모든 인스턴스가 아니라 두 번째 사본을 제거함을 의미합니다.
jpmc26

참된. 나는 오해했다. 내 댓글을 삭제했습니다.
Arnab Datta

3

하나의 문서 만 있다고 상상해보십시오. 이것은 다음과 같은 문서 # 1입니다.

X Y

이제 하나의 키워드를 기반으로 모든 문서를 제공 할 수있는 검색 기능이 있다고 가정하십시오.

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

두 경우 모두 문서 수는 1입니다. 이제 제공된 키워드 중 하나 이상과 일치하는 문서 수를 제공하는 검색 기능이있는 경우 :

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

를 포함 X하는 문서 수에 포함 된 문서 수를 추가 Y하면 동일한 문서를 두 번 계산합니다. 귀하의 경우, 10000위에서 지적한 시간 이 발생 했습니다. :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.