ブール検索の説明


29

母は、ある種の司書になるためにオンラインコースを受講しています。このコースでは、ブール検索を扱っているため、データベースを効率的に検索できますが、次のような質問がありました。

「x OR y」を検索すると、105 000ヒットになりますが、xのみを検索すると80 000ヒットになり、yのみを検索すると35 000ヒットになります。個々の検索を組み合わせて115 000ヒットするのに、なぜ検索 "x OR y"は105 000ヒットするのですか?

私にとってこれは奇妙に聞こえたので、baconsandwichという言葉を使って自分でテストしました。

  • ベーコンのみが179 000 000の結果をもたらしました
  • 312 000 000の結果が得られたのはサンドイッチのみ
  • ベーコンORサンドイッチの結果は491 000 000でした

しかし、私にとっては、合計:179 000 000(ベーコン)+ 312 000 000(サンドイッチ)= 491 000 000(ベーコンまたはサンドイッチ)

ORクエリの結果、個々のクエリを両方組み合わせた場合よりもヒットが少ないのはなぜですか


22
青い犬、青い猫、赤い猫がいます。(BLUE)の数= 2、(CAT)の数= 2が、(BLUE又はCAT)の数= 3、ではない4
BlueRaja -ダニーPflughoeft

11
これを試してみましたが、ベーコンで1億8400万件の結果が得られました。私はすぐにベーコンを炒めるために去ったので、サンドイッチを探すことに決してしなかった。
corsiKa

15
ここでの本当の問題は、データベースにベーコンサンドイッチが含まれていないことだと思います。
MooseBoys

@MooseBoysええ、これが私の数字が足し合わない理由です。
sch

3
@klskl:Googleからこれらの数値を取得している場合、これらの数値は非常大まかな見積もりであることに注意してください。「ベーコンORサンドイッチ」の推定値を取得するために、単に数値を合計するだけの場合があります。これは、見積もりがいかなる種類の正確さも必要としないためにのみ機能します。
BlueRaja-ダニーPflughoeft

回答:


62

ヒント:xとyを検索すると、10000ヒットになります。


はい、しかし、ポイントの横にあるのは、教師が自分のxを主張またはy検索は、個別に検索するのxのyのヒットを組み合わせるよりも少ないヒットを与えること
SCHを

63
いいえ、それは重要なことではありません。それどころか、それ自体がポイントです。
ユヴァルフィルマス

私はこれに慣れていないのですが、細心の注意が必要ですか?私が理解していることから、両方の単語を含む結果が得られるため、個々の単語よりも結果が少なくなりますが、ORとはどう関係しますか?
-sch

2
ANDが空の場合、ORはADDのように機能しますが、それ以外の場合は機能しません。@klskl xおよびyの情報は重要です。

@YuvalFilmus今見ている、それがポイントです!(私は、ハンバーガーとサンドイッチが1万ヒットを与えないようでした...)ありがとう
-sch

93

ここで適用されるカウントの原則は、包含と除外です。

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

数字をするには、10000でなければなりません。|XY|

ベン図は、表記法に脅かされる可能性のある人にとってより説得力があるかもしれません。

ベン図


4
これは本当に良いです、これを使って母に説明します、本当にきれいです、ありがとう!
-sch

3
図を少し拡大して、理由を指摘しますなぜなら、は両方の一部です および既に、したがってを追加するとき 、2回カウントしました。次に、1回だけカウントされるように減算します。| X Y | | X | | Y | | X | + | Y ||XY|=|X|+|Y||XY||XY||X||Y||X|+|Y|
デブスマン

数学はうまくいき、理にかなっていますが、そのすぐ上の集合代数とは一致しません。
ケビンブラウン

4〜5歳のときにベン図をやったことを覚えています。彼らは本当に過小評価されています。ジョン・ベンありがとう。
ファラプ

1
@Pharap確かに、このような図は私たちのVenn-erationに値します。
メイソンウィーラー

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がある場合、そのYはX OR Yの検索でカウントされません。したがって、X OR Yの検索n + m-p個の回答が得られます。

検索を2回行っても1回だけ行っても、結果は同じになることに注意してください。2つの検索を合計すると、一部のドキュメントが2回カウントされるだけです。


「XまたはYが見つかるとすぐに検索が中断されます。」これは実装に依存していませんか?実装では、Xのすべての結果を取得し、Yのすべての結果を取得してから、重複を排除する方法で結果を結合できます。
jpmc26

@ArnabDatta私が説明したのは、間違いなくXORではありません。「重複の排除」とは、その要素のすべてのインスタンスではなく、2番目のコピーを排除することを意味します。
jpmc26

本当です。私は誤解しました。コメントを削除しました。
アーナブダッタ

3

ドキュメントが1つしかないことを想像してください。これはこれを備えたドキュメント#1です。

X Y

ここで、1つのキーワードに基づいてすべてのドキュメントを提供できる検索機能があるとします。

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

どちらの場合もドキュメントの数は1であることに注意してください。指定された1つ以上のキーワードに一致するドキュメントの数を提供する検索機能がある場合:

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

あなたが含む文書の数を追加する場合X含む文書の数にはY、これはあなたが二度同じ文書を数えるようになります。あなたの場合、これは10000上で指摘したように起こりました:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.