To jest artykuł uzupełniający dla poprzedniego. Omówimy sposób udoskonalenia zapytania, sformułowania bardziej złożonych kryteriów wyszukiwania z różnymi parametrami i zrozumienie różnych formularzy internetowych Apache Solr Query. Omówimy również, jak przetwarzać wyniki wyszukiwania za pomocą różnych formatów wyjściowych, takich jak XML, CSV i JSON.
Zapytanie Apache Solr
Apache Solr został zaprojektowany jako aplikacja internetowa i usługa działająca w tle. W rezultacie każda aplikacja kliencka może komunikować się z SOLR, wysyłając do niej zapytania (koncentracja tego artykułu), manipulując rdzeniem dokumentów poprzez dodanie, aktualizację i usuwanie danych indeksowanych oraz optymalizując podstawowe dane. Istnieją dwie opcje - za pośrednictwem interfejsu pulpitu/internetowego lub za pomocą interfejsu API, wysyłając odpowiednie żądanie.
Często używanie pierwsza opcja Do celów testowych, a nie do regularnego dostępu. Poniższy rysunek pokazuje deskę rozdzielczą z interfejsu użytkownika administracji Apache Solr z różnymi formularzami zapytania w przeglądarce internetowej Firefox.
Po pierwsze, z menu w polu Wyboru podstawowego, wybierz wpis menu „zapytanie”. Następnie pulpit nawigacyjny wyświetli kilka pól wejściowych w następujący sposób:
Kliknięcie przycisku Execute Query uruchamia żądane żądanie. Aby uzyskać praktyczne przykłady, spójrz poniżej.
Jak druga opcja, Możesz wysłać żądanie za pomocą interfejsu API. Jest to żądanie HTTP, które można wysłać do Apache Solr przez dowolną aplikację. Solr przetwarza żądanie i zwraca odpowiedź. Specjalnym przypadkiem tego jest łączenie się z Apache Solr za pośrednictwem Java API. Zostało to zlecone na osobny projekt o nazwie Solrj [7] - Java API bez konieczności połączenia HTTP.
Składnia zapytania
Składnia zapytań najlepiej opisać 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 zawiera je, a także praktyczne przykłady.
Wskaźnik parametrów zapytania
Parametr | Opis | Przykład |
---|---|---|
Q | Główny parametr zapytania Apache Solr - nazwy i wartości pola. Ich podobieństwo wynika z dokumentu w tym parametrze. | ID: 5 Samochody:*Adilla* *: X5 |
FQ | Ogranicz ustawę wyników do dokumentów Superset, które pasują do filtra, na przykład zdefiniowane przez parser zapytania o zakres funkcji | Model Id, model |
początek | Przesunięcia dla wyników strony (początek). Domyślna wartość tego parametru to 0. | 5 |
wydziwianie | Przesunięcia wyników strony (koniec). Wartość tego parametru wynosi domyślnie 10 | 15 |
sortować | Określa listę pól oddzielonych przecinkami, na podstawie których wyniki zapytania mają zostać sortowane | Model ASC |
fl | Określa listę pól, aby zwrócić wszystkie dokumenty w zestawie wyników | Model Id, model |
wt | Ten parametr reprezentuje rodzaj pisarza odpowiedzi, który chcieliśmy wyświetlić wynik. Wartość tego jest domyślnie JSON. | JSON XML |
Wyszukiwania 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 zapytania do Solr, który jest instalowany lokalnie.
curl http: // localhost: 8983/solr/cars/zapytanie?Q =*:*
curl http: // localhost: 8983/solr/cars/zapytanie?Q = id: 5
curl http: // localhost: 8983/solr/cars/zapytanie?Q = id:*\ & fl = model
Opcja 2 (zapytanie w pojedynczych kleszkach):
curl 'http: // localhost: 8983/solr/cars/zapytanie?Q = id:*i fl = model ''
curl http: // localhost: 8983/solr/cars/zapytanie -d '
Q =*:*&
sort = cena desc i
fl = make, model, cena '
curl http: // localhost: 8983/solr/cars/zapytanie -d '
Q =*:*&
rzędy = 5 i
sort = cena desc i
fl = make, model, cena '
curl http: // localhost: 8983/solr/cars/zapytanie -d '
Q =*:*&
rzędy = 5 i
sort = cena desc i
fl = make, model, cena, wynik
curl http: // localhost: 8983/solr/cars/zapytanie -d '
Q =*:*&
fl =*, wynik
Ponadto możesz zdefiniować własny moduł obsługi żądania, aby wysłać opcjonalne parametry żądania do parsera zapytania, aby kontrolować, jakie informacje są zwracane.
Parsers z zapytaniem
Apache Solr używa tak zwanego parsera zapytania - komponentu, który tłumaczy ciąg wyszukiwania na określone instrukcje dla wyszukiwarki. Parser zapytania stoi między tobą a dokumentem, którego szukasz.
Solr jest wyposażony w różne typy parserów, które różnią. Standardowy parser zapytania działa dobrze w przypadku zapytań strukturalnych, ale jest mniej tolerancyjny w stosunku do błędów składniowych. Jednocześnie zarówno optymaliza. Są one zaprojektowane do przetwarzania prostych zwrotów wprowadzanych przez użytkowników i wyszukiwania poszczególnych warunków w kilku dziedzinach z wykorzystaniem różnych ważeń.
Ponadto Solr oferuje również tak zwane zapytania funkcyjne, które umożliwiają połączenie funkcji z zapytaniem w celu wygenerowania określonego wyniku trafności. Te parsery nazywane są parser Parser Query Funkcja i Parser zapytania. Poniższy przykład pokazuje ten ostatni, aby wybrać wszystkie zestawy danych dla „BMW” (przechowywane w polu danych) z modelami od 318 do 323:
curl http: // localhost: 8983/solr/cars/zapytanie -d '
q = Make: BMW &
fq = model: [318 do 323] '
Przetwarzanie wyników
Wysyłanie zapytań do Apache Solr jest jedną częścią, ale przetwarzanie wyniku wyszukiwania od drugiego. Po pierwsze, możesz wybrać między różnymi formatami odpowiedzi - od JSON do XML, CSV i uproszczonym formatem Ruby. Wystarczy określić odpowiedni parametr WT w zapytaniu. Poniższy przykład kodu pokazuje to w celu odzyskania zestawu danych w formacie CSV dla wszystkich elementów za pomocą curl z ucieczką i:
curl http: // localhost: 8983/solr/cars/zapytanie?Q = id: 5 \ & wt = csv
Wyjście to lista oddzielona przecinkami w następujący sposób:
Aby otrzymać wynik jako dane XML, ale dwa pola wyjściowe wytwarzają i modelują tylko, uruchom następujące zapytanie:
curl http: // localhost: 8983/solr/cars/zapytanie?q =*:*\ & fl = make, model \ & wt = xml
Wyjście jest różne i zawiera zarówno nagłówek odpowiedzi, jak i rzeczywistą odpowiedź:
Wget po prostu drukuje odebrane dane na stdout. To pozwala na przetwarzanie odpowiedzi za pomocą standardowych narzędzi wiersza poleceń. Aby wymienić kilka, zawiera to JQ [9] dla JSON, XSLTPROC, XIDEL, XMLSTARLET [10] dla XML, a także CSVKIT [11] dla formatu CSV.
Wniosek
W tym artykule pokazano różne sposoby wysyłania zapytań do Apache Solr i wyjaśnia, jak przetworzyć wynik wyszukiwania. W następnej części dowiesz się, jak używać Apache Solr do wyszukiwania w PostgreSQL, relacyjnym systemie zarządzania bazą danych.
O Autorach
Jacqui Kabeta jest ekologiem, zapalonym badaczem, trenerem i mentorem. W kilku krajach afrykańskich pracowała w środowisku IT i organizacji pozarządowych.
Frank Hofmann jest programistą IT, trenerem i autorem i woli pracować z Berlina, Genewy i Kapsztadu. Współautor książki zarządzania pakietami Debian dostępna w DPMB.org
Linki i referencje