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