Фильтр токенов n-грамм
Формирует n-граммы заданной длины из токена.
Например, вы можете использовать фильтр токенов ngram для изменения fox на [ f, fo, o, ox, x ].
Этот фильтр использует NGramTokenFilter из Lucene.
Фильтр ngram похож на edge_ngram. Однако, edge_ngram выводит только n-граммы, которые начинаются в начале токена.
Пример
Следующий запрос API анализа использует фильтр ngram для преобразования Quick fox в n-граммы длиной 1 и 2 символа:
GET _analyze
{
"tokenizer": "standard",
"filter": [ "ngram" ],
"text": "Quick fox"
} Фильтр генерирует следующие токены:
[ Q, Qu, u, ui, i, ic, c, ck, k, f, fo, o, ox, x ]
Добавление в анализатор
Следующий запрос API создания индекса использует фильтр ngram для настройки нового пользовательского анализатора.
PUT ngram_example
{
"settings": {
"analysis": {
"analyzer": {
"standard_ngram": {
"tokenizer": "standard",
"filter": [ "ngram" ]
}
}
}
}
} Настраиваемые параметры
-
max_gram - (Необязательно, целое число) Максимальная длина символов в грамме. По умолчанию
2. -
min_gram - (Необязательно, целое число) Минимальная длина символов в грамме. По умолчанию
1. -
preserve_original - (Необязательно, логическое значение) Выводит исходный токен, если установлено в
true. По умолчаниюfalse.
Вы можете использовать настройку уровня индекса index.max_ngram_diff для управления максимальным разрешенным различием между значениями max_gram и min_gram.
Настройка
Для настройки фильтра ngram дублируйте его, чтобы создать основу для нового пользовательского фильтра токенов. Вы можете изменить фильтр, используя его настраиваемые параметры.
Например, следующий запрос создает пользовательский фильтр ngram, который формирует n-граммы длиной от 3 до 5 символов. Запрос также увеличивает значение index.max_ngram_diff до 2.
PUT ngram_custom_example
{
"settings": {
"index": {
"max_ngram_diff": 2
},
"analysis": {
"analyzer": {
"default": {
"tokenizer": "whitespace",
"filter": [ "3_5_grams" ]
}
},
"filter": {
"3_5_grams": {
"type": "ngram",
"min_gram": 3,
"max_gram": 5
}
}
}
}
}
© 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-ngram-tokenfilter.html