Wyjaśnienie wyszukiwania logicznego


29

Moja matka bierze udział w kursie internetowym, aby zostać bibliotekarką, w tym kursie obejmują wyszukiwania boolowskie, dzięki czemu mogą skutecznie przeszukiwać bazy danych, jednak pojawiło się pytanie brzmiące mniej więcej tak:

Wyszukiwanie „x OR y” spowoduje 105 000 trafień, podczas gdy wyszukiwanie tylko x da 80 000 trafień, a wyszukiwanie tylko y da 35 000 trafień. Dlaczego wyszukiwanie „x OR y” daje 105 000 trafień, gdy połączone pojedyncze wyszukiwania dają 115 000 trafień?

Dla mnie to brzmiało dziwnie, więc sam to przetestowałem, używając słów bekon i kanapka .

  • Tylko boczek przyniósł 179 000 000 wyników
  • Tylko kanapki przyniosły 312 000 000 wyników
  • kanapka z boczkiem LUB dała 491 000 000 wyników

Ale dla mnie sumuje się: 179 000 000 (boczek) + 312 000 000 (kanapka) = 491 000 000 (boczek LUB kanapka)

Dlaczego zapytanie OR może skutkować mniejszą liczbą trafień niż oba pojedyncze zapytania łącznie?


22
Masz niebieskiego psa, niebieskiego kota i czerwonego kota. LICZBA (NIEBIESKA) = 2, LICZBA (KOT) = 2, ale LICZBA (NIEBIESKA lub KOT) = 3, a nie 4.
BlueRaja - Danny Pflughoeft

11
Próbowałem tego, uzyskałem 184 miliony wyników dla boczku. Nigdy nie udawało mi się szukać kanapek, ponieważ natychmiast wyszedłem usmażyć sobie bekon.
corsiKa

15
Myślę, że prawdziwym problemem jest to, że w twojej bazie danych nie ma kanapek z boczkiem.
MooseBoys

@MooseBoys tak, to musi być powód, dla którego moje liczby się sumują, ponieważ nie powinny, prawda?
sch

3
@klskl: Jeśli otrzymujesz te liczby z Google, pamiętaj, że te liczby są bardzo, bardzo przybliżone. Równie dobrze może być tak, że aby uzyskać oszacowanie dla „boczku LUB kanapki”, po prostu sumują liczby. Działa to tylko dlatego, że oszacowanie nie wymaga żadnej dokładności.
BlueRaja - Danny Pflughoeft

Odpowiedzi:


62

Wskazówka: Wyszukiwanie x AND y da 10 000 trafień.


Tak, ale to mija się z celem, nauczyciele twierdzą ich X lub Y wyszukiwarka daje mniej trafień niż łączenie ciosy indywidualnie poszukujących x to y
sch

63
Nie, nie o to chodzi. Wręcz przeciwnie, jest to sedno sprawy.
Yuval Filmus

Jestem w tym nowy, chcesz to rozwinąć? Z tego, co rozumiem, ORAZ da wyniki z obydwoma słowami, stąd mniej wyników niż z każdym z osobna, ale co to ma wspólnego z OR?
sch

2
Gdy AND jest pusty LUB działa jak DODAJ, w przeciwnym razie nie. @klskl informacja x AND y jest kluczowa.
Zły

@YuvalFilmus Widzę teraz, o to chodzi! (Byłem jak, hamburger ORAZ kanapka nie daje 10 000 hitów ...) dziękuję
sch

93

Obowiązująca tutaj zasada liczenia to wykluczenie włączenia .

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

|XY|

Diagram Venna może być bardziej przekonujący dla kogoś, kto może być zastraszony przez notację.

Schemat Venna


4
To jest naprawdę dobre, wykorzystam to, aby wyjaśnić mojej matce, naprawdę czyste, dzięki!
sch

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

Matematyka się sprawdza i ma sens, ale nie pasuje do ustawionej powyżej algebry.
Kevin Brown

Pamiętam, jak robiłem diagramy Venna, kiedy miałem 4-5 lat. Są naprawdę niedoceniani. Dziękuję John Venn.
Pharap,

1
@Pharap Rzeczywiście, takie diagramy zasługują na naszą Venn-eration.
Mason Wheeler,

13

Dokument 1: Kot jest na stole
Dokument 2: Mój kot jest czarny
Dokument 3: Pies jest pod stołem
Dokument 4: Jak nazywa się twój kot?
Dokument 5: To jest czarno-białe zdjęcie

Wyszukaj kota : zwrócone dokumenty to 1,2,4 (3 zwrócone dokumenty)
Wyszukaj czarne : zwrócone dokumenty są ...
Wyszukaj kota LUB czarne : zwrócone dokumenty są ...

:-D :-D


3

W prostych słowach:

Szukaj X daje n odpowiedzi.
Szukaj Y daje m odpowiedzi.
Szukaj X AND Y daje p odpowiedzi.

Szukając X LUB Y, wyszukiwanie przerywa się, gdy tylko znajdzie X lub Y. Więc jeśli X znajduje się przed Y, to Y nie będzie liczone podczas wyszukiwania X LUB Y. Dlatego twoje wyszukiwanie X LUB Y da ci n + m - p odpowiedzi.

Ważne jest, aby pamiętać, że wyniki będą takie same, niezależnie od tego, czy wykonasz 2 wyszukiwania, czy tylko jedno. Po prostu podsumowując dwa wyszukiwania, niektóre dokumenty są liczone dwukrotnie.


„wyszukiwanie przerywa się, gdy tylko znajdzie X lub Y”. Czy to nie zależy od implementacji? Implementacja może uzyskać wszystkie wyniki dla X, uzyskać wszystkie wyniki dla Y, a następnie połączyć wyniki w sposób, który eliminuje duplikaty.
jpmc26

@ArnabDatta To, co opisałem, zdecydowanie nie jest XOR. „Eliminowanie duplikatów” oznacza eliminowanie drugiej kopii, a nie wszystkich instancji tego elementu.
jpmc26

Prawdziwe. Źle zrozumiałem. Usunąłem mój komentarz.
Arnab Datta

3

Wyobraź sobie, że masz tylko jeden dokument. To jest Dokument nr 1 z tym:

X Y

Teraz wyobraź sobie, że masz funkcję wyszukiwania, która może dostarczyć wszystkie dokumenty na podstawie jednego słowa kluczowego:

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

Zauważ, że liczba dokumentów w obu przypadkach wynosi 1. Teraz, jeśli masz funkcję wyszukiwania, która podaje liczbę dokumentów, które pasują do jednego lub więcej podanych słów kluczowych:

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

Gdy dodasz liczbę dokumentów zawierających Xdo liczby dokumentów zawierających Y, spowoduje to policzenie tego samego dokumentu dwukrotnie. W twoim przypadku tak się stało, 10000jak wskazano powyżej :)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.