Что такое Apache Solr и в каких сценариях он применяется?

«Что такое Apache Solr и в каких сценариях он применяется?» — вопрос из категории Базы данных, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Apache Solr — это высокопроизводительная, масштабируемая платформа для полнотекстового поиска с открытым исходным кодом, построенная на библиотеке Apache Lucene. Это не СУБД, а специализированный поисковый движок, который часто используется поверх реляционных или NoSQL баз данных для реализации сложного поиска.

Типичные сценарии использования:

  • Электронная коммерция: Поиск товаров с фильтрацией по множеству атрибутов (цвет, размер, бренд, цена), фасетный поиск, поиск по синонимам («ноутбук» → «лэптоп»).
  • Каталоги и CMS: Быстрый полнотекстовый поиск по большим объемам контента (статьи, документы).
  • Аналитика и дашборды: Агрегация данных и построение фасетов для аналитических отчетов.

Ключевые особенности Solr:

  • Полнотекстовый поиск: Морфология, стемминг, поиск по синонимам, подсветка совпадений (highlighting).
  • Фасетный поиск (Faceting): Группировка результатов поиска по категориям и вычисление счетчиков.
  • Масштабируемость: Распределенный режим SolrCloud обеспечивает горизонтальное масштабирование и отказоустойчивость.
  • Гибкая схема: Определение типов полей, анализаторов токенов и правил индексирования.

Пример простого запроса к Solr через его REST API (HTTP):

# Поиск документов, где поле `title` содержит слово 'database'
curl 'http://localhost:8983/solr/my_core/select?q=title:database&facet=true&facet.field=category'

Для работы с Solr из PHP-приложений часто используют клиентскую библиотеку Solarium, которая предоставляет удобный OOP-интерфейс.