Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Руководство [8.17] ›Анализ текста ›Концепции анализа текста

Анализ индекса и поиска

Анализ текста происходит в два этапа:

Время индексирования
При индексировании документа анализируются значения любого поля типа text.
Время поиска

При выполнении полного текстового поиска по полю text, анализируется строка запроса (текст, по которому выполняется поиск).

Время поиска также называется временем обработки запроса.

Анализатор или набор правил анализа, используемый на каждом этапе, называется соответственно анализатором индекса или анализатором поиска.

Как работают анализатор индекса и анализатор поиска вместе

В большинстве случаев необходимо использовать один и тот же анализатор при индексировании и поиске. Это гарантирует, что значения и строки запросов для поля преобразуются в один и тот же формат токенов. В свою очередь, это обеспечивает ожидаемое соответствие токенов во время поиска.

Пример

Документ индексируется со следующим значением в поле text:

The QUICK brown foxes jumped over the dog!

Анализатор индекса для поля преобразует значение в токены и приводит их к нормальной форме. В данном случае каждый токен представляет собой слово:

[ quick, brown, fox, jump, over, dog ]

Эти токены затем индексируются.

Позже пользователь выполняет поиск по тому же полю text с запросом:

"Quick fox"

Пользователь ожидает, что этот поиск найдет предложение, индексированное ранее, The QUICK brown foxes jumped over the dog!.

Однако строка запроса не содержит точных слов, используемых в оригинальном тексте документа:

  • Quick против QUICK
  • fox против foxes

Для учета этого строка запроса анализируется с использованием того же анализатора. Этот анализатор генерирует следующие токены:

[ quick, fox ]

Для выполнения поиска Elasticsearch сравнивает эти токены строки запроса с токенами, индексированными в поле text.

Токен Строка запроса text поле

quick

X

X

brown

X

fox

X

X

jump

X

over

X

dog

X

Так как значения поля и строка запроса анализировались одинаково, они создали похожие токены. Токены quick и fox являются точными совпадениями. Это означает, что поиск соответствует документу, содержащему "The QUICK brown foxes jumped over the dog!", как ожидалось пользователем.

Когда использовать другой анализатор поиска

Хотя это встречается реже, иногда имеет смысл использовать разные анализаторы при индексировании и поиске. Для этого Elasticsearch позволяет указать отдельный анализатор поиска.

В целом, отдельный анализатор поиска следует указывать только в том случае, если использование одинаковой формы токенов для значений поля и строк запроса приведет к неожиданным или нерелевантным результатам поиска.

Пример

Elasticsearch используется для создания поисковой системы, которая ищет только слова, начинающиеся с заданного префикса. Например, поиск по tr должен возвращать tram или trope, но никогда не taxi или bat.

Документ добавляется в индекс поисковой системы; этот документ содержит одно такое слово в поле text:

"Apple"

Анализатор индекса для поля преобразует значение в токены и приводит их к нормальной форме. В данном случае каждый токен представляет собой потенциальный префикс для слова:

[ a, ap, app, appl, apple]

Эти токены затем индексируются.

Позже пользователь выполняет поиск по тому же полю text с запросом:

"appli"

Пользователь ожидает, что этот поиск найдет только слова, начинающиеся с appli, такие как appliance или application. Поиск не должен находить apple.

Однако, если анализатор индекса используется для анализа этой строки запроса, он создаст следующие токены:

[ a, ap, app, appl, appli ]

При сравнении Elasticsearch этих токенов строки запроса с индексированными для apple, он находит несколько совпадений.

Токен appli apple

a

X

X

ap

X

X

app

X

X

appl

X

X

appli

X

Это означает, что поиск ошибочно соответствует apple. Более того, он будет соответствовать любому слову, начинающемуся с a.

Для исправления этого можно указать другой анализатор поиска для строк запросов, используемых для поля text.

В этом случае можно указать анализатор поиска, который генерирует единственный токен, а не набор префиксов:

[ appli ]

Этот токен строки запроса будет соответствовать только токенам для слов, начинающихся с appli, что лучше соответствует ожиданиям пользователя от поиска.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/analysis-index-search-time.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API