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

Графы токенов

Когда токенизатор преобразует текст в поток токенов, он также записывает следующее:

  • position каждого токена в потоке
  • positionLength, количество позиций, занимаемых токеном

Используя это, вы можете создать направленный ациклический граф, называемый графом токенов, для потока. В графе токенов каждая позиция представляет узел. Каждый токен представляет ребро или дугу, указывающую на следующую позицию.

token graph qbf ex

Синонимы

Некоторые фильтры токенов могут добавлять новые токены, такие как синонимы, в существующий поток токенов. Эти синонимы часто занимают те же позиции, что и существующие токены.

На следующем графике, quick и его синоним fast оба имеют позицию 0. Они занимают одни и те же позиции.

token graph qbf synonym ex

Токены с несколькими позициями

Некоторые фильтры токенов могут добавлять токены, занимающие несколько позиций. К ним могут относиться токены для синонимов из нескольких слов, таких как использование «atm» в качестве синонима для «automatic teller machine».

Однако только некоторые фильтры токенов, известные как фильтры токенов графов, точно записывают positionLength для токенов с несколькими позициями. К этим фильтрам относятся:

  • synonym_graph
  • word_delimiter_graph

Некоторые токенизаторы, такие как nori_tokenizer, также точно разделяют составные токены на токены с несколькими позициями.

На следующем графике, domain name system и его синоним dns оба имеют позицию 0. Однако, dns имеет positionLength из 3. Другие токены в графе имеют стандартное значение positionLength из 1.

token graph dns synonym ex

Использование графов токенов для поиска

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

Однако запросы, такие как match или match_phrase запрос, могут использовать эти графы для генерации нескольких подзапросов из одной строки запроса.

Пример

Пользователь выполняет поиск по следующей фразе, используя запрос match_phrase:

domain name system is fragile

Во время анализа поиска, dns, синоним для domain name system, добавляется в поток токенов строки запроса. Токен dns имеет positionLength из 3.

token graph dns synonym ex

Запрос match_phrase использует этот граф для генерации подзапросов для следующих фраз:

dns is fragile
domain name system is fragile

Это означает, что запрос соответствует документам, содержащим либо dns is fragile или domain name system is fragile.

Недействительные графы токенов

Следующие фильтры токенов могут добавлять токены, занимающие несколько позиций, но записывать только стандартное значение positionLength из 1:

  • synonym
  • word_delimiter

Это означает, что эти фильтры будут генерировать недействительные графы токенов для потоков, содержащих такие токены.

На следующем графике, dns является синонимом с несколькими позициями для domain name system. Однако dns имеет стандартное значение positionLength равное 1, что приводит к недействительному графу.

token graph dns invalid ex

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

© 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/token-graphs.html

Spec-Zone.ru

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