Полнотекстовый поиск на Go без Elasticsearch: Bleve как альтернатива
Когда в проекте возникает задача поиска, первая мысль — поднимать Elasticsearch. Но что, если не хочется тащить внешний сервис, возиться с кластеризацией и поддерживать ещё одну точку отказа? Для Go есть Bleve — встраиваемая библиотека, которая работает внутри вашего приложения, индексирует любые структуры и не требует отдельного сервера.
В гайде разбирают всё по делу:
— создание индекса и простой поиск с ранжированием по BM25;
— кастомные маппинги полей: стемминг, стоп-слова, исключение полей из индекса;
— мультиязычный поиск через IndexAlias — один виртуальный индекс поверх нескольких;
— курсорная пагинация с SearchAfter (чтобы не было дублей и пропусков при обновлении данных);
— настройки производительности Scorch: воркеры, размер сегментов, пороги мёржа.
Bleve — это не замена Elasticsearch для больших распределённых систем, но идеальный вариант, когда нужен полнотекстовый поиск без лишней инфраструктуры и с полным контролем.
Код, примеры и нюансы конфигурации — в материале: https://tproger.ru/translations/polnotekstovyj-poisk-na-go-bez-elasticsearch---gajd-po-bleve
Post #4983
2.43K
- 🔥 3
- 👍 2