Фильтр токенов Edge n-gram
Создаёт n-грамму заданной длины с начала токена.
Например, вы можете использовать фильтр токенов edge_ngram, чтобы изменить quick на qu.
Если не настраивать, по умолчанию фильтр создаёт n-граммы длиной в 1 символ с начала токена.
Этот фильтр использует EdgeNGramTokenFilter Lucene.
Фильтр edge_ngram похож на ngram фильтр токенов. Однако, edge_ngram выводит только n-граммы, которые начинаются в начале токена. Эти n-граммы с начала токена полезны для запросов search-as-you-type.
Пример
Следующий запрос API анализа использует фильтр edge_ngram для преобразования the quick brown fox jumps в n-граммы длиной в 1 и 2 символа с начала токена:
GET _analyze
{
"tokenizer": "standard",
"filter": [
{ "type": "edge_ngram",
"min_gram": 1,
"max_gram": 2
}
],
"text": "the quick brown fox jumps"
} Фильтр производит следующие токены:
[ t, th, q, qu, b, br, f, fo, j, ju ]
Добавление в анализатор
Следующий запрос API создания индекса использует фильтр edge_ngram для настройки нового настраиваемого анализатора.
PUT edge_ngram_example
{
"settings": {
"analysis": {
"analyzer": {
"standard_edge_ngram": {
"tokenizer": "standard",
"filter": [ "edge_ngram" ]
}
}
}
}
} Настраиваемые параметры
-
max_gram -
(Необязательно, целое число) Максимальная длина n-граммы в символах. По умолчанию для настраиваемых фильтров токенов -
2. Для встроенного фильтраedge_ngramпо умолчанию -1. -
min_gram - (Необязательно, целое число) Минимальная длина n-граммы в символах. По умолчанию -
1. -
preserve_original - (Необязательно, логическое значение) Выводит исходный токен, если установлено в значение
true. По умолчанию -false. -
side -
(Необязательно, строка) Устарело. Указывает, обрезать ли токены с
frontилиbackстороны. По умолчанию -front.Вместо использования значения
back, можно использовать фильтр токеновreverseперед и после фильтраedge_ngram, чтобы достичь тех же результатов.
Настройка
Для настройки фильтра edge_ngram, создайте его копию, чтобы получить основу для нового настраиваемого фильтра токенов. Вы можете изменить фильтр, используя настраиваемые параметры.
Например, следующий запрос создаёт настраиваемый фильтр edge_ngram, который формирует n-граммы длиной от 3 до 5 символов.
PUT edge_ngram_custom_example
{
"settings": {
"analysis": {
"analyzer": {
"default": {
"tokenizer": "whitespace",
"filter": [ "3_5_edgegrams" ]
}
},
"filter": {
"3_5_edgegrams": {
"type": "edge_ngram",
"min_gram": 3,
"max_gram": 5
}
}
}
}
} Ограничения параметра max_gram
Значение параметра max_gram фильтра edge_ngram ограничивает длину токенов в символах. Когда фильтр edge_ngram используется с анализатором индекса, это означает, что поисковые запросы длиной более max_gram символов могут не соответствовать никаким индексированным терминам.
Например, если значение max_gram равно 3, поисковые запросы на apple не будут соответствовать индексированному термину app.
Чтобы учесть это, можно использовать фильтр truncate с анализатором поиска, чтобы укоротить поисковые запросы до длины max_gram символов. Однако, это может привести к возврату нерелевантных результатов.
Например, если значение max_gram равно 3 и поисковые запросы обрезаются до трёх символов, поисковый запрос apple укорачивается до app. Это означает, что поисковые запросы на apple возвращают любые индексированные термины, соответствующие app, такие как apply, snapped и apple.
Рекомендуется протестировать оба подхода, чтобы выбрать тот, который лучше всего подходит для вашего случая использования и желаемого опыта поиска.
© 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/analysis-edgengram-tokenfilter.html