Я понимаю основы ранжирования поисковых систем, включая идеи "обратного индекса", "векторной космической модели", "косинусоидальности", "PageRank" и т.д.
Однако, когда пользователь представляет популярный запрос, очень вероятно, что миллионы страниц, содержащих этот термин. В результате поисковой системе по-прежнему необходимо сортировать эти миллионы страниц в режиме реального времени. Например, я просто попытался найти "Барака Обаму" в Google. Он показывает "Около 937 000 000 результатов (0,49 секунды)". Рейтинг более 900 млн. Единиц в течение 0,5 секунд? Это действительно смущает меня!
Как поисковая система сортирует такое большое количество элементов в течение 1 секунды? Может ли кто-нибудь дать мне некоторые интуитивные идеи или указать ссылки?
Спасибо!
ОБНОВЛЕНИЕ:
- Большинство ответов (включая некоторые старые обсуждения) пока, похоже, вносят свой вклад в "обратный индекс". Однако, насколько мне известно, обратный индекс помогает найти "релевантные страницы". Другими словами, путем обратного индекса Google мог получить 900 миллионов страниц, содержащих "Барак Обаму" (из более чем нескольких миллиардов страниц). Тем не менее, пока не ясно, как "ранжировать" эти миллионы "релевантных страниц" на основе потоков, которые я читал до сих пор.
- Структура MapReduce вряд ли станет ключевым компонентом для ранжирования в реальном времени. MapReduce предназначен для пакетных задач. При отправке задания в каркас MapReduce время отклика обычно составляет не менее минуты, что, по-видимому, слишком медленное, чтобы удовлетворить наш запрос.