Логический поиск объяснил


29

Моя мама проходит некоторые онлайн-курсы, чтобы быть своего рода библиотекарем, в этом курсе они охватывают булевы поиски, поэтому они могут эффективно выполнять поиск в базах данных, однако у нее возник вопрос, звучащий примерно так:

Поиск "x ИЛИ y" приведет к 105 000 обращений, в то время как поиск только x приведет к 80 000 обращений, а поиск только y даст 35 000 обращений. Почему поиск "x ИЛИ y" дает 105 000 обращений, тогда как объединенные отдельные поиски дают 115 000 обращений?

Для меня это звучало странно, поэтому я сам проверил это, используя слова « бекон и бутерброд» .

  • Только бекон получился 179 000 000 результатов
  • Только бутерброд получился 312 000 000 результатов
  • Бекон ИЛИ бутерброд дал 491 000 000 результатов

Но для меня это составляет: 179 000 000 (бекон) + 312 000 000 (сэндвич) = 491 000 000 (сало или сэндвич)

Почему запрос OR может привести к меньшему количеству обращений, чем оба отдельных запроса вместе взятых?


23
У вас есть синий пес, синий кот и рыжий кот. ЧИСЛО (СИНИЙ) = 2, ЧИСЛО (CAT) = 2, но НОМЕР (СИНИЙ или CAT) = 3, а не 4.
BlueRaja - Дэнни Пфлугхофт

11
Я попробовал это, получил 184 миллиона результатов для бекона. Никогда не занимался поиском бутербродов, так как я немедленно ушел, чтобы пожарить себе немного бекона.
CorsiKa

15
Я думаю, что настоящая проблема здесь в том, что в вашей базе данных нет сэндвичей с беконом.
MooseBoys

@MooseBoys да, это должно быть, почему мои цифры складываются, так как они не должны, верно?
щ

3
@klskl: Если вы получаете эти цифры из Google, имейте в виду, что эти цифры очень и очень приблизительные. Вполне может быть так, что, чтобы получить оценку для «сэндвича с беконом ИЛИ», они просто суммируют числа. Это работает только потому, что оценка не должна иметь какой-либо точности.
BlueRaja - Дэнни Пфлюгофт

Ответы:


62

Подсказка: поиск x AND y даст 10 000 просмотров.


да, но это не относится к делу, учителя утверждают, что их поиск x ИЛИ y дает меньше совпадений, чем объединение совпадений поиска по отдельности x, тогда y
sch

63
Нет, дело не в этом. Наоборот, это сама точка.
Юваль Фильмус

Я новичок в этом, хотите уточнить? Из того, что я понимаю, И даст результаты с обоими словами в них, следовательно, будет меньше результатов, чем каждое в отдельности, но какое это имеет отношение к ИЛИ?
щ

2
Когда AND пусто, OR работает как ADD, иначе это не так. @klskl информация о х и у имеет решающее значение.
Зло

@YuvalFilmus Теперь я вижу, в этом суть! (Я был как, гамбургер и бутерброд не дает 10 000 хитов ...) спасибо
sch

93

Принцип подсчета, который здесь применяется, это включение-исключение .

|ИксY|знак равно|Икс|+|Y|-|ИксY|

Чтобы числа работали, должно быть 10000.|ИксY|

Диаграмма Венна может быть более убедительной для кого-то, кого пугает нотация.

Диаграмма Венна


4
Это действительно хорошо, буду использовать это, чтобы объяснить моей маме, действительно чисто, спасибо!
щ

3
|ИксY|знак равно|Икс|+|Y|-|ИксY||ИксY||Икс||Y||Икс|+|Y|
Девсман

Математика работает, и это имеет смысл, но она не соответствует заданной алгебре прямо над ней.
Кевин Браун

Я помню, как делал диаграммы Венна, когда мне было 4-5 лет. Они действительно недооценены. Спасибо Джон Венн.
Pharap

1
@Pharap Действительно, такие диаграммы заслуживают нашего одобрения.
Мейсон Уилер

13

Документ 1: Кошка на столе
Документ 2: Моя кошка черная
Документ 3: Собака под столом
Документ 4: Как зовут вашу кошку?
Документ 5: Это черно-белая фотография

Поиск cat : возвращенных документов 1,2,4 (возвращено 3 документа)
Поиск черного : возвращенных документов ...
Поиск cat ИЛИ черного : возвращенных документов ...

:-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 поиска или только один. Просто при суммировании двух поисков некоторые документы учитываются дважды.


«поиск прекращается, как только он находит X или Y.» Разве это не зависит от реализации? Реализация может получить все результаты для X, получить все результаты для Y, а затем объединить результаты таким образом, чтобы исключить дубликаты.
jpmc26

@ArnabDatta То, что я описал, определенно не XOR. «Удаление дубликатов» означает удаление второй копии, а не всех экземпляров этого элемента.
jpmc26

Правда. Я неправильно понял. Убрал мой комментарий.
Арнаб Датта

3

Представьте, что у вас есть только один документ. Это Документ № 1 с этим:

X Y

Теперь представьте, что у вас есть функция поиска, которая может предоставить вам все документы по одному ключевому слову:

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

Обратите внимание, что количество документов в обоих случаях равно 1. Теперь, если у вас есть функция поиска, которая дает вам количество документов, которые соответствуют одному или нескольким из указанных ключевых слов:

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

Когда вы добавляете количество документов, содержащихся, Xк количеству документов, содержащихся Y, это заставляет вас считать один и тот же документ дважды. В вашем случае это случилось 10000раз, как указано выше :)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.