Раздел 40 · Elasticsearch и ELK

Анализаторы и токенизация

junior~10 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

BM25 считает оценку по терминам: сколько раз встретился, насколько редкий, какая длина поля. А откуда берутся сами термины? Их делает анализатор. От него зависит, найдёт ли «ежики» блюдо «Ёжики», а «creme brulee» десерт «Crème brûlée». Разберём, из чего анализатор состоит.

Три стадии

Анализатор это маленький конвейер из трёх стадий, похожий на пайплайн Logstash:

  1. Фильтры символов правят сырой текст до разбиения: заменяют «ё» на «е», вырезают HTML-теги. Их может не быть.
  2. Токенизатор режет текст на токены, обычно слова. Он ровно один.
  3. Фильтры токенов обрабатывают каждое слово: нижний регистр, стоп-слова, окончания, синонимы. Их может быть сколько угодно, работают по порядку.

Что вышло из последнего фильтра, то и попадёт в инвертированный индекс.

Токенизаторы

  • standard режет по правилам Unicode для границ слов: понимает русские и латинские буквы, числа, выбрасывает знаки препинания. Это токенизатор по умолчанию.
  • whitespace режет только по пробелам, и знаки остаются на словах: «скидка!» так и останется со знаком.
  • keyword не режет вовсе: вся строка это один токен. Так работают поля keyword.
  • edge_ngram и ngram режут на кусочки: «пицца» станет «пи», «пиц», «пицц». Это основа поиска по началу слова, вернёмся к нему в уроке про автодополнение.

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

  • lowercase приводит к нижнему регистру. Без него «Пицца» и «пицца» разные термины.
  • asciifolding убирает диакритику: «crème» станет «creme».
  • stop выбрасывает частые слова без смысла: предлоги, союзы.
  • stemmer отрезает окончания по правилам языка. Об этом следующий урок.
  • synonym добавляет синонимы: «бургер» найдёт «гамбургер».

урок из курса

Урок из курса «Elasticsearch и ELK». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.