Apache Solr

Wprowadzenie do Apache Solr. Część 2 Zapytania Solr

Wprowadzenie do Apache Solr. Część 2 Zapytania Solr
Apache Solr [1] to framework wyszukiwarek napisany w Javie i oparty na bibliotece wyszukiwania Lucene [6]. W poprzednim artykule skonfigurowaliśmy Apache Solr na niedługo wydanym Debian GNU/Linux 11, zainicjowaliśmy pojedynczy rdzeń danych, wgraliśmy przykładowe dane i pokazaliśmy, jak przeprowadzić podstawowe wyszukiwanie w zbiorze danych za pomocą prostego pytanie.

To jest kontynuacja poprzedniego artykułu. Omówimy, jak doprecyzować zapytanie, sformułować bardziej złożone kryteria wyszukiwania z różnymi parametrami i zrozumieć różne formularze internetowe na stronie Apache Solr. Omówimy również, jak przetworzyć wynik wyszukiwania przy użyciu różnych formatów wyjściowych, takich jak XML, CSV i JSON.

Odpytywanie Apache Solr

Apache Solr jest zaprojektowany jako aplikacja internetowa i usługa działająca w tle. W rezultacie dowolna aplikacja kliencka może komunikować się z Solr poprzez wysyłanie do niej zapytań (przedmiot tego artykułu), manipulowanie rdzeniem dokumentu poprzez dodawanie, aktualizowanie i usuwanie zaindeksowanych danych oraz optymalizację danych podstawowych. Dostępne są dwie opcje - za pośrednictwem pulpitu nawigacyjnego/interfejsu internetowego lub za pomocą interfejsu API poprzez wysłanie odpowiedniego żądania.

Powszechnie używa się pierwsza opcja do celów testowych, a nie do regularnego dostępu. Poniższy rysunek przedstawia Dashboard z Administracyjnego Interfejsu Użytkownika Apache Solr z różnymi formularzami zapytań w przeglądarce internetowej Firefox.

Najpierw z menu pod polem wyboru rdzenia wybierz pozycję menu „Zapytanie”. Następnie panel wyświetli kilka pól wejściowych w następujący sposób:

Kliknięcie przycisku Wykonaj zapytanie uruchamia żądane żądanie. Praktyczne przykłady znajdziesz poniżej.

Jako druga opcja, możesz wysłać zapytanie za pomocą API. Jest to żądanie HTTP, które może zostać wysłane do Apache Solr przez dowolną aplikację. Solr przetwarza żądanie i zwraca odpowiedź. Szczególnym przypadkiem jest połączenie z Apache Solr przez Java API. Zostało to zlecone do osobnego projektu o nazwie SolrJ [7] - Java API bez konieczności połączenia HTTP.

Składnia zapytania

Składnia zapytania jest najlepiej opisana w [3] i [5]. Różne nazwy parametrów bezpośrednio odpowiadają nazwom pól wprowadzania w formularzach wyjaśnionych powyżej. Poniższa tabela przedstawia je wraz z praktycznymi przykładami.

Indeks parametrów zapytania

Parametr Opis Przykład
q Główny parametr zapytania Apache Solr - nazwy pól i wartości. Ich wyniki podobieństwa dokumentują terminy w tym parametrze. Id: 5
samochody:*adilla*
*:X5
fq Ogranicz zbiór wyników do dokumentów nadzbioru, które pasują do filtra, na przykład zdefiniowanego za pomocą funkcji Analizator zapytań o zakres funkcji Model
identyfikator, model
początek Przesunięcia wyników na stronie (początek). Domyślna wartość tego parametru to 0. 5
wydziwianie Przesunięcia wyników na stronie (koniec). Wartość tego parametru to domyślnie 10 15
sortować Określa listę pól oddzielonych przecinkami, według których mają być sortowane wyniki zapytania model asc
fl Określa listę pól do zwrócenia dla wszystkich dokumentów w zestawie wyników Model
identyfikator, model
wt Ten parametr reprezentuje typ programu do zapisywania odpowiedzi, który chcieliśmy wyświetlić w wyniku. Wartość tego to domyślnie JSON. json
xml

Wyszukiwanie odbywa się za pośrednictwem żądania HTTP GET z ciągiem zapytania w parametrze q. Poniższe przykłady wyjaśnią, jak to działa. W użyciu jest curl do wysyłania zapytań do Solr, który jest instalowany lokalnie.

