На самом деле поисковые системы do объединить эти списки документов. Они получают хорошую производительность, используя другие методы, наиболее важным из которых является обрезка: например, для каждого слова документы хранятся в порядке убывания страницы и получать результаты, которые имеют шанс попасть в первые 10 (что будет показать пользователю), вы можете пересечь только небольшую часть списков собак и летучих мышей, скажем, первую тысячу. (И, конечно же, есть кэширование, но это не связано с алгоритмом выполнения самого запроса)
Кроме того, в конце концов, не что много документов о собаках и о летучих мышах: даже если это миллионы, то получается в разделенные секунды с хорошей реализацией.
P.S. Однако я работал в ведущей поисковой системе нашей страны, но не в самом двигателе нашего флагманского поискового продукта, но я говорил со своими разработчиками и с удивлением узнал, что алгоритмы выполнения запросов на самом деле довольно глупые: оказывается, что можно скворовать огромный количество вычислений в допустимые временные рамки. Конечно, все это очень оптимизировано, но нет никакой магии и чудес.
Что вы будете делать, если есть несколько факторов, которые следует учитывать, а не только возникновения, как положение слов, чтобы быть относительно близко, название более льготная и т.д .. Как вы думаете, сливаясь из всех этих вещей все еще можно было выполнить в разумные сроки. – Boolean
Грубо говоря, они извлекают документы, содержащие все слова запроса, в порядке убывания pagerank и применяют формулу релевантности (сложную комбинацию из нескольких сотен или тысяч факторов, зависящих от документов и запросов) непосредственно к каждому из них при использовании различных эвристических эскизов , Оказывается, это может быть выполнено в разумные сроки. Сейчас компьютеры мощные. – jkff
Возможно, большая проблема заключается в том, как эффективно получать эти списки в память с диска, но это что-то еще ... – ren