Перейти к содержанию
Educora
Продвинутый11 класс22 мин41 / 59

Поиск в интернете: поисковые системы и запросы

Как поисковая система работает с индексом, как строить запросы с AND, OR, NOT и как с помощью кругов Эйлера — Венна находить число страниц, найденных по запросу.

Проверь себя
В этом уроке ты узнаешь
  • объяснять, как работает поисковая система: робот, индекс и ранжирование
  • составлять запросы с AND, OR, NOT, скобками и кавычками и упорядочивать запросы по числу найденных страниц
  • строить круги Эйлера — Венна для двух и трёх ключевых слов и применять формулу включений и исключений
  • пошагово решать кодируемые задания DİM о поисковых запросах

Айсель готовит проект о каспийских тюленях. По запросу «Каспий» поисковая система находит миллионы страниц — прочитать их все невозможно. По запросу «каспийский тюлень» результатов намного меньше, а если добавить слово «охрана», их станет ещё меньше. Правильно составленный запрос находит нужное за минуты, а не за часы. Эту тему проверяет и вступительный экзамен DİM: в трёх из четырёх экзаменов 2025–2026 годов было кодируемое задание — в таблице даны запросы и число найденных страниц, а нужно найти результат другого запроса.

Как работает поисковая система

Определение
Поисковая система (поисковый сервер)

Служба, которая по введённым пользователем ключевым словам находит подходящие веб-страницы и показывает их списком. Примеры: Google, Bing, Yandex.

В момент запроса поисковая система не обходит весь интернет — это заняло бы часы и даже дни. Она ищет в заранее подготовленном индексе. Работа идёт так:

  1. 1
    Поисковый робот обходит страницы

    Специальная программа — поисковый робот («паук», краулер) — переходит со страницы на страницу по ссылкам и загружает текст каждой страницы.

  2. 2
    Индексирование

    Для каждого слова составляется список страниц, на которых оно встречается. Это похоже на алфавитный указатель в конце книги: «Низами — с. 12, 48, 95».

  3. 3
    Обработка запроса

    Ключевые слова запроса ищутся в индексе, а их списки страниц пересекаются или объединяются в соответствии с логическими операциями.

  4. 4
    Ранжирование

    Найденные страницы упорядочиваются по соответствию запросу: есть ли слово в заголовке, сколько сайтов ссылается на страницу и т. д. На странице результатов показано и примерное число, например «около 120 000 результатов».

Итак, каждое ключевое слово задаёт множество страниц — все страницы, где встречается это слово. А логические операции в запросе — это операции над такими множествами. На этой простой идее построена вся остальная часть урока.

Язык запросов: AND, OR, NOT

Ключевые слова можно соединять логическими операциями. В заданиях DİM они пишутся по-английски — AND, OR, NOT; в некоторых книгах вместо них используют знаки &, | и ~. Эти операции вы знаете по уроку «Логические операции и логические элементы»: теперь они применяются не к высказываниям, а к множествам страниц.

ОперацияЗаписьКакие страницы найдутсяЧисло страниц
И (пересечение)A AND B, A & Bстраницы, где есть оба словауменьшается
ИЛИ (объединение)A OR B, A | Bстраницы, где есть хотя бы одно из словувеличивается
НЕ (отрицание)A AND NOT B, A & ~Bстраницы, где есть A, но нет Bуменьшается
Кавычки"A B"страницы, где слова стоят рядом именно в таком порядкеуменьшается

Если скобок нет, сначала выполняется NOT, затем AND и последним OR. Например, запрос A OR B AND C означает A OR (B AND C). Если нужен другой порядок, ставят скобки: (A OR B) AND C. У настоящих поисковых систем есть и свои правила: например, в Google слова через пробел соединяются как AND, OR пишется заглавными буквами, минус перед словом (-реклама) исключает его, а кавычки ищут точную фразу.

Упорядочивание запросов

Поисковому серверу заданы четыре запроса:
1) шахматы OR шашки
2) шахматы AND шашки AND турнир
3) шахматы
4) шахматы AND турнир
Расположите номера запросов в порядке возрастания числа найденных страниц.

Показать решение
Представим каждый запрос как множество страниц.
На каждой странице запроса 2 есть все три слова, значит, есть и «шахматы», и «турнир»: эти страницы входят в результат запроса 4.
На каждой странице запроса 4 есть «шахматы»: это часть запроса 3.
Каждая страница со словом «шахматы» входит и в запрос 1, а запрос 1 добавляет ещё страницы со словом «шашки».
Значит, 2 ⊆ 4 ⊆ 3 ⊆ 1.
Ответ: 2, 4, 3, 1.

