====== Uso avanzato del motore di ricerca ====== Oltre alle opzioni di ricerca a disposizione degli utenti attraverso la pagina di Ricerca avanzata, esistono alcune opzioni aggiuntive che permettono di costruire query di ricerca speciali. ===== Caratteri speciali ===== In tutti i box di ricerca è consentito l'utilizzo di alcuni caratteri speciali: ==== Doppi apici (") ==== Inserendo i termini tra doppi apici è possibile compiere una **ricerca per frase esatta**. I risultati quindi conterranno solo titoli che contengono tutti i termini inseriti nell'ordine indicato. Cercando ad esempio //"nome della rosa"// verranno esclusi titoli come: la rosa dei nomi, la rosa bianca, la rosa dei sentimenti, ecc. ==== Simbolo Asterisco (*) ==== Si tratta di un //carattere jolly// sinonimo di **qualsiasi carattere**. Inserendolo come troncamento di una parola verranno quindi restituiti tutti i risultati che contengono la parte precedente all'asterisco. Ad esempio la ricerca di //giardin*// restuirà titoli che contengono i termini: giardino, giardini, giardinaggio, ecc. ==== Simbolo Apice (^) ==== Si tratta di un //carattere jolly// [[http://wiki.apache.org/solr/SolrRelevancyCookbook#Boosting_Ranking_Terms|fornito da Solr]] che consente di specificare un valore di //boosting// da applicare ai termini di ricerca. Il //boosting// è un vero e proprio moltiplicatore che assegna un diverso peso ai risultati incidendo sul loro ordinamento. Viene applicato di default alla ricerca semplice e ad alcune ricerche avanzate (es. per titolo o per autore) e non incide sul numero di risultati ottenuti ma solo sull'ordinamento per rilevanza. Per fare un esempio è possibile mettere a confronto le due seguenti ricerche avanzate: ^ Senza boosting ^ Con boosting ^ |//Titolo//: harry potter|//Titolo//: harry potter| |//Autore//: rowling|//Autore//: rowling%%^%%10000| Si noterà che nella seconda ricerca compariranno più in cima i titoli dove il termine //rowling// compare nell'indicazione di responsabilità. **VEDI:** per una descrizione dei boosting predefiniti si veda il [[http://www.comperio.it/comperio-blog/siamo-diventati-piu-rilevanti/|blog di Comperio]]. ===== Campi di ricerca speciali ===== In DNG è possibile passare **campi di ricera direttamente tramite URL**. Osservando ad esempio la **ricerca semplice** si può notare che il campo //tutto testo// viene indicato con **q=**. opac/search/lst?q=nome+della+rosa La struttura dell'URL è la seguente: ^opac| è il path della pagina di ricerca predefinita| ^search| indica l'azione eseguita dalla pagina| ^lst| specifica il template da applicare ai risultati (ce ne sono 3: dtl, lst, grid)| alla fine dell'URL, dopo il **?** sono presenti uno o più campi di ricerca indicati con la sintassi //nome campo=termine di ricerca//. Nel caso di più termini questi sono concatenati dal simbolo **+**. In questa struttura non è possibile concatenare diversi campi di ricerca tramite operatori booleani, infatti facendo una ricerca avanzata è possibile notare che l'URL è diverso: /opac/advanced?op_1=and&field_4=title&value_4=nome+rosa&lop_4=1&field_5=autha&value_5=Eco%2C+Umberto&lop_5=1&submit=Cerca Preceduti dalla dicitura //field_n=// sono comunque visibili i campi di ricerca a disposizione dell'utente. Nell'esempio riportato ci sono i campi //title// e //auhta// che permettono di cercare il campo titolo e autore. == Elenco dei campi a disposizione == Di seguito sono presentati solo alcuni dei campi a disposizione, a titolo di esempio.\\ Per l'elenco completo dei campi di ricerca si veda la tabella della pagina [[liquens:codici_e_campi#campi_di_ricerca|Codici e campi]]. ==== bid ==== Questo campo permette di utilizzare per la ricerca il numero identificativo della notizia assegnato dalla sorgente di importazione in Clavis. opac/search/lst?bid=UBO2898455 Nell'esempio viene usato il codice SBN del titolo "Il cuore delle cose / Natsume Sōseki" ==== standard-number ==== Questo campo permette di utilizzare nella ricerca un qualsiasi **numero standard**, quindi anche l'EAN o ISBN, nel formato privo di trattini o spazi. opac/search/lst?standard-number=8854500925 Nell'esempio viene usato il numero ISBN del titolo "Il cuore delle cose / Natsume Sōseki" ==== solr ==== Il campo **solr** permette di utilizzare la [[http://wiki.apache.org/solr/SolrQuerySyntax|sintassi Solr]] per ricercare qualsiasi campo UNIMARC indicizzato. opac/search/lst?solr=(mrc_d200_sa:nome+della+rosa) AND (mrc_d210_sc:bompiani) AND (mrc_d950_sf:n eco) Nell'esempio qui sopra viene fatta una ricerca nei campi UNIMARC: **200 $a**, **210 $c**, **950 $f**. Come si può notare, in Solr vengono indicizzati i campi UNIMARC con una struttura del tipo //mrc_d{codice campo}_s{codice sottocampo}// (questo vale per tutti i campi, ad eccezione di quelli codificati, ovvero quelli compresi tra il 100 e il 199). Come prevede la [[http://wiki.apache.org/solr/SolrQuerySyntax|sintassi Solr]], dopo il campo indicizzato, seguito da **:** va inserito il valore della ricerca (case insensitive). La maggior parte dei campi e sottocampi UNIMARC è ricercabile dall'utente attraverso la pagina di Ricerca Avanzata, tuttavia ne esistono alcuni particolari utilizzati da ClavisNG, che permettono di incrociare diverse informazioni gestionali. Di seguito pubblichiamo un elenco di alcuni campi gestionali indicizzati e il loro significato: ^ campo ^ significato ^ ^ mrc_d950_sa |ID Clavis della biblioteca di gestione | ^ mrc_d950_sb |Serie inventariare | ^ mrc_d950_sc |Numero di inventario | ^ mrc_d950_sd |Sezione | ^ mrc_d950_se |Altezza | ^ mrc_d950_sf |Collocazione | ^ mrc_d950_sg |Specificazione | ^ mrc_d950_sh |Sequenza 1 | ^ mrc_d950_si |Sequenza 1 | ^ mrc_d950_sj |Codice dello stato dell'esemplare | ^ mrc_d950_sm |Valore inventariale | ^ mrc_d950_sq |Codice dello stato fisico della copia | ^ mrc_d950_su |Codice della sorgente d'acquisto | ^ mrc_d950_sp |Classe di prestabilità | ^ sorti_usage |Numero di prestiti fatti con il titolo | ^ sorti_requests |Numero di prenotazioni presenti sul titolo | == Informazioni sulla copia nel tracciato UNIMARC == È bene considerare che ciascun record restituito dal Solr comprende tanti **d950** quante sono le copie legate al titolo. Tuttavia, poichè **viene indicizzato singolarmente ciascun sottocampo**, non è possibile incrociare tra loro diversi sottocampi avendo la certezza che corrispondano alla stessa copia Ad esempio la seguente query opac/search/lst?solr=mrc_d950_sf:Magazzino AND mrc_d950_sa:37 restituisce titoli dove compaiono sia copie nella sezione Magazzino che copie gestite dalla biblioteca 37. Tuttavia non necessariamente tutti i titoli ottenuti come risultato avranno copie della biblioteca 37 con sezione Magazzino. Potrebbero esserci titoli per cui esiste una copia della biblioteca 37 ma con diversa sezione, mentre è presente al contempo una copia di un'altra biblioteca con sezione Magazzino === Ricerca per intervallo === È possibile indicare un intervallo di valori contenuti nei campi //mrc// utilizzando la sintassi %%[* TO *]%% dove l'asterisco rappresenta //qualsiasi valore// ed è sostituibile da uno o più caratteri o numeri. opac/search/lst?solr=mrc_d950_sl:[a TO c] Ricerca i titoli per cui esistono copie con collocazione compresa da A a C. opac/search/lst?solr=sorti_usage:[100 TO *] Ricerca i titoli andati a prestito più di 100 volte. ===== Parametri di ordinamento ===== Nella query di ricerca passata via URL è possibile specificare anche l'ordinamento che si intende ottenere, utilizzando il parametro **sort** /opac/search/lst?q=cent'anni+di+solitudine&sort=titleasc L'esempio mostra i risultati di una ricerca semplice ordinata per Titolo (A-Z), usando il parametro **&sort=titleasc** Per l'elenco completo dei campi di ordinamento vedi la relativa tabella della pagina [[liquens:codici_e_campi#campi_di_ordinamento|Codici e campi]].