Questo è un articolo di follow-up per quello precedente. Copriremo come perfezionare la query, formulare criteri di ricerca più complessi con parametri diversi e comprendere i diversi moduli Web della pagina di query Apache Solr. Inoltre, discuteremo di come post-elaborazione del 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 funziona in background. Il risultato è che qualsiasi applicazione client può comunicare con SOLR inviando query ad esso (il focus di questo articolo), manipolando il core del documento aggiungendo, aggiornando e eliminando i dati indicizzati e ottimizzando i dati core. Esistono due opzioni: tramite interfaccia dashboard/web o utilizzando un'API inviando una richiesta corrispondente.
È comune usare il Prima opzione a fini di test e non per un accesso regolare. La figura seguente mostra la dashboard dall'interfaccia utente di amministrazione Apache Solr con i diversi moduli di query nel browser Web Firefox.
Innanzitutto, dal menu nel campo Selezione principale, scegli la voce del menu "Query". Successivamente, la dashboard visualizzerà diversi campi di input come segue:
Facendo clic sul pulsante Esegui query esegue la richiesta desiderata. Per esempi pratici, dai un'occhiata sotto.
Come il Seconda opzione, È possibile 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 di questo è connettersi ad Apache Solr tramite Java API. Questo è stato esternalizzato a un progetto separato chiamato Solrj [7] - un'API Java senza richiedere una connessione HTTP.
Sintassi delle query
La sintassi delle query è meglio descritta in [3] e [5]. I diversi nomi dei parametri corrispondono direttamente ai nomi dei campi di iscrizione nei moduli sopra spiegati. La tabella seguente li elenca, più esempi pratici.
Indice dei parametri delle query
Parametro | Descrizione | Esempio |
---|---|---|
Q | Il parametro di query principale di Apache Solr - I nomi e i valori del campo. I loro punteggi di somiglianza documentano ai termini in questo parametro. | ID: 5 Auto:*Adilla* *: X5 |
fq | Limitare il risultato impostato sui documenti superset che corrispondono al filtro, ad esempio, definiti tramite parser di query di gamma di funzioni | modello id, modello |
inizio | Offset per i risultati della pagina (inizio). Il valore predefinito di questo parametro è 0. | 5 |
file | 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 per restituire tutti i documenti nel set di risultati | modello id, modello |
Wt | Questo parametro rappresenta il tipo di scrittore di risposta che volevamo visualizzare il risultato. Il valore di questo è JSON per impostazione predefinita. | JSON XML |
Le ricerche vengono eseguite tramite HTTP OTTIENI RICHIESTA CON La stringa di query nel parametro Q. Gli esempi seguenti chiariranno come funziona. In uso è arricciatura per inviare la query a solr installata localmente.
Curl http: // localhost: 8983/solr/auto/query?Q =*:*
Curl http: // localhost: 8983/solr/auto/query?Q = id: 5
Curl http: // localhost: 8983/solr/auto/query?Q = id:*\ & fl = modello
Opzione 2 (query in singoli zecche):
Curl 'http: // localhost: 8983/solr/auto/query?Q = id:*& fl = Model '
Curl http: // localhost: 8983/solr/auto/query -d '
Q =*:*&
Ordina = Price Desc &
fl = make, modello, prezzo '
Curl http: // localhost: 8983/solr/auto/query -d '
Q =*:*&
righe = 5 &
Ordina = Price Desc &
fl = make, modello, prezzo '
Curl http: // localhost: 8983/solr/auto/query -d '
Q =*:*&
righe = 5 &
Ordina = Price Desc &
fl = make, modello, prezzo, punteggio '
Curl http: // localhost: 8983/solr/auto/query -d '
Q =*:*&
fl =*, punteggio '
Inoltre, è possibile definire il proprio gestore di richieste per inviare i parametri di richiesta opzionale al parser di query per 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 trova 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 presentata. Il parser di query standard funziona bene per le query strutturate ma è meno tollerante agli errori di sintassi. Allo stesso tempo, sia il parser di Disd e Extended Dismax di query sono ottimizzati per le domande simili al linguaggio naturale. Sono progettati per elaborare frasi semplici inserite dagli utenti e per cercare singoli termini in diversi campi utilizzando una ponderazione diversa.
Inoltre, Solr offre anche cosiddette query di funzionalità che consentono di combinare una funzione con una query per generare un punteggio di pertinenza specifico. Questi parser sono denominati parser di query di funzione e parser intervallo di funzioni. L'esempio seguente mostra quest'ultimo a scegliere tutti i set di dati per "BMW" (memorizzati nel campo dei dati) con i modelli da 318 a 323:
Curl http: // localhost: 8983/solr/auto/query -d '
Q = Make: BMW &
FQ = Modello: [da 318 a 323] '
Post-elaborazione dei risultati
L'invio di query ad Apache Solr è una parte, ma 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 del codice seguente lo dimostra per il recupero del set di dati in formato CSV per tutti gli elementi che utilizzano Curl con fuggito e:
Curl http: // localhost: 8983/solr/auto/query?Q = ID: 5 \ & WT = CSV
L'output è un elenco separato da virgola come segue:
Per ricevere il risultato come dati XML, ma i due campi di output fanno e modellano solo, eseguono la seguente query:
Curl http: // localhost: 8983/solr/auto/query?Q =*:*\ & fl = make, modello \ & wt = xml
L'output è diverso e contiene sia l'intestazione della risposta che la risposta effettiva:
Wget stampare semplicemente i dati ricevuti su stdout. Ciò consente di post-elaborazione della risposta utilizzando gli strumenti di riga di comando standard. 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 di 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 del database relazionale.
Riguardo agli Autori
Jacqui Kabeta è un ambientalista, appassionato ricercatore, allenatore e mentore. In diversi paesi africani, ha lavorato nell'industria IT e negli ambienti delle ONG.
Frank Hofmann è uno sviluppatore IT, un trainer e autore e preferisce lavorare da Berlino, Ginevra e Città del Capo. Co-autore del libro di gestione dei pacchetti Debian disponibile da DPMB.org
Collegamenti e riferimenti