Инвертированный индекс: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 1:
'''Инвертированный индекс''' ({{lang-en|inverted index}}) - [[структура данных]] в которой для каждого слова коллекции документов в соответствующем [[список|списке]] перечислены все места в коллекции, в которых оно встретилось. Инвертированный индекс используется для поиска по текстам.
 
==Применение инвертированного индекса==
Опишем как решается задача нахождения документов в которых встречаются все слова из поискового запроса. При обработки однословного поискового запроса, ответ уже есть в инвертированном индексе - достаточно взять список соответствующий слову из запроса. При обработке многословного запроса берутся списки, соответствующие каждому из слов запроса и пересекаются.
 
Строка 23:
Тогда отработка поискового <code>"what is it"</code> запроса даст следующий результат
<math>\{0,1\} \cap \{0,1,2\} \cap \{0,1,2\} = \{0,1\}</math>.
 
==Особенности применения в реальных поисковых системах==
В списке вхождений слова в документы помимо id документов обычно также указываются факторы ( [[TF-IDF, папало слово в заголовок или нет и другие]]), которые используются при ранжировании.
Индекс может строится не по всем словоформам, а по леммам (по каноническим формам слов).
[[Шумовые_слова|Cтоп-слова]] можно исключить и не строить для них индекс, считая что каждое из них встречается почти во всех документах корпуса. Для ускорения вычисления пересечений используют эвристику [[skip-pointer]]-ов. При обработки запросов содержащих много слов используют функцию кворума, которая пропускает на следующую стадию ранжирования часть документов в которых встретились не все слова из запроса.