Spec-Zone.ru › Elasticsearch 8
›Руководство по Elasticsearch [8.17] ›Анализ текста ›Справочник по фильтрам токенов

Фильтр токенов 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, spanish spanish_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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API