Фильтр токенов Stemmer
Обеспечивает алгоритмическое стеммирование для нескольких языков, некоторые с дополнительными вариантами. Список поддерживаемых языков см. в параметре language.
Если не настроен, фильтр использует алгоритм стемминга Портера для английского языка.
Пример
Следующий запрос API анализа использует алгоритм стемминга Портера по умолчанию фильтра stemmer, чтобы стеммировать the foxes jumping quickly до the fox jump
quickli:
resp = client.indices.analyze(
tokenizer="standard",
filter=[
"stemmer"
],
text="the foxes jumping quickly",
)
print(resp) response = client.indices.analyze(
body: {
tokenizer: 'standard',
filter: [
'stemmer'
],
text: 'the foxes jumping quickly'
}
)
puts response const response = await client.indices.analyze({
tokenizer: "standard",
filter: ["stemmer"],
text: "the foxes jumping quickly",
});
console.log(response); GET /_analyze
{
"tokenizer": "standard",
"filter": [ "stemmer" ],
"text": "the foxes jumping quickly"
} Фильтр генерирует следующие токены:
[ the, fox, jump, quickli ]
Добавление в анализатор
Следующий запрос API создания индекса использует фильтр stemmer для настройки нового пользовательского анализатора.
resp = client.indices.create(
index="my-index-000001",
settings={
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "whitespace",
"filter": [
"stemmer"
]
}
}
}
},
)
print(resp) response = client.indices.create(
index: 'my-index-000001',
body: {
settings: {
analysis: {
analyzer: {
my_analyzer: {
tokenizer: 'whitespace',
filter: [
'stemmer'
]
}
}
}
}
}
)
puts response const response = await client.indices.create({
index: "my-index-000001",
settings: {
analysis: {
analyzer: {
my_analyzer: {
tokenizer: "whitespace",
filter: ["stemmer"],
},
},
},
},
});
console.log(response); PUT /my-index-000001
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "whitespace",
"filter": [ "stemmer" ]
}
}
}
}
} Настраиваемые параметры
-
language -
(Необязательно, строка) Языковой алгоритм стемминга, используемый для стемминга токенов. Если указаны как этот, так и параметр
name, используется аргумент параметраlanguage.Допустимые значения для
languageДопустимые значения отсортированы по языку. По умолчанию
english. Рекомендуемые алгоритмы выделены жирным.
- Арабский
-
arabic - Армянский
-
armenian - Баскский
-
basque - Бенгальский
-
bengali - Бразильский португальский
-
brazilian - Болгарский
-
bulgarian - Каталонский
-
catalan - Чешский
-
czech - Датский
-
danish - Голландский
-
dutch,dutch_kp[8.16.0] Устарело в 8.16.0.dutch_kpбудет удалено в будущей версии - Английский
-
english,light_english,lovins[8.16.0] Устарело в 8.16.0.lovinsбудет удалено в будущей версии ,minimal_english,porter2,possessive_english - Эстонский
-
estonian - Финский
-
finnish,light_finnish - Французский
-
light_french,french,minimal_french - Галисийский
-
galician,minimal_galician(Только шаг множественного числа) - Немецкий
-
light_german,german,german2,minimal_german - Греческий
-
greek - Хинди
-
hindi - Венгерский
-
hungarian,light_hungarian - Индонезийский
-
indonesian - Ирландский
-
irish - Итальянский
-
light_italian,italian - Курдский (сорани)
-
sorani - Латвийский
-
latvian - Литовский
-
lithuanian - Норвежский (букмол)
-
norwegian,light_norwegian,minimal_norwegian - Норвежский (нюнорск)
-
light_nynorsk,minimal_nynorsk - Персидский
-
persian - Португальский
-
light_portuguese,minimal_portuguese,portuguese,portuguese_rslp - Румынский
-
romanian - Русский
-
russian,light_russian - Сербский
-
serbian
- Испанский
-
light_spanish,spanishspanish_plural - Шведский
-
swedish,light_swedish - Турецкий
-
turkish
-
name - Псевдоним для параметра
language. Если указаны как этот, так и параметрlanguage, используется значение параметраlanguage.
Настройка
Для настройки фильтра stemmer, создайте его дубликат в качестве основы для нового пользовательского фильтра. Вы можете изменить фильтр, используя его настраиваемые параметры.
Например, следующий запрос создаёт пользовательский фильтр stemmer, который преобразует слова, используя алгоритм light_german:
resp = client.indices.create(
index="my-index-000001",
settings={
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_stemmer"
]
}
},
"filter": {
"my_stemmer": {
"type": "stemmer",
"language": "light_german"
}
}
}
},
)
print(resp) response = client.indices.create(
index: 'my-index-000001',
body: {
settings: {
analysis: {
analyzer: {
my_analyzer: {
tokenizer: 'standard',
filter: [
'lowercase',
'my_stemmer'
]
}
},
filter: {
my_stemmer: {
type: 'stemmer',
language: 'light_german'
}
}
}
}
}
)
puts response const response = await client.indices.create({
index: "my-index-000001",
settings: {
analysis: {
analyzer: {
my_analyzer: {
tokenizer: "standard",
filter: ["lowercase", "my_stemmer"],
},
},
filter: {
my_stemmer: {
type: "stemmer",
language: "light_german",
},
},
},
},
});
console.log(response); PUT /my-index-000001
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_stemmer"
]
}
},
"filter": {
"my_stemmer": {
"type": "stemmer",
"language": "light_german"
}
}
}
}
}
© 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/analysis-stemmer-tokenfilter.html