Поиск сообщений

s

Архитектура поискового модуля: материалы и спецификации

В основе модуля «Поиск сообщений» лежит текстовый индекс на базе Apache Lucene 9.8 с кастомной схемой, адаптированной под структуру записей блог-платформы 2026 года. Индексные файлы хранятся на NVMe-дисках с интерфейсом PCIe 4.0, что обеспечивает задержку чтения менее 50 микросекунд. Для инкрементальной индексации используется Apache Kafka: входящий поток новых публикаций обрабатывается с латентностью не более 2 секунд. Спецификация поисковых полей включает:

Ключевое отличие от аналогов — гибридный алгоритм ранжирования: 40% веса отдается BM25F, 30% — recency-фактору, 30% — персонализированному профилю автора.

Отличия от поисковых движков конкурентов

В отличие от платформ, использующих Elasticsearch без тонкой настройки под блоги, наш модуль внедряет семантический поиск через SBERT-модель, обученную на корпусе из 4 млн записей блоггеров. Это дает:

  1. Поиск по смыслу, а не точное совпадение: запрос «рецепты выпечки без глютена» находит сообщения, где упомянуты «альтернативная мука» или «целиакия».
  2. Блокировку спама и оскорбительной лексики на уровне индексации — применяется фильтр на базе CatBoost.
  3. Поддержку многокритериальной сортировки по времени, рейтингу или релевантности — в одном запросе до 10 000 результатов с пагинацией.

Техническая реализация предполагает 99,95% доступности поиска (SLA) при нагрузке до 10 000 запросов в секунду, что достигается репликацией индекса по 3 узлам ZooKeeper.

Производство и качество: стандарты сборки

Модуль «Поиск сообщений» производится как микросервис на Java 21 с использованием Spring Boot 3.2. Каждая сборка проходит три уровня контроля:

Материалы индексации обновляются каждые 15 минут в фоновом режиме, синхронизация с базой данных PostgreSQL происходит через Debezium. Для обеспечения качества поисковых результатов введена метрика precision@10: не менее 85% первых десяти результатов должны быть релевантны запросу. Данные собираются через A/B-тестирование на 5% пользователей.

Спецификации технологического стека

Окончательный перечень спецификаций для «Поиска сообщений»:

  1. База данных индекса: Apache Lucene 9.8, файловая система — ext4 с блоком 4096 байт.
  2. Серверная часть: Java 21, Spring Boot 3.2, Netty для async I/O.
  3. Кэширование: Redis Cluster (4 ноды, 32 ГБ RAM) для горячих запросов.
  4. Сеть: протокол gRPC с бинарной сериализацией Protobuf 3.

Стандарты качества (QoS) зафиксированы в контракте: время ответа на 95% запросов — до 300 мс, на 99% — до 800 мс. При превышении порога автоматически включается адаптивное сжатие ранжирования (отключение персонализации). Все поисковые индексы еженедельно дефрагментируются с помощью MergePolicy в Lucene.

Дополнительные особенности реализации

Для блоггеров на платформе предусмотрен сквозной поиск по перепискам, комментариям и черновикам. Включена опция фильтрации по категориям (личные сообщения, сообщества, избранные записи) с использованием битовых масок 64 разряда. Инфраструктура контейниризована в Docker с оркестрацией ECS DirectOn (AWS). Поддержка международного поиска реализована через многоязычную индексацию с распознаванием 14 языков на основе FastText.

Добавлено: 07.05.2026