Разделим языковой поиск, точное сравнение и расширение смысла, не смешивая их в одном поле.
- Морфология и языки
- Несколько представлений значения
- Синонимы как управляемое расширение
Разделим языковой поиск, точное сравнение и расширение смысла, не смешивая их в одном поле.
Курс ориентирован на Elasticsearch 9.4.3. Разборы упражнений используют публичный набор products; остальные запросы показывают отдельные учебные индексы и могут требовать подготовки или прав, недоступных в тренажёре. Ответы сокращены, score может меняться. Для расширенных функций проверяйте лицензию и вариант развёртывания.
Морфология и языки
Русский анализатор может сближать формы слов, но не понимает намерение как человек. Смешанные языки, модели устройств и бренды требуют тестового словаря. Часто полезно хранить языковые поля отдельно и выбирать их по языку запроса. Транслитерация не возникает автоматически: это отдельная нормализация или дополнительное представление с измеряемыми рисками ложных совпадений.
СамопроверкаНесколько представлений значения
name может иметь основной text и подполе raw типа keyword. Первое ищет по словам, второе сортирует или сравнивает целиком. Normalizer keyword-поля сохраняет один токен и подходит для нормализации регистра; он не заменяет полноценный анализатор. Добавленное multi-field не заполняется для старых документов само: их нужно переобработать.
СамопроверкаСинонимы как управляемое расширение
Эквивалентные и направленные правила решают разные задачи: «ноутбук, laptop» и «ультрабук => ноутбук» не одно и то же. Многословные синонимы требуют сохранения графа позиций; synonym_graph предназначен для поискового анализа. Изменения search-time синонимов удобнее обновлять без полной переиндексации при корректной конфигурации. Любое расширение проверяют на точность, а не только на рост числа результатов.
Одно исходное название получает независимые поисковое и точное представления.
{
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "russian",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
}Как читать результат
Одно исходное название получает независимые поисковое и точное представления.
Разбор на примере каталога
Для «наушники» и «наушников» проверяйте реальные токены русского анализатора. Для Sony и SONY решите, считаются ли значения одинаковыми в точном фильтре, и задайте normalizer. Для «беспроводные наушники» и «Bluetooth headset» нужна отдельная стратегия языков или синонимов — морфология сама не создаст перевод. Синоним может расширить запрос до нерелевантных аксессуаров, поэтому после каждого изменения добавляйте положительный и отрицательный пример в контрольный набор. Рост total без проверки качества не считается улучшением.
СамопроверкаСамопроверка
Сначала ответьте самостоятельно, затем раскройте объяснение.
1. Стемминг равен переводу?
Нет, он сближает словоформы, а не переводит между языками.
2. Зачем name.raw?
Для точного представления, сортировки и агрегаций независимо от анализа текста.
3. Почему normalizer не tokenizer?
Он должен сохранить одно значение keyword как один токен.
4. Где применять synonym_graph?
В поисковом анализаторе для корректной обработки многословных альтернатив.
5. Что делать после добавления multi-field?
Переобработать существующие документы, чтобы заполнить новое представление.
Краткая памятка
- Нет, он сближает словоформы, а не переводит между языками.
- Для точного представления, сортировки и агрегаций независимо от анализа текста.
- Он должен сохранить одно значение keyword как один токен.
- В поисковом анализаторе для корректной обработки многословных альтернатив.
- Переобработать существующие документы, чтобы заполнить новое представление.
Официальная документация
Готовы применить знания?
Подтвердите прочтение, чтобы сохранить своё место. Чтение и решение заданий учитываются отдельно в этом браузере с помощью гостевой cookie.