Apache Solr
Autor | Apache Software Foundation |
---|---|
Pierwsze wydanie | 2004 |
Aktualna wersja stabilna | 8.3.1 – 3 grudnia 2019; ponad 5 lat 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
[edytuj | edytuj kod]- 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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]- ↑ Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene™. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
- ↑ a b c d e Grainger Trey, Timothy Potter, Yonik Seeley: Solr in action. Manning Cherry Hill, 2014.
- ↑ Solr Features. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
- ↑ Result Clustering. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
- ↑ Near Real Time Searching. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
- ↑ a b Solr 1.2 Changelog. Apache Software Foundation. (ang.).
- ↑ a b c d Apache Solr Release Notes. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
- ↑ Support - Solr Wiki. [dostęp 2017-01-16].
- ↑ Apache Solr - News. [dostęp 2017-01-16].
- ↑ [SOLR-6733 Umbrella issue - Solr as a standalone application - ASF JIRA]. [dostęp 2017-01-16].
- ↑ Solr 5.3 Release announcement. [dostęp 2015-09-24].
- ↑ 12 May 2022, Apache Solr™ 9.0.0 available.
- ↑ IntegratingSolr. Apache Software Foundation. [dostęp 2019-12-12]. (ang.).
- ↑ Jim Jagielski, Sally Khudairi: 20 innovative Apache projects. Opensource.com, 2019-03-26. [dostęp 2019-12-13]. (ang.).
- ↑ Erstellung einer Spring Boot-Anwendung mit Apache Solr für Suchfunktionen. 2018-12-12. [dostęp 2019-05-14].
- ↑ IntegratingSolr - Solr Wiki. [dostęp 2017-01-16].