Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Анализ текста ›Справочник по фильтрам токенов

Фильтр токенов Hunspell

Предоставляет лексическое сведение на основе предоставленного словаря Hunspell. Для работы с фильтром hunspell требуется настройка одного или нескольких языковых словарей Hunspell.

Этот фильтр использует HunspellStemFilter из Lucene.

Если доступно, рекомендуется попробовать алгоритмический стеммер для вашего языка, прежде чем использовать фильтр токенов hunspell. На практике алгоритмические стеммеры обычно превосходят лексические стеммеры. См. Лексические стеммеры.

Настройка словарей Hunspell

Словари Hunspell хранятся и распознаются в отдельном каталоге hunspell на файловой системе: <$ES_PATH_CONF>/hunspell. Каждый словарь должен иметь свой каталог, названный по соответствующему языку и локали (например, pt_BR, en_GB). В этом каталоге словаря ожидается наличие одного файла .aff и одного или нескольких файлов .dic, которые будут автоматически подхвачены. Например, следующая структура каталога определяет словарь en_US:

- config
    |-- hunspell
    |    |-- en_US
    |    |    |-- en_US.dic
    |    |    |-- en_US.aff

Каждый словарь можно настроить с помощью одного параметра:

ignore_case

(Статический, Булево) Если значение true, сопоставление словарей будет регистронезависимым. По умолчанию значение false.

Этот параметр можно настроить глобально в elasticsearch.yml с помощью indices.analysis.hunspell.dictionary.ignore_case.

Для настройки параметра для определённой локали используйте параметр indices.analysis.hunspell.dictionary.<locale>.ignore_case (например, для локали en_US (Американский английский) параметр равен indices.analysis.hunspell.dictionary.en_US.ignore_case).

Вы также можете добавить файл settings.yml в каталог словаря, который содержит эти настройки. Это переопределяет любые другие настройки ignore_case, определённые в elasticsearch.yml.

Пример

Следующий запрос API анализа использует фильтр hunspell для сведения the foxes jumping quickly до the fox jump quick.

В запросе указана локаль en_US, что означает, что для словаря Hunspell используются файлы .aff и .dic в каталоге <$ES_PATH_CONF>/hunspell/en_US.

GET /_analyze
{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "hunspell",
      "locale": "en_US"
    }
  ],
  "text": "the foxes jumping quickly"
}

Фильтр создаёт следующие токены:

[ the, fox, jump, quick ]

Настраиваемые параметры

dictionary

(Необязательно, строка или массив строк) Один или несколько файлов .dic (например, en_US.dic, my_custom.dic) для использования в словаре Hunspell.

По умолчанию фильтр hunspell использует все файлы .dic в каталоге <$ES_PATH_CONF>/hunspell/<locale>, указанном с помощью параметра lang, language или locale.

dedup
(Необязательно, Булево) Если true, дублирующие токены удаляются из выходных данных фильтра. По умолчанию true.
lang

(Обязательно*, строка) Псевдоним для параметра locale.

Если этот параметр не указан, требуется параметр language или locale.

language

(Обязательно*, строка) Псевдоним для параметра locale.

Если этот параметр не указан, требуется параметр lang или locale.

locale

(Обязательно*, строка) Каталог локали, используемый для указания файлов .aff и .dic для словаря Hunspell. См. Настройка словарей Hunspell.

Если этот параметр не указан, требуется параметр lang или language.

longest_only
(Необязательно, Булево) Если true, в выходные данные включается только самая длинная образованная форма каждого токена. Если false, включаются все образованные формы токена. По умолчанию false.

Настройка и добавление в анализатор

Чтобы настроить фильтр hunspell, дублируйте его, чтобы создать основу для нового пользовательского фильтра токенов. Вы можете изменить фильтр, используя его настраиваемые параметры.

Например, следующий запрос API создания индекса создания индекса использует пользовательский фильтр hunspell, my_en_US_dict_stemmer, для настройки нового пользовательского анализатора.

Фильтр my_en_US_dict_stemmer использует каталог локали locale, равный en_US, что означает, что для словаря Hunspell используются файлы .aff и .dic в каталоге <$ES_PATH_CONF>/hunspell/en_US. Фильтр также включает аргумент dedup со значением false, что означает, что дублирующие токены, добавленные из словаря, не удаляются из выходных данных фильтра.

PUT /my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "en": {
          "tokenizer": "standard",
          "filter": [ "my_en_US_dict_stemmer" ]
        }
      },
      "filter": {
        "my_en_US_dict_stemmer": {
          "type": "hunspell",
          "locale": "en_US",
          "dedup": false
        }
      }
    }
  }
}

Настройки

Помимо настроек ignore_case, можно настроить следующие глобальные настройки для фильтра hunspell с помощью elasticsearch.yml:

indices.analysis.hunspell.dictionary.lazy
(Статический, Булево) Если true, загрузка словарей Hunspell откладывается до использования словаря. Если false, каталог словаря проверяется при запуске узла, и любые словари автоматически загружаются. По умолчанию false.

© 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-hunspell-tokenfilter.html

Spec-Zone.ru

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