Solr
Solr (pełna nazwa Apache Solr) to otwarto‑źródłowy system wyszukiwania i indeksowania danych, oparty na bibliotece Apache Lucene. Umożliwia szybkie przeszukiwanie dużych zbiorów dokumentów tekstowych oraz wspiera funkcje takie jak faceting, fuzzy search, podpowiedzi czy analiza semantyczna.
Historia
Projekt Solr został zapoczątkowany w 2004 roku w Yahoo! jako wewnętrzne narzędzie do wyszukiwania treści internetowych. W 2006 roku kod źródłowy został przekazany pod licencję Apache i od tego czasu rozwijany jest przez społeczność pod sztandarem Apache Software Foundation. Do najważniejszych wersji należą Solr 4.0 (wprowadzony w 2012 roku) oraz Solr 8.x, a od 2020 roku dostępna jest również wersja SolrCloud umożliwiająca skalowanie poziome.
Architektura
Solr jest aplikacją napisaną w języku Java i udostępnia interfejsy komunikacyjne oparte na protokole HTTP. Działa jako serwer webowy (często wdrażany w kontenerze Jetty lub Tomcat) oraz jako część architektury SolrCloud zapewniającej replikację i podział danych.
Kluczowe komponenty
- Core – niezależny zestaw indeksu i konfiguracji; jeden serwer może hostować wiele core’ów.
- Schema – opisuje strukturę dokumentów (pola, typy danych, analizatory).
- Query Parser – przetwarza zapytania użytkownika (np. Standard Query Parser, DisMax, eDisMax).
- Faceting – generowanie zbiorczych statystyk (np. liczb wystąpień wartości w polu).
- Highlighting – podświetlanie fragmentów tekstu pasujących do zapytania.
- Replication i Sharding – mechanizmy replikacji i podziału indeksu w trybie SolrCloud.
Funkcje
- Wyszukiwanie pełnotekstowe (full‑text search) z obsługą analizatorów językowych.
- Obsługa zapytań w formacie JSON i XML.
- REST‑owy interfejs API (REST API) umożliwiający operacje CRUD oraz zapytania.
- Możliwość indeksowania dokumentów w formacie CSV, JSON, XML, binary (np. PDF, Word).
- Faceting i pivoting – dynamiczne grupowanie wyników.
- Spell checking i sugestie (Suggester).
- Geolokalizacja – wyszukiwanie po współrzędnych geograficznych.
- Bezpieczeństwo – autoryzacja i autentykacja przy pomocy Kerberos, LDAP lub tokenów JWT.
- Integracja z kontenerami Docker i platformą Kubernetes w celu łatwego wdrażania.
Zastosowania
Solr jest wykorzystywany w wielu obszarach, w tym:
- Wyszukiwarki witryn internetowych i portalów (e‑commerce, media).
- Systemy zarządzania treścią (CMS).
- Analiza logów i danych telemetrycznych.
- Wewnętrzne systemy wyszukiwania w przedsiębiorstwach (intranet).
- Platformy analityczne i Business Intelligence.
Porównanie z innymi rozwiązaniami
Najczęściej Solr porównywany jest z Elasticsearch. Oba systemy bazują na Lucene, jednak różnią się pod względem:
- Modelu dystrybucji – SolrCloud używa Zookeeper jako koordynatora, natomiast Elasticsearch posiada własny mechanizm klastrowania.
- Środowiska konfiguracyjnego – Solr korzysta z plików XML, Elasticsearch z JSON/YAML.
- Ekosystemu – Solr jest bardziej skoncentrowany na klasycznym indeksowaniu, Elasticsearch na analizie czasu rzeczywistego i agility.
Wersje i rozwój
Główne serie wersji Solr:
- Solr 5.x – wprowadzenie SolrCloud jako domyślnej opcji.
- Solr 6.x – ulepszenia w zakresie pamięci i wydajności, wsparcie dla Managed Schema.
- Solr 7.x – optymalizacje zapytań i lepsza integracja z Dockerem.
- Solr 8.x – wprowadzenie Hybrid Search, ulepszone funkcje bezpieczeństwa.
- Solr 9.x (aktualna wersja w 2026 roku) – dalsze przyspieszenia indeksowania, wsparcie dla SQL i GraphQL w warstwie zapytań.
Licencja
Solr jest udostępniany na licencji Apache License 2.0, co pozwala na dowolne wykorzystywanie, modyfikowanie i dystrybucję zarówno w projektach komercyjnych, jak i niekomercyjnych.
Przykładowe użycie
curl http://localhost:8983/solr/collection1/select?q=solr&wt=json
Powyższe zapytanie zwraca wyniki w formacie JSON z kolekcji collection1.