Ponadto możesz zdefiniować własny program obsługi żądań, aby wysyłać opcjonalne parametry żądania do parsera zapytań, aby kontrolować, jakie informacje są zwracane.

Parsery zapytań

Apache Solr używa tzw. parsera zapytań - komponentu, który tłumaczy wyszukiwany ciąg na konkretne instrukcje dla wyszukiwarki. Parser zapytań stoi między Tobą a dokumentem, którego szukasz.

Solr zawiera różne typy parserów, które różnią się sposobem obsługi przesłanego zapytania. Analizator zapytań standardowych działa dobrze w przypadku zapytań strukturalnych, ale jest mniej odporny na błędy składniowe. Jednocześnie zarówno DisMax, jak i Extended DisMax Query Parser są zoptymalizowane pod kątem zapytań podobnych do języka naturalnego. Służą do przetwarzania prostych fraz wprowadzanych przez użytkowników i wyszukiwania poszczególnych terminów w kilku polach przy użyciu różnych wag.

Ponadto Solr oferuje również tzw. Zapytania Funkcyjne, które umożliwiają połączenie funkcji z zapytaniem w celu wygenerowania określonego wyniku istotności. Te parsery noszą nazwy Function Query Parser i Function Range Query Parser. Poniższy przykład pokazuje ten ostatni, który wybiera wszystkie zestawy danych dla „bmw” (przechowywane w polu danych marki) z modelami od 318 do 323:

curl http://localhost:8983/solr/cars/query -d '
q=make:bmw&
fq=model:[318 TO 323] '

Przetwarzanie końcowe wyników

Wysyłanie zapytań do Apache Solr to jedna część, ale post-processing wyników wyszukiwania z drugiej. Po pierwsze, możesz wybierać między różnymi formatami odpowiedzi - od JSON do XML, CSV i uproszczonego formatu Ruby. Po prostu określ odpowiedni parametr wt w zapytaniu. Poniższy przykład kodu demonstruje to, aby pobrać zestaw danych w formacie CSV dla wszystkich elementów używających curl z eskejpowanymi &:

curl http://localhost:8983/solr/cars/query?q=id:5\&wt=csv

Dane wyjściowe to lista oddzielona przecinkami w następujący sposób:

Aby otrzymać wynik jako dane XML, ale tylko dwa pola wyjściowe make i model, uruchom następujące zapytanie:

curl http://localhost:8983/solr/cars/query?q=*:*\&fl=make,model\&wt=xml

Dane wyjściowe są inne i zawierają zarówno nagłówek odpowiedzi, jak i rzeczywistą odpowiedź:

Wget po prostu wypisuje otrzymane dane na standardowe wyjście. Pozwala to na przetwarzanie końcowe odpowiedzi przy użyciu standardowych narzędzi wiersza poleceń. Aby wymienić kilka, zawiera jq [9] dla JSON, xsltproc, xidel, xmlstarlet [10] dla XML oraz csvkit [11] dla formatu CSV.

Wniosek

Ten artykuł pokazuje różne sposoby wysyłania zapytań do Apache Solr i wyjaśnia, jak przetworzyć wynik wyszukiwania. W kolejnej części dowiesz się, jak używać Apache Solr do wyszukiwania w PostgreSQL, systemie zarządzania relacyjnymi bazami danych.

O Autorach

Jacqui Kabeta jest ekologiem, zapalonym badaczem, trenerem i mentorem. W kilku krajach afrykańskich pracowała w branży IT i środowiskach NGO.

Frank Hofmann jest programistą IT, trenerem i autorem i woli pracować w Berlinie, Genewie i Kapsztadzie. Współautor książki o zarządzaniu pakietami Debiana dostępnej w dpmb.organizacja

Linki i referencje

Gry Jak zwiększyć FPS w Linuksie??
Jak zwiększyć FPS w Linuksie??
FPS oznacza Klatki na sekundę. Zadaniem FPS jest pomiar liczby klatek na sekundę podczas odtwarzania wideo lub wydajności gier. W prostych słowach lic...
Gry Najlepsze gry w laboratorium aplikacji Oculus
Najlepsze gry w laboratorium aplikacji Oculus
Jeśli jesteś posiadaczem gogli Oculus, musisz wiedzieć o sideloadingu. Sideloading to proces instalowania w zestawie nagłownym treści innych niż sklep...
Gry Top 10 Games to Play on Ubuntu
Top 10 Games to Play on Ubuntu
Windows platform has been one of the dominating platforms for gaming because of the huge percentage of games that are developing today to natively sup...