Графы токенов
Когда токенизатор преобразует текст в поток токенов, он также записывает следующее:
-
positionкаждого токена в потоке -
positionLength, количество позиций, занимаемых токеном
Используя это, вы можете создать направленный ациклический граф, называемый графом токенов, для потока. В графе токенов каждая позиция представляет узел. Каждый токен представляет ребро или дугу, указывающую на следующую позицию.
Синонимы
Некоторые фильтры токенов могут добавлять новые токены, такие как синонимы, в существующий поток токенов. Эти синонимы часто занимают те же позиции, что и существующие токены.
На следующем графике, quick и его синоним fast оба имеют позицию 0. Они занимают одни и те же позиции.
Токены с несколькими позициями
Некоторые фильтры токенов могут добавлять токены, занимающие несколько позиций. К ним могут относиться токены для синонимов из нескольких слов, таких как использование «atm» в качестве синонима для «automatic teller machine».
Однако только некоторые фильтры токенов, известные как фильтры токенов графов, точно записывают positionLength для токенов с несколькими позициями. К этим фильтрам относятся:
Некоторые токенизаторы, такие как nori_tokenizer, также точно разделяют составные токены на токены с несколькими позициями.
На следующем графике, domain name system и его синоним dns оба имеют позицию 0. Однако, dns имеет positionLength из 3. Другие токены в графе имеют стандартное значение positionLength из 1.
Использование графов токенов для поиска
Индексирование игнорирует атрибут positionLength и не поддерживает графы токенов, содержащие токены с несколькими позициями.
Однако запросы, такие как match или match_phrase запрос, могут использовать эти графы для генерации нескольких подзапросов из одной строки запроса.
Пример
Пользователь выполняет поиск по следующей фразе, используя запрос match_phrase:
domain name system is fragile
Во время анализа поиска, dns, синоним для domain name system, добавляется в поток токенов строки запроса. Токен dns имеет positionLength из 3.
Запрос match_phrase использует этот граф для генерации подзапросов для следующих фраз:
dns is fragile domain name system is fragile
Это означает, что запрос соответствует документам, содержащим либо dns is fragile или domain name system is fragile.
Недействительные графы токенов
Следующие фильтры токенов могут добавлять токены, занимающие несколько позиций, но записывать только стандартное значение positionLength из 1:
Это означает, что эти фильтры будут генерировать недействительные графы токенов для потоков, содержащих такие токены.
На следующем графике, dns является синонимом с несколькими позициями для domain name
system. Однако dns имеет стандартное значение positionLength равное 1, что приводит к недействительному графу.
Избегайте использования недействительных графов токенов для поиска. Недействительные графы могут привести к неожиданным результатам поиска.
© 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