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
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 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 edytuj

  • 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],
  • marzec 2010: połączenie projektów Lucene i Solr (Solr staje się podprojektem Lucene)[2],
  • 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,
  • luty 2015: Solr 5.0: pierwsze wydanie, w którym Solr jest spakowany jako samodzielna aplikacja,
  • 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].

Sposób działania i użycie edytuj

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[8].

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 edytuj

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[9].

Przypisy edytuj

  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. IntegratingSolr. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
  9. Jim Jagielski, Sally Khudairi: 20 innovative Apache projects. Opensource.com, 2019-03-26. [dostęp 2019-12-13]. (ang.).