Плагины OpenSearch
Managed Service for OpenSearch содержит ряд предустановленных плагинов
Дополнительные плагины OpenSearch
Полный список поддерживаемых дополнительных плагинов:
-
analysis-icu
Добавляет модуль Lucene ICU с расширенной поддержкой Unicode и использованием библиотек ICU
. Модуль предоставляет улучшенный анализ азиатских языков, нормализацию Unicode, преобразование регистра Unicode, поддержку сопоставления и транслитерацию. -
analysis-kuromoji
Добавляет модуль анализа Lucene kuromoji для японского языка.
-
analysis-nori
Добавляет модуль анализа Lucene nori для корейского языка. Использует словарь mecab-ko-dic
. -
analysis-phonetic
Предоставляет фильтры лексем, которые преобразуют выражения в их фонетическое представление с помощью Soundex, Metaphone и других алгоритмов.
-
analysis-smartcn
Добавляет модуль анализа Smart Chinese от Lucene для китайского или смешанного китайско-английского текста.
-
analysis-stempel
Добавляет модуль анализа Stempel от Lucene для польского языка.
-
analysis-ukrainian
Добавляет морфологический модуль анализа UkrainianMorfologikAnalyzer от Lucene для украинского языка. Использует проект Morfologik
. -
ingest-attachment
Извлекает вложения файлов в распространенных форматах (таких как PPT, XLS и PDF) с помощью библиотеки извлечения текста Apache Tika™
. -
mapper-annotated-text
Индексирует текст, представляющий собой комбинацию обычного текста и специальной разметки. Такая комбинация используется для идентификации объектов, таких как люди или организации.
-
mapper-murmur3
Вычисляет хеш значений полей по индексному времени и хранит их в индексе.
-
mapper-size
Предоставляет поле метаданных
_size
, которое индексирует размер в байтах исходного поля_source
. -
repository-azure
Добавляет поддержку хранилища Azure Blob
в качестве репозитория снапшотов. -
repository-gcs
Добавляет поддержку службы Google Cloud Storage
в качестве репозитория снапшотов. -
repository-hdfs
Добавляет поддержку файловой системы HDFS в качестве репозитория снапшотов.
-
repository-s3
Добавляет поддержку AWS S3
в качестве репозитория снапшотов. -
transport-nio
Серверно-клиентская неблокируемая сетевая библиотека, созданная с помощью Netty.
-
yandex-lemmer
Добавляет фильтр yandex-lemmer, который улучшает поиск текста на русском языке по документам OpenSearch.
Подробнее см. в документации OpenSearch
Зачем использовать плагин yandex-lemmer
Фильтр yandex-lemmer
детальнее анализирует поисковый запрос на русском языке и делает поиск более результативным. Без этого фильтра поиск может выдать нерелевантные результаты в следующих случаях:
-
Формы одного слова сильно различаются. Например, при поиске по слову
пёс
не будет найден документ со словомпса
(родительный падеж от словапёс
). А при поиске по словуидти
не будет найден документ со словомшли
(форма прошедшего времени от словаидти
). -
Разные по значению слова совпадают или просто схожи по написанию. В результате могут быть найдены лишние документы, которые не отвечают вашему запросу. Например, при поиске по слову
алая
будут найдены документы, которые содержат как прилагательныеалая
, так и существительные в родительном падеже от названия рекиАлай
(на берегу Алая
). -
В тексте сделаны опечатки, которые на первый взгляд не заметны. Например, в слове
Cловарь
первая буква введена латиницей. Если в поисковом запросе ввести словоСловарь
кириллицей, то документ, в котором указано слово с ошибкой, не будет найден.
Как работает поиск при использовании фильтра yandex-lemmer
:
-
OpenSearch анализирует текст запроса при помощи поисковой библиотеки Apache Lucene
. В процессе анализа токенизатор разбивает текст на отдельные токены. Токен обычно состоит из слова и метаданных об этом слове. Например, токенизатор может преобразовать предложениеОдин в поле не воин
в набор токенов, ориентируясь на пробелы между словами:Один
,в
,поле
,не
,воин
. -
Набор токенов проходит через цепочку фильтров. Фильтр получает токен, анализирует его и возвращает один или несколько токенов. Например, фильтр, который приводит текст к нижнему регистру, вернет то же количество токенов, что и на входе:
один
,в
,поле
,не
,воин
. Также на выходе токен может отсутствовать, если применен фильтр по стоп-словам. -
Когда токен попадает в фильтр
yandex_lemmer
, выполняется поиск начальной формы слова. Если найдена одна или несколько начальных форм (например, для омонимов или омографов), то фильтр сначала возвращает исходный токен, а затем возвращает токены с начальными формами слова.Пример выходных токенов для фразы
идут дожди
{ "tokens": [ { "token": "идут", "start_offset": 0, "end_offset": 4, "type": "<ALPHANUM>", "position": 0 }, { "token": "идти", "start_offset": 0, "end_offset": 4, "type": "<ALPHANUM>", "position": 0 }, { "token": "дожди", "start_offset": 5, "end_offset": 10, "type": "<ALPHANUM>", "position": 1 }, { "token": "дождь", "start_offset": 5, "end_offset": 10, "type": "<ALPHANUM>", "position": 1 } ] }
В приведенном примере при поиске найдутся фразы, которые содержат любую форму слова
идти
(например,шел
,шли
,идут
) и любую форму словадождь
(например,дожди
,дождей
).Каждому токену на выходе присваивается позиция, которая показывает положение слова в поисковой фразе. Если для входящего токена на выходе получается несколько токенов, то у них всех будет одинаковая позиция. Она нужна, чтобы определять расстояние между искомыми словами, например, для запросов в кавычках. Так, при поиске фразы
"идут дожди"
будет найден документ, который содержит фразуидет дождь
, но не будет найдена фразаидет сильный дождь
.
См. также практическое руководство Использование плагина yandex-lemmer в Managed Service for OpenSearch.