Круги Эйлера — Венна: два ключевых слова

Изобразим страницы, найденные по каждому ключевому слову, кругом. Общая часть кругов — страницы, где есть оба слова (AND), вся площадь, занятая двумя кругами, — результат OR, а часть круга вне другого круга получается с помощью NOT. Такой рисунок называется кругами Эйлера — Венна.

ABA ANDNOT BA ANDBB ANDNOT AA OR B
Два ключевых слова делят диаграмму на три части.

Если сложить n(A) и n(B), чтобы сосчитать страницы запроса A OR B, общая часть будет учтена дважды: она лежит и в круге A, и в круге B. Поэтому её вычитают один раз:

n(A OR B) = n(A) + n(B) − n(A AND B)
где:
  • n(A), n(B)число страниц, найденных по запросам A и B
  • n(A AND B)число страниц, где есть оба слова
  • n(A OR B)число страниц, где есть хотя бы одно из слов

Формула включений и исключений для двух множеств. Если известны три величины из четырёх, находится и четвёртая.

n(A AND NOT B) = n(A) − n(A AND B)
где:
  • n(A AND NOT B)число страниц, где есть A, но нет B

Из круга A вычитается общая часть, а не весь B!

Два ключевых слова

В таблице даны запросы и число найденных страниц:
футбол — 520
волейбол — 380
футбол OR волейбол — 760
Сколько страниц будет найдено по запросам а) футбол AND волейбол, б) футбол AND NOT волейбол, в) волейбол AND NOT футбол?

Показать решение
а) n(футбол AND волейбол) = 520 + 380 − 760 = 140.
б) n(футбол AND NOT волейбол) = 520 − 140 = 380.
в) n(волейбол AND NOT футбол) = 380 − 140 = 240.
Проверка: сумма трёх частей 380 + 140 + 240 = 760 = n(футбол OR волейбол). ✓
Неизвестное из формулы

1) n(A) = 250, n(B) = 400, n(A AND B) = 90. n(A OR B) = ?
2) n(A OR B) = 900, n(A) = 600, n(A AND B) = 150. n(B) = ?
3) n(A) = 330, n(B) = 270, n(A OR B) = 600. n(A AND B) = ? Что это означает?

Показать решение
1) n(A OR B) = 250 + 400 − 90 = 560.
2) 900 = 600 + n(B) − 150 ⇒ n(B) = 900 − 600 + 150 = 450.
3) n(A AND B) = 330 + 270 − 600 = 0: общих страниц нет, круги не пересекаются.

Три ключевых слова: задания DİM

При трёх ключевых словах три круга делят диаграмму на 7 частей. Пронумеруем части и обозначим число страниц в каждой из них N₁, N₂, …, N₇. Любой запрос — это сумма некоторых из этих частей; в этом весь секрет задания.

ABC1234567
Нумерация частей: 1–3 — один круг, 4–6 — два круга, 7 — три круга.
ЗапросЧасти диаграммы
A1 + 4 + 5 + 7
A AND B4 + 7
A AND B AND C7
(A OR B) AND C5 + 6 + 7
A AND NOT B1 + 5
A OR B OR C1 + 2 + 3 + 4 + 5 + 6 + 7
n(A OR B OR C) = n(A) + n(B) + n(C) − n(A AND B) − n(A AND C) − n(B AND C) + n(A AND B AND C)
где:
  • n(A AND B AND C)число страниц, где есть все три слова (центр, часть 7)

Формула включений и исключений для трёх множеств: при вычитании попарных пересечений центр вычитается трижды, поэтому его один раз добавляют обратно.

  1. 1
    Нарисуйте диаграмму

    Нарисуйте по кругу на каждое ключевое слово и пронумеруйте части.

  2. 2
    Запишите таблицу через части

    Каждую строку таблицы запишите как сумму частей, например: n(B AND C) = N₆ + N₇.

  3. 3
    Начните с центра

    Начните с самого узкого запроса (обычно AND всех трёх слов) и находите части изнутри наружу.

  4. 4
    Выразите искомый запрос

    Определите, из каких частей состоит искомый запрос, и сложите их.

  5. 5
    Проверьте

    Ни одна часть не может быть отрицательной; по возможности проверьте ответ и по формуле.

Кодируемое задание 1

В таблице даны запросы и число страниц, найденных поисковым сервером:
(книга OR журнал) AND поэзия — 540
книга AND поэзия — 310
журнал AND поэзия — 290
Сколько страниц будет найдено по запросу книга AND журнал AND поэзия?

