Поиск · Урок 58

Поиск: Elasticsearch

LIKE '%слово%' медленный и не знает слов: «кот» не найдёт «котик», опечатки ломают выдачу. Поисковые движки индексируют документы и ранжируют по релевантности за миллисекунды.

Идея индексации

Документ «помещается» в поисковый движок (индексируется), где текст разбивается на токены. Запрос ищет по этому индексу и возвращает совпадения с оценкой релевантности:

// Elasticsearch: создать/обновить документ
POST /products/_doc/42
{ "title": "Красная кружка", "tags": ["посуда"] }

// Поиск с опечатками и приоритетом
GET /products/_search?q=кружк+посуда

// Meilisearch из коробки «умнее»: typo-tolerant и быстрый
client.index("products").search("кружк");

Когда подключать

💡
Для прототипа берите Meilisearch (поднимается за минуту, REST из коробки), для большой инфраструктуры — Elasticsearch. Оба бесплатны для старта.
ℹ️
Поисковый движок — это «вторичная» система: источник правды остаётся в базе (урок 22), а в индекс синхронизируются срезы данных по событию или расписанию.