Фильтр токенов predicate script
Удаляет токены, которые не соответствуют предоставленному предикатному скрипту. Фильтр поддерживает только встроенные скрипты Painless. Скрипты оцениваются в контексте предиката анализа.
Пример
Следующий запрос API анализа использует фильтр predicate_token_filter для вывода только токенов, длина которых превышает три символа, из the fox jumps the lazy dog.
GET /_analyze
{
"tokenizer": "whitespace",
"filter": [
{
"type": "predicate_token_filter",
"script": {
"source": """
token.term.length() > 3
"""
}
}
],
"text": "the fox jumps the lazy dog"
} Фильтр производит следующие токены.
[ jumps, lazy ]
Ответ API содержит позицию и смещения каждого выведенного токена. Обратите внимание, что фильтр predicate_token_filter не изменяет исходных позиций или смещений токенов.
Ответ
{
"tokens" : [
{
"token" : "jumps",
"start_offset" : 8,
"end_offset" : 13,
"type" : "word",
"position" : 2
},
{
"token" : "lazy",
"start_offset" : 18,
"end_offset" : 22,
"type" : "word",
"position" : 4
}
]
} Настраиваемые параметры
-
script -
(Обязательно, объект скрипта) Скрипт, содержащий условие, используемое для фильтрации входных токенов. В выходные данные включаются только те токены, которые соответствуют этому скрипту.
Этот параметр поддерживает только встроенные скрипты Painless. Скрипт оценивается в контексте предиката анализа.
Настройка и добавление в анализатор
Чтобы настроить фильтр predicate_token_filter, дублируйте его, чтобы создать основу для нового пользовательского фильтра токенов. Вы можете изменить фильтр, используя его настраиваемые параметры.
Следующий запрос API создания индекса настраивает новый пользовательский анализатор с использованием пользовательского фильтра predicate_token_filter, my_script_filter.
Фильтр my_script_filter удаляет токены с любым типом, отличным от ALPHANUM.
PUT /my-index-000001
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"my_script_filter"
]
}
},
"filter": {
"my_script_filter": {
"type": "predicate_token_filter",
"script": {
"source": """
token.type.contains("ALPHANUM")
"""
}
}
}
}
}
}
© 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-predicatefilter-tokenfilter.html