Показать решение
Пусть A = книга, B = журнал, C = поэзия. Во всех запросах есть «поэзия», значит, смотрим только внутрь круга C.
n(книга AND поэзия) = N₅ + N₇ = 310
n(журнал AND поэзия) = N₆ + N₇ = 290
n((книга OR журнал) AND поэзия) = N₅ + N₆ + N₇ = 540
Если сложить первые два равенства, N₇ учтётся дважды: (N₅ + N₇) + (N₆ + N₇) = 600.
Значит, N₇ = 600 − 540 = 60.
Ответ: 60.
Кодируемое задание 2

В таблице даны запросы и число найденных страниц:
Каспий AND нефть AND газ — 90
нефть AND газ — 230
Каспий AND газ — 170
Сколько страниц будет найдено по запросу (Каспий OR нефть) AND газ?

Показать решение
A = Каспий, B = нефть, C = газ.
N₇ = 90 (все три слова).
n(нефть AND газ) = N₆ + N₇ = 230 ⇒ N₆ = 140.
n(Каспий AND газ) = N₅ + N₇ = 170 ⇒ N₅ = 80.
n((Каспий OR нефть) AND газ) = N₅ + N₆ + N₇ = 80 + 140 + 90 = 310.
Короткий путь: 170 + 230 − 90 = 310 — это формула включений и исключений для двух кругов внутри круга C.
Ответ: 310.
Кодируемое задание 3: вся диаграмма

В таблице даны запросы и число найденных страниц:
A — 400
B — 500
C — 300
A OR B OR C — 970
A AND B — 100
A AND C — 70
A AND B AND C — 30
Сколько страниц будет найдено по запросу B AND NOT C?

Показать решение
B AND NOT C — это часть круга B вне C: N₂ + N₄.
Вся диаграмма — 970. Если убрать круг C (300), останется N₁ + N₂ + N₄ = 970 − 300 = 670.
Найдём N₁ (только A): N₇ = 30; N₄ = 100 − 30 = 70; N₅ = 70 − 30 = 40; N₁ = 400 − 70 − 40 − 30 = 260.
Значит, N₂ + N₄ = 670 − 260 = 410.
Заметим: B AND C в таблице не дан, но он и не нужен.
Ответ: 410.

Операции запросов точно соответствуют операциям над множествами в Python: & — AND, | — OR, - — AND NOT. Проверьте формулу сами на маленьком примере (страницы обозначены номерами):

Python
football = {1, 2, 3, 4, 5, 6, 7}
volleyball = {5, 6, 7, 8, 9}
basketball = {2, 7, 9, 10}

print('football AND volleyball:', sorted(football & volleyball))
print('football OR volleyball:', sorted(football | volleyball))
print('football AND NOT volleyball:', sorted(football - volleyball))
print('(football OR volleyball) AND basketball:',
      sorted((football | volleyball) & basketball))

# inclusion-exclusion: n(A OR B) = n(A) + n(B) - n(A AND B)
n_or = len(football) + len(volleyball) - len(football & volleyball)
print(n_or, len(football | volleyball))
▸ Ожидаемый результат
football AND volleyball: [5, 6, 7]
football OR volleyball: [1, 2, 3, 4, 5, 6, 7, 8, 9]
football AND NOT volleyball: [1, 2, 3, 4]
(football OR volleyball) AND basketball: [2, 7, 9]
9 9
Измените множества и проверьте другие запросы.
Быстрый счёт
  1. 1.n(A) = 300, n(B) = 200, n(A AND B) = 50. n(A OR B) =
  2. 2.n(A) = 300, n(A AND B) = 50. n(A AND NOT B) =
  3. 3.n((A OR B) AND C) = 400, n(A AND C) = 250, n(B AND C) = 230. n(A AND B AND C) =
  4. 4.n(A AND B AND C) = 40, n(A AND C) = 150, n(B AND C) = 110. n((A OR B) AND C) =

Главное

  • Поисковая система ищет не в самом интернете, а в индексе, заранее собранном роботами.
  • AND уменьшает число страниц (пересечение), OR увеличивает (объединение), NOT исключает; без скобок порядок: NOT, AND, OR.
  • n(A OR B) = n(A) + n(B) − n(A AND B); n(A AND NOT B) = n(A) − n(A AND B).
  • Три ключевых слова делят диаграмму на 7 частей; любой запрос — сумма этих частей.
  • В задании DİM начинайте с центра (AND всех трёх слов), считайте изнутри наружу и проверяйте, что ни одна часть не отрицательна.

Проверь себя

Вопросов: 12. Каждый правильный ответ приносит XP.

1 / 12
Что делает поисковый робот (краулер)?