Apache Solr

Introduzione ad Apache Solr. Parte 2 Interrogazione di Solr

Introduzione ad Apache Solr. Parte 2 Interrogazione di Solr
Apache Solr [1] è un framework per motori di ricerca scritto in Java e basato sulla libreria di ricerca Lucene [6]. Nell'articolo precedente, abbiamo installato Apache Solr sulla Debian GNU/Linux 11, di prossima uscita, avviato un singolo core di dati, caricato dati di esempio e dimostrato come eseguire una ricerca di base all'interno del set di dati utilizzando un semplice interrogazione.

Questo è un articolo successivo al precedente. Tratteremo come perfezionare la query, formulare criteri di ricerca più complessi con parametri diversi e comprendere i diversi moduli web della pagina di query di Apache Solr. Inoltre, discuteremo come post-elaborare il risultato della ricerca utilizzando diversi formati di output come XML, CSV e JSON.

Interrogazione di Apache Solr

Apache Solr è progettato come un'applicazione Web e un servizio che viene eseguito in background. Il risultato è che qualsiasi applicazione client può comunicare con Solr inviando query (l'argomento di questo articolo), manipolando il nucleo del documento aggiungendo, aggiornando ed eliminando i dati indicizzati e ottimizzando i dati principali. Ci sono due opzioni: tramite dashboard/interfaccia web o utilizzando un'API inviando una richiesta corrispondente.

È comune usare il prima opzione a scopo di test e non per l'accesso regolare. La figura seguente mostra la Dashboard dall'interfaccia utente di amministrazione di Apache Solr con i diversi moduli di query nel browser Web Firefox.

Innanzitutto, dal menu sotto il campo di selezione principale, scegli la voce di menu "Query". Successivamente, la dashboard visualizzerà diversi campi di input come segue:

Facendo clic sul pulsante Esegui query viene eseguita la richiesta desiderata. Per esempi pratici, dai un'occhiata qui sotto.

Come la seconda opzione, puoi inviare una richiesta utilizzando un'API. Questa è una richiesta HTTP che può essere inviata ad Apache Solr da qualsiasi applicazione. Solr elabora la richiesta e restituisce una risposta. Un caso speciale è la connessione ad Apache Solr tramite API Java. Questo è stato esternalizzato a un progetto separato chiamato SolrJ [7] - un'API Java senza richiedere una connessione HTTP.

Sintassi della query

La sintassi della query è meglio descritta in [3] e [5]. I diversi nomi dei parametri corrispondono direttamente ai nomi dei campi di immissione nei moduli spiegati sopra. La tabella seguente li elenca, più esempi pratici.

Indice dei parametri di query

Parametro Descrizione Esempio
q Il principale parametro di query di Apache Solr: i nomi e i valori dei campi. I loro punteggi di somiglianza documentano i termini in questo parametro. ID: 5
auto:*adilla*
*:X5
fq Limita il set di risultati ai documenti superset che corrispondono al filtro, ad esempio definito tramite Function Range Query Parser modello
ID, modello
inizio Scostamenti per i risultati della pagina (inizio). Il valore predefinito di questo parametro è 0. 5
righe Offset per i risultati della pagina (fine). Il valore di questo parametro è 10 per impostazione predefinita 15
ordinare Specifica l'elenco dei campi separati da virgole, in base ai quali devono essere ordinati i risultati della query modello asc
fl Specifica l'elenco dei campi da restituire per tutti i documenti nel set di risultati modello
ID, modello
wt Questo parametro rappresenta il tipo di scrittore di risposte di cui volevamo visualizzare il risultato. Il valore di questo è JSON per impostazione predefinita. json
xml

Le ricerche vengono eseguite tramite la richiesta HTTP GET con la stringa di query nel parametro q. Gli esempi seguenti chiariranno come funziona. In uso è curl per inviare la query a Solr che è installato localmente.

Inoltre, puoi definire il tuo gestore di richiesta per inviare i parametri di richiesta facoltativi al parser di query al fine di controllare quali informazioni vengono restituite.

Parser di query

Apache Solr utilizza un cosiddetto parser di query, un componente che traduce la stringa di ricerca in istruzioni specifiche per il motore di ricerca. Un parser di query si frappone tra te e il documento che stai cercando.

Solr viene fornito con una varietà di tipi di parser che differiscono nel modo in cui viene gestita una query inviata. Lo Standard Query Parser funziona bene per le query strutturate ma è meno tollerante nei confronti degli errori di sintassi. Allo stesso tempo, sia DisMax che DisMax Query Parser esteso sono ottimizzati per query simili al linguaggio naturale. Sono progettati per elaborare semplici frasi immesse dagli utenti e per cercare termini individuali in più campi utilizzando pesi diversi.

Inoltre, Solr offre anche le cosiddette Function Query che consentono di combinare una funzione con una query al fine di generare uno specifico punteggio di pertinenza. Questi parser sono denominati Function Query Parser e Function Range Query Parser. L'esempio seguente mostra quest'ultimo per selezionare tutti i set di dati per "bmw" (memorizzati nel campo dati marca) con i modelli dal 318 al 323:

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

Post-elaborazione dei risultati

L'invio di query ad Apache Solr è una parte, ma la post-elaborazione del risultato della ricerca dall'altra. Innanzitutto, puoi scegliere tra diversi formati di risposta: da JSON a XML, CSV e un formato Ruby semplificato. Specificare semplicemente il parametro wt corrispondente in una query. L'esempio di codice seguente lo dimostra per recuperare il set di dati in formato CSV per tutti gli elementi che utilizzano curl con escape &:

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

L'output è un elenco separato da virgole come segue:

Per ricevere il risultato come dati XML ma solo i due campi di output make e model, eseguire la seguente query:

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

L'output è diverso e contiene sia l'intestazione della risposta che la risposta effettiva:

Wget stampa semplicemente i dati ricevuti su stdout. Ciò consente di post-elaborare la risposta utilizzando gli strumenti standard della riga di comando. Per elencarne alcuni, questo contiene jq [9] per JSON, xsltproc, xidel, xmlstarlet [10] per XML e csvkit [11] per il formato CSV.

Conclusione

Questo articolo mostra diversi modi per inviare query ad Apache Solr e spiega come elaborare il risultato della ricerca. Nella parte successiva imparerai come utilizzare Apache Solr per cercare in PostgreSQL, un sistema di gestione di database relazionali.

Riguardo agli Autori

Jacqui Kabeta è un ambientalista, avido ricercatore, formatore e mentore. In diversi paesi africani, ha lavorato nel settore IT e negli ambienti delle ONG.

Frank Hofmann è uno sviluppatore IT, formatore e autore e preferisce lavorare a Berlino, Ginevra e Città del Capo. Coautore del libro sulla gestione dei pacchetti Debian disponibile da dpmb.organizzazione

Link e riferimenti

OpenTTD vs Simutrans
Creare la tua simulazione di trasporto può essere divertente, rilassante ed estremamente allettante. Ecco perché devi assicurarti di provare quanti pi...
Tutorial OpenTTD
OpenTTD è uno dei giochi di simulazione aziendale più popolari in circolazione. In questo gioco, devi creare una meravigliosa attività di trasporto. T...
SuperTuxKart per Linux
SuperTuxKart è un fantastico titolo progettato per offrirti l'esperienza di Mario Kart gratuitamente sul tuo sistema Linux. È piuttosto impegnativo e ...