Инвертированный индекс - это индекс базы данных, в котором хранится сопоставление содержимого, такого как слова или числа, с его местоположениями в базе данных, в документе или наборе документов. Инвертированный индекс предназначен для быстрого полнотекстового поиска.

Чтобы лучше понять, что такое инвертированный индекс и как использовать этот индекс, давайте рассмотрим простой пример с двумя документами:

  1. Документ №1 с текстом «Рецепт пасты с соусом песто»
  2. Документ №2 с текстом «Рецепт вкусной пасты карбонара»

Чтобы построить инвертированный индекс, мы должны разбить эти предложения на токены, в нашем случае токены - это слова. После этого токены будут сохранены со ссылками на документы, в некоторых случаях до того, как сохранение токенов может быть преобразовано.

Инвертированный индекс для этих предложений будет выглядеть как эта упрощенная схема:

В этом перевернутом указателе мы можем найти ссылку на документ по токену (слову из текста).

Давайте посмотрим на несколько примеров поисковых запросов:

  • Поисковый запрос «рецепт макарон» будет разделен на два токена («макароны» и «рецепт»), после чего ему будет соответствовать инвертированный индекс и вернет оба документа с одинаковой оценкой (оценка - это сходство документа и поисковой фразы; мы рассмотрим оценку позже в этой статье).
  • Поисковый запрос «паста карбонара» также даст вам оба документа, но документ №2 будет иметь более высокий балл, чем документ №1. Поскольку в документе № 2 есть оба токена (и «карбонара» и «паста»), а в документе № 1 - только один («макароны» ) токен.
  • Поисковый запрос «вкусная карбонара» даст вам только документ №2, потому что в этом документе есть оба токена, а в документе №1 их нет.

Иногда мы можем преобразовать токены перед сохранением и поиском. Наиболее популярные виды трансформации:

  1. Удаление стоп-слов. Стоп-слова - это самые популярные слова в языке или в вашем наборе данных, которые не имеют семантического веса. Например, в английском языке это могут быть следующие слова of, the, for и т. Д.
  2. Лемматизация. Лемматизация - это процесс преобразования слова в словарную форму слова бег = › бег , прогулки =› ходить , think =› думать
  3. Стебель. Stemming - это процесс преобразования слова в корневую форму путем отсечения окончания слова. Это похоже на лемматизацию, но не может обрабатывать случаи с неправильными глаголами, но может обрабатывать слова, которых нет в словаре.

Это все.