Apache Solr – wyszukiwanie pełnotekstowe

SolrLogo

Apache Solr to serwer wyszukiwania pełnotekstowego (ang. full-text search) napisany w Javie. Oparty jest on na Apache Lucene i może bardzo szybko usprawnić wyszukiwarkę w naszej aplikacji. Możemy uzyskiwać wyniki w formatach takich jak JSON, Python, XML czy PHP. Bardzo popularne rozwiązanie, posiada funkcje facetów, jest skalowalne i potrafi wiele więcej.

1. Pobranie aplikacji

Proces instalacji przedstawiony jest na platformie Windows. Naszą przygodę z Apache Solr zacznijmy od pobrania aplikacji. Link poniżej:

http://lucene.apache.org/solr/mirrors-solr-latest-redir.html

2. Uruchomienie aplikacji

Apache Solr napisany jest w Javie, także uruchamiany jest na JVM. Po pobraniu i rozpakowaniu źródeł możemy uruchomić aplikację. Pliki do uruchomienia znajdują się w folderze /bin. Aby uruchomić Solr najlepiej odpalić sobie CMD w folderze /bin i wydać jedno z poleceń poniżej.

Domyślny sposób uruchomienia aplikacji:

solr start

Uruchomienie aplikacji na konkretnym porcie. Port 8983 jest portem domyślnym dla Solr’a:

solr start -p numer_portu

Domyślnie aplikacja uruchamia się w tle, jeśli chcemy mieć podgląd do logów używamy flagi -f (ang. foreground):

solr start -f

Przekazanie parametrów do JVM aplikacji:

solr start -a "paramtery"

Uruchomienie aplikacji z przykładowymi danymi (ang. examples):

solr start -e nazwa_przykładu

Uruchomienie aplikacji w trybie cloud z przykładowymi nodami:

solr start -e cloud

Uruchomienie aplikacji z przykładowymi danymi ukazującymi różne możliwości Solr’a:

solr start -e techproducts

Data import handler:

solr start -e dih

Przykład schema-less:

solr start -e schemaless

Uruchomienie aplikacji w trybie cloud:

solr start -c lub -cloud

Podgląd wszystkich opcji:

solr start -help

Dobra, starczy tych opcji uruchomienia i wypadałoby w końcu uruchomić aplikację!

Na potrzeby pisania artykułu wykorzystuję bazę z przykładami techproducts:

solr start -e techproducts

Polecenie to uruchomi plik solr.cmd. Od teraz możemy korzystać z serwera Apache Solr.

3. Pokaz możliwości

Aby sprawdzić czy aplikacja na pewno się uruchomiła wystarczy w przeglądarce wpisać http://localhost:8983/solr/.

Pierwsze kroki skierujmy w stronę sprawdzenia możliwości Solr’a. Wystarczy wpisać adres http://localhost:8983/solr/techproducts/browse i otrzymujemy out-of-the-box przeglądarkę produktów opartą na Velocity, na której prezentowane są różne funkcje Solr’a. Między innymi facets, highlithing, searching, czy autocomplete. Co więcej, każda z opcji podpisana jest nagłówkiem.

Highlithing – pozwala podkreślić w określony przez nas sposób (może to być na przykład znacznik <b>) szukanej frazy.

Facets – można wykorzystać do sortowania na przykład po kategorii.

Autocomplete – podpowiadanie szukanej frazy, jak w google, gdy wpiszemy pierwsze litery słowa.

solrbrowser

4. Panel administracyjny

Aby uruchomić panel administracyjny aplikacji wystarczy w przeglądarce wpisać http://localhost:8983/solr/.

SolrAdminPanel

Teraz wybierzmy stworzony przez nas przykładowy Core o nazwie techproducts.

solrcorechoose

5. Budowanie zapytań w panelu administracyjny

Po wybraniu odpowiedniego Core’a wybieramy opcję query, gdzie możemy zacząć zabawę z danymi (dane posiadamy dzięki temu, że uruchomiliśmy Solr’a z przykładowymi danymi – flaga -e).

solrcorequerychoose

Pojawiło  nam się dość mocno rozbudowane okno do tworzenia zapytań. Jest ono bardzo fajnym ułatwieniem, ponieważ nie musimy ręcznie tworzyć zapytań tylko wypisujemy odpowiednie pola i dzięki temu mamy od razu stworzony URL z zapytaniem. Utworzony URL komunikuje się z naszym serwerem i dzięki temu w naszym panelu administracyjnym mamy od razu wynik.

Po lewej stronie mamy wynik naszego zapytania. Po kliknięciu w górną belkę z całym naszym zapytaniem aplikacja przeniesie nas do przeglądarki, gdzie będziemy mieli wynik w formacie określonym poprzez pole wt. Wynik składa się minimum z dwóch części. Pierwsza z nich responseHeader zawiera informacje na temat zapytania, natomiast w drugiej części response zawarte są wyniki.

solrqueryresult

Po lewej stronie natomiast mamy wiele input boxów:

Request-Handler (qt) – adres, na który chcemy wysyłać nasze zapytania. Domyślnie jest to /select. Więcej adresów znajdziemy w pliku solrconfig.xml w sekcjach <requestHandler name=....

/select

q – czyli nasze okno to wpisywania zapytań (ang. query). Aby pobrać wszystkie wartości (podobne do select * from table w SQL) używamy: *:*.

Pierwsza wartość to nazwa pola, a druga to szukana wartość:

*:*

Szuknie elementów, które w polu name zawierają frazę “500” i przed i za tą frazą są dowolne znaki oraz wartość pola manu to “maxtor”:

name:*500*, manu:maxtor

fq – filtrowanie w naszym zapytaniu (ang. filter query).

Pobranie wszystkich elementów, w których popularność posiada wartość od 0 do 7. Można użyć znaku “*” ([5 to *]):

popularity:[0 TO 7]

sort– służy do sortowania naszych wyników. Możemy sortować rosnąco lub malejąco.

Możemy sortować poprzez podanie kilku wartości, które rozdzielone są przecinkami:

name desc, price asc

fl – lista pól, nie musimy podawać tego w query – możemy tutaj określić listę pól

Zwrócenie pola weight oraz name ze wszystkich elementów:

weight, name

wt – określamy typ zwracanych danych (ang. writer type), dostępne opcje:

  • JSON,
  • XML,
  • Python,
  • PHP,
  • CSV,
  • Ruby.

6. Zamknięcie aplikacji

Aby zastopować serwer używamy polecenia stop.

Zatrzymanie instancji na konkretnym porcie:

solr stop -p numer_portu

Jeśli chcemy zastopować wszystkie instancje:

solr stop -all

7. Więcej informacji

Jeśli chcielibyście poszerzyć swoją wiedzę zachęcam do poczytania:

Oraz do obejrzenia:

Warsaw JUG


Toruń JUG

W kolejnym wpisie pokażę jak stworzyć własną kolekcję i zabierzemy się za integrację ze Springiem!