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

Wprowadzenie do Apache Solr. Część 2 Zapytanie Solr
Apache Solr [1] to ramy wyszukiwarki napisane w Javie i oparte 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, przesłane przykładowe dane i pokazaliśmy, jak przeprowadzić podstawowe wyszukiwanie w zestawie danych za pomocą prostego zapytanie.

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:

  • Prowadzący żądanie (QT):
    Zdefiniuj, jaki rodzaj prośby chcesz wysłać do Solr. Możesz wybrać między domyślnymi obsługami żądań „/wybierz” (dane indeksowane zapytanie), „/aktualizacja” (aktualizacja danych indeksowanych) i „/delete” (usuń określone dane indeksowane) lub samozdefiniowaną.
  • Wydarzenie zapytania (q):
    Zdefiniuj, które nazwy i wartości pola należy wybrać.
  • Filtr zapytania (FQ):
    Ogranicz Superset dokumentów, które można zwrócić bez wpływu na wynik dokumentu.
  • Sortowanie zamówienia (sort):
    Zdefiniuj kolejność sortowania wyników zapytania w celu wznoszenia lub schodzenia
  • Okno wyjściowe (początek i wiersze):
    Ogranicz wyjście do określonych elementów
  • Lista pola (FL):
    Ogranicza informacje zawarte w odpowiedzi zapytania na określoną listę pól.
  • Format wyjściowy (WT):
    Zdefiniuj pożądany format wyjściowy. Wartość domyślna to JSON.

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.

  • Odzyskać wszystkie zestawy danych z samochodów podstawowych
    curl http: // localhost: 8983/solr/cars/zapytanie?Q =*:*
  • Odzyskać wszystkie zestawy danych z samochodów podstawowych, które mają identyfikator 5
    curl http: // localhost: 8983/solr/cars/zapytanie?Q = id: 5
  • Odzyskać model pola ze wszystkich zestawów danych Core Cars
    Opcja 1 (z ucieczką i):
    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 ''
  • Odzyskaj wszystkie zestawy danych podstawowych samochodów posortowane według ceny w kolejności malejącej i wyprowadzaj tylko pola, model i cenę (wersja w pojedynczych kleszkach):
    curl http: // localhost: 8983/solr/cars/zapytanie -d '
    Q =*:*&
    sort = cena desc i
    fl = make, model, cena '
  • Odzyskaj pierwsze pięć zestawów danych Core Scars posortowanych według ceny w kolejności malejącej i wyprowadzaj tylko pola, model i cena (wersja w pojedynczych kleszkach):
    curl http: // localhost: 8983/solr/cars/zapytanie -d '
    Q =*:*&
    rzędy = 5 i
    sort = cena desc i
    fl = make, model, cena '
  • Pobierz pierwsze pięć zestawów danych Core Sans posortowanych według ceny w kolejności malejącej i wyprowadzaj pola tworzące, model i cenę plus jego wynik, tylko (wersja w pojedynczych kleszkach):
    curl http: // localhost: 8983/solr/cars/zapytanie -d '
    Q =*:*&
    rzędy = 5 i
    sort = cena desc i
    fl = make, model, cena, wynik
  • Zwróć wszystkie przechowywane pola, a także wynik trafności:
    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

  • [1] Apache Solr, https: // Lucene.Apache.org/solr/
  • [2] Frank Hofmann i Jacqui Kabeta: Wprowadzenie do Apache Solr. Część 1, http: // linuxhint.com
  • [3] Yonik Seelay: Składnia zapytań solr, http: // yonik.com/solr/query-syntax/
  • [4] Yonik Seelay: Solr Tutorial, http: // yonik.COM/SOLR-TUTORIAL/
  • [5] Apache Solr: Zapytanie danych, samouczek, https: // www.Tutorialspoint.com/apache_solr/apache_solr_querying_data.HTM
  • [6] Lucene, https: // Lucene.Apache.org/
  • [7] Solrj, https: // Lucene.Apache.org/solr/instrukcja/8_8/za pomocą solrj.html
  • [8] curl, https: // curl.se/
  • [9] JQ, https: // github.com/stedolan/jq
  • [10] xmlstarlet, http: // xmlstar.Źródło.internet/
  • [11] csvkit, https: // csvkit.ReadThedocs.IO/en/najnowszy/