Как устроен поисковый движок: инвертированный индекс, анализаторы, релевантность
Поисковый движок строит инвертированный индекс: для каждого термина хранится список документов, где он встречается, с позициями и частотами. Текст превращается в термины анализатором — цепочкой из нормализации символов, разбиения на токены и фильтров (нижний регистр, стоп-слова, стемминг или лемматизация, синонимы). Ключевое правило: один и тот же анализатор применяется при индексации и при поиске, иначе запрос не найдёт то, что лежит в индексе. Ранжирование по умолчанию — BM25: чем реже термин в коллекции и чаще в документе, тем выше вклад, с насыщением по частоте и нормировкой на длину документа. Практика поиска почти всегда сводится к разделению полей: text для полнотекстового поиска и keyword для фильтров, агрегаций и сортировки — одно и то же значение индексируют дважды, потому что это разные задачи.