Apache Solr

Solr
logo
Autor Apache Software Foundation
Pierwsze wydanie 2004
Aktualna wersja stabilna 8.3.1 – 3 grudnia 2019; ponad 4 lata temu[1]
Język programowania Java
System operacyjny Wieloplatformowy
Rodzaj biblioteka programistyczna (indeksowanie i wyszukiwanie danych tekstowych)
Licencja Apache License
Strona internetowa

Solr (wym. „solar”) – otwartoźródłowa platforma wyszukiwania, napisana w Javie, będąca częścią projektu Apache Lucene[2]. Główne możliwości platformy Solr obejmują: wyszukiwanie pełnotekstowe (z funkcjami typu wyróżnianie trafień, sugestie terminów oraz sprawdzanie pisowni), wykrywanie języka, wyszukiwanie fasetowe (ang. faceted search), dynamiczne klastrowanie oraz obsługę formatów takich jak np. MS Word (doc/docx) czy PDF (ang. rich documents support)[3][4]. Indeksowanie danych następuje w czasie bliskim do rzeczywistego (ang. near real time, NRT)[5].

Solr został zaprojektowany pod kątem skalowalności i odporności na uszkodzenia (funkcje wyszukiwania rozproszonego i replikacji indeksu). Solr jest szeroko stosowany w systemach wyszukiwania korporacyjnego i analiz, ma aktywną społeczność programistów i regularne wydania.

Zarówno Apache Lucene jak i Apache Solr są obecnie rozwijane przez ten sam zespół programistów w Apache Software Foundation.

Historia

  • 2004: Pierwsza wersja projektu Solr zostaje stworzona przez Yonika Seeleya (z firmy CNET Networks) jako wewnętrzny projekt mający na celu zwiększenie możliwości wyszukiwania na stronie internetowej firmy[2],
  • styczeń 2006: CNET Networks postawia opublikować kod źródłowy jako „open source”, przekazując go na rzecz Apache Software Foundation (ASF). Jak każdy nowy projekt Apache, wkroczył w okres tzw. inkubacji (pierwszy okres działania projektu w ramach ASF, który ma pomóc m.in. rozwiązać problemy organizacyjne, prawne i finansowe). Solr jest zarządzany przez komitet zarządzający Lucene lecz jest odrębnym projektem[2],
  • grudzień 2006: Solr 1.1: pierwsza wersja po przejściu do stanu inkubacji[6],
  • styczeń 2007: Solr przechodzi ze stanu inkubacji do samodzielnego projektu najwyższego poziomu (TLP),
  • czerwiec 2007: Solr 1.2: szereg udoskonaleń i rozszerzeń[6],
  • wrzesień 2008: Solr 1.3: dodano funkcje wyszukiwania rozproszonego i ulepszenia wydajności i in.[7],
  • listopad 2009: Solr 1.4: ulepszenia w zakresie indeksowania, wyszukiwania i przetwarzanie dokumentów takich jak PDF, Word, HTML z użyciem Apache Tika[7],
  • w styczniu 2009 roku Yonik Seeley wraz z Grantem Ingersollem i Erikiem Hatcherem dołączyli do Lucidworks (wcześniej Lucid Imagination), pierwszej firmy zapewniającej komercyjne wsparcie i szkolenia dla technologii wyszukiwania Apache Solr. Od tego czasu oferta wsparcia dla Solr jest bardzo bogata[8],
  • marzec 2010: połączenie projektów Lucene i Solr (Solr staje się podprojektem Lucene)[2]. Oddzielne pobieranie było kontynuowane, ale produkty były teraz wspólnie rozwijane przez jeden zestaw commitów,
  • 2011: Solr 3.1: zmiana schematu numerowania wersji Solr, aby pasował do schematu Lucene, stąd po Solr 1.4 kolejna wersja Solr ma wersję 3.1,
  • 2012: Solr 4.0: rozszerzenia zestawu funkcji w tym API Solra oraz dodanie funkcji SolrCloud (rozproszony indeks)[2][7],
  • 2013-2014: pojawia się wiele wydań Solr z linii 4.x: rozszerzanie zestawu funkcji, poprawa niezawodności,
  • w lutym 2015 roku wydano Solr 5.0[9], pierwszą wersję, w której Solr jest spakowany jako samodzielna aplikacja[10], kończąc oficjalne wsparcie dla wdrażania Solr jako WAR. Solr 5.3 posiadał wbudowaną, wtykową strukturę uwierzytelniania i autoryzacji[11],
  • kwiecień 2016: Solr 6.0: dodano m.in. obsługę wykonywania równoległych zapytań SQL w kolekcjach SolrCloud,
  • wrzesień 2017: Solr 7.0: dodano m.in. obsługę wielu typów replik, automatycznego skalowania i obsługę silnika matematycznego,
  • marzec 2019: Solr 8.0: węzły Solr mogą teraz nasłuchiwać i obsługiwać żądania HTTP/2. Dodano login interfejsu administratora z obsługą BasicAuth i Kerberos[7],
  • w maju 2022 roku wydano Solr 9.0[12], jako pierwszą wersję niezależną od Lucene, wymagającą Java 11, z takimi atrakcjami jak wyszukiwanie "neuronowe" KNN, lepsza modularyzacja, więcej wtyczek bezpieczeństwa i nie tylko.

Sposób działania i użycie

Solr działa jako samodzielny serwer wyszukiwania pełnotekstowego. Jako silnik do indeksowania i wyszukiwania pełnotekstowego wykorzystuje bibliotekę wyszukiwania Apache Lucene (która w ramach wspólnego projektu nosi nazwę Lucene-core). Udostępnia interfejsy API oparte na HTTP + JSON / XML podobne do podejścia REST (ang. REST-like), co pozwala na łatwą integrację z aplikacjami i serwisami bez konieczności kodowania w języku Java. Dzięki zastosowanej architekturze „wtyczek” pozwala rozszerzanie jego funkcji i dostosowanie do wielu rodzajów aplikacji. Dla platformy Solr jest dostępnych szereg bibliotek klienckich m.in. dla języków C++, C#, Java, PHP, Python, Ruby, Scala i innych[13].

Aby przeszukać dokument, Apache Solr wykonuje kolejno następujące operacje:

  • Indeksowanie: konwersja dokumentu na format umożliwiający późniejsze szybkie wyszukiwanie dokumentu.
  • Zapytanie: interpretacja zapytania zadanego przez użytkownika (np. listy słów kluczowych)
  • Mapowanie: mapowanie zapytania użytkownika na indeksowane dokumenty, aby znaleźć odpowiedni wynik.
  • Ranking wyniku: po wyszukaniu wyników (dokumentów), sortuje wyniki według ich trafności.

Użytkownicy systemu Solr

Solr jest używany m.in. przez firmy Adobe, AOL, Apple, AT&T, Bank of America, Bloomberg, Cisco, Disney, E-Trade, Ford, The Guardian, Instagram, MTV Networks, Netflix, SourceForge, Verizon, Walmart i Zappos, jak również przez serwisy instytucji takich jak Departament Bezpieczeństwa Krajowego Stanów Zjednoczonych, NASA Planetary Data System oraz Whitehouse.gov[14].

Solr udostępnia standardowe interfejsy API HTTP typu REST z obsługą XML i JSON i integruje się z dowolnym systemem lub językiem programowania obsługującym te standardy[15]. Dla ułatwienia dostępne są również biblioteki klienckie dla Java, C#, PHP, Python, Ruby i większości innych popularnych języków programowania[16].

Przypisy

  1. Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene™. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
  2. a b c d e Grainger Trey, Timothy Potter, Yonik Seeley: Solr in action. Manning Cherry Hill, 2014.
  3. Solr Features. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
  4. Result Clustering. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
  5. Near Real Time Searching. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
  6. a b Solr 1.2 Changelog. Apache Software Foundation. (ang.).
  7. a b c d Apache Solr Release Notes. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
  8. Support - Solr Wiki. [dostęp 2017-01-16].
  9. Apache Solr - News. [dostęp 2017-01-16].
  10. [SOLR-6733 Umbrella issue - Solr as a standalone application - ASF JIRA]. [dostęp 2017-01-16].
  11. Solr 5.3 Release announcement. [dostęp 2015-09-24].
  12. 12 May 2022, Apache Solr™ 9.0.0 available.
  13. IntegratingSolr. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
  14. Jim Jagielski, Sally Khudairi: 20 innovative Apache projects. Opensource.com, 2019-03-26. [dostęp 2019-12-13]. (ang.).
  15. Erstellung einer Spring Boot-Anwendung mit Apache Solr für Suchfunktionen. 2018-12-12. [dostęp 2019-05-14].
  16. IntegratingSolr - Solr Wiki. [dostęp 2017-01-16].