Introduzione ad Apache Solr

Mattepuffo's logo
Introduzione ad Apache Solr

Introduzione ad Apache Solr

Da Wikipedia:

Apache Solr (pronunciato come /soʊlə/,/soʊlər/, soh-lər) è una piattaforma di ricerca open source del progetto Apache Lucene, in origine creato nel 2004 da Yonik Seeley alla CNET Networks. La sua caratteristica principale è la presenza di ricerca full text, hit highlighting, faceted search, raggruppamento dinamico, integrazione con le basi di dati, gestione di documenti "ricchi" (come documenti word e pdf). Fornisce una ricerca distribuita e la replicazione dell'indice. Solr è altamente scalabile.

Visto che di base non è difficile da installare, configurare ed usare, ho deciso di dargli un'occhiata.

Inoltre, da quanto ho capito, è anche possibile connetterlo a vari database, oltre al fatto che crea già un servizio REST completo, e questo lo rende ancora più interessante.

Vediamo quindi come installarlo e configurarlo; i comandi saranno per Linux, ma dovrebbe essere semplice esportarli per altri OS.

Prima di tutto scaricatelo dal sito web ufficiale; scompattate l'archivio e spostatevi con il terminale dentro alla directory bin (io ho messo tutto nella home):

$ cd /home/matte/solr-6.5.1/bin

Qui abbiamo i vari eseguibili; per vedere lo stato del server:

$ ./solr status

No Solr nodes are running.

Per avviarlo:

$ ./solr start
Waiting up to 180 seconds to see Solr running on port 8983 [|]
Started Solr server on port 8983 (pid=5388). Happy searching!

A questo punto puntate il browser su http://localhost:8983/ per aprire il pannello di amministrazione.

Riverifichiamo anche lo stato:

$ ./solr status

Found 1 Solr nodes:

Solr process 5388 running on port 8983
{
"solr_home":"/home/matte/solr-6.5.1/server/solr",
"version":"6.5.1 cd1f23c63abe03ae650c75ec8ccb37762806cc75 - 
jimczi - 2017-04-21 12:23:42",
"startTime":"2017-05-10T13:07:07.463Z",
"uptime":"0 days, 0 hours, 1 minutes, 57 seconds",
"memory":"42.7 MB (%8.7) of 490.7 MB"}

L'unità più importante sono i cosidetti Core; per crearne uno possiamo agire tramite:

  • riga di comando
  • pannello di amministrazione
  • REST API
  • CURL

Noi useremo la riga di comando:

$ ./solr create -c TEST_CORE

Copying configuration to new core instance directory:
/home/matte/solr-6.5.1/server/solr/TEST_CORE

Creating new core 'TEST_CORE' using command:
http://localhost:8983/solr/admin/cores?action=CREATE&name=TEST_CORE&instanceDir=TEST_CORE

{
"responseHeader":{
"status":0,
"QTime":1877},
"core":"TEST_CORE"}

Come vedete, viene anche indicata la sintassi per l'API REST, anche se a voi non serve, in quanto il Core è già stato creato.

Infatti adesso lo trovate disponibile anche nel pannello web.

Una volta creato un Core, possiamo aggiungere documenti.

Nel pannello di admin, sulla parte sinisra, selezionatelo dal menu a tendina.

Poi andate in Documents, e scegliete File Upload come Document type.

Solr arriva già con un pò di file di esempio; li trovate nella cartella di installazione (cartella example).

Provate a caricarne qualcuno.

Una volta caricati, possiamo interrogarli.

Nella schermata Query, cliccate sul pulsante Execute query; vedrete il JSON di output, e l'indirizzo web per interrogarlo.

Avete, inoltre, vari campi per eseguire filtri e ricerche più mirate.

Ad esempio nel campo q, potremmo scrivere una cosa del genere:

genre:"Fantasy"

Anche in questo caso, verrà visualizzato l'indirizzo da interrogare.

Come ultimi comandi, vi mostro come cancellare un Core, stoppare e riavviare il server:

$ ./solr delete -c TEST_CORE

Deleting core 'TEST_CORE' using command:
http://localhost:8983/solr/admin/cores?action=UNLOAD&core=TEST_CORE&deleteIndex=true&deleteDataDir=true&deleteInstanceDir=true

{"responseHeader":{
"status":0,
"QTime":10}}

$ ./solr restart
Sending stop command to Solr running on port 8983 ... waiting up to 180 seconds to allow Jetty process 5388 to stop gracefully.
Waiting up to 180 seconds to see Solr running on port 8983 []
Started Solr server on port 8983 (pid=6231). Happy searching!

$ ./solr stop
Sending stop command to Solr running on port 8983 ... waiting up to 180 seconds to allow Jetty process 6231 to stop gracefully.

Enjoy!


Condividi

Commentami!