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