In passato (cfr. LibXITA: costruire una barra di ricerca per la propria biblioteca) ho già parlato di LibX la “meta” barra di ricerca per biblioteche firefox (e in parte per internet explorer).
LibX supporta diversi tipi di cataloghi e OPAC dei più diffusi vendor (Aleph, Voyager, Millenium etc.), ma permette anche di dichiarare cataloghi personalizzati, sostanzialmente in due modi.
The easy way – dichiarare un bookmarklet
Nel wiki dedicato a LibXITA, la personalizzazione per le biblioteche italiane di LibX, è indicato come costruire il file config.xml dove vengono dichiarati i vari cataloghi. Tra questi c’è la possibilità di indicare un catalogo generico (bookmarklet, vedi la guida).
Bookmarklet supporta sia il metodo GET sia POST.
Sicuramente se il catalogo che si vuole inserire supporta il metodo GET tutto è molto più semplice poiché basta indicare dove inserire le variabili nella stringa che il modulo di ricerca genera.
Ad esempio se si volesse inserire Worldcat si potrebbe usare
<bookmarklet name="OpenWorldCat" url="http://www.worldcat.org/search?qt=worldcat_org&q=%searchterms&submit=Search" options="searchterms"/>
Dove searchterms sarà la stringa di ricerca.
Un altro esempio è tratto dalla Bibliobar, la versione di LibXITA usata dalla Biblioteca dell’Università Bicocca di Milano. In questo caso la ricerca in “Risorse elettroniche” per titolo della rivista e per issn (vedi i codici usati da libx) è gestita come catalogo generico:
<bookmarklet name="Riviste Elettroniche" sid="sfxit.com:libx" url="http://sfx.cilea.it:9003/sfxbic3/azlist/bicocca?param_lang_save=ita¶m_letter_group_save=¶m_perform_save=locate¶m_letter_group_script_save=¶m_chinese_checkbox_save=0¶m_services2filter_save=getFullTxt¶m_services2filter_save=getSelectedFullTxt¶m_current_view_save=table¶m_jumpToPage_save=1¶m_type_save=textSearch¶m_textSearchType_save=contains¶m_jumpToPagevalue=¶m_patternvalue=%jt¶m_textSearchTypevalue=contains¶m_issnvalue=%is¶m_vendor_active=1¶m_vendorvalue=¶m_locate_category_active=1¶m_locate_categoryvalue=" options="jt,i" contextmenuoptions="jt;i"/>
Lo stesso SBN è stato dichiarato come catalogo generico all’interno della Bibliobar.
The hard way – costruire un catalogo personalizzato
Quando si è nella situazione in cui la ricerca base e la ricerca avanzata generano stringhe completamente diverse e non sintetizzabili in un’unica regola, è tempo di dichiarare un catalogo custom (personalizzato).
Dal punto di vista del file config.xml è molto semplice si tratta dei soliti elementi indicati per gli altri cataloghi più l’attributo obbligatorio jsimplurl ovvero l’url dove prendere il file js relativo al catalogo personalizzato, nel caso della Bibliobar è stato definito come catalogo personalizzato BOA – Bicocca Open Access (il nuovo repository dell’Università Bicocca presentato recentemente da Bonaria Biancu in The geek librarian).
La parte XML è molto semplice
<custom jsimplurl="chrome://libx/content/catalogs/boa.js" name="BOA" url="http://surplus.cilea.it/bicocca/oa" options="all;a;t;jt;Y" contextmenuoptions="all">
Visto che nel caso di Bibliobar l’estensione viene compilata in proprio, è possibile inserire il file js all’interno dell’estensione stessa (chrome eccetera), nel caso invece si usi l’interfaccia grafica del Team LibX bisognerà ospitare il file javascript da qualche parte (preferibilmente in siti che non vadano offline di frequente).
Come creare il file javascript è presto detto, si può prendere come base di esempio worldcat.js messo a disposizione dal Team LibX.
Come si può vedere bisogna definire due funzioni, makeSearch e makeAdvancedSearch, la prima per le ricerche singole l’altra per le ricerche composite. Sostanzialmente bisogna creare l’url con i componenti per la ricerca passati con il metodo GET (qualora il catalogo in oggetto utilizzasse POST si può provare a installare la web developer toolbar e a convertire da POST a GET il metodo di invio dei dati.
Ecco il risultato, commentato, nel caso del catalogo per BOA, BOA.js su questa base può essere inserito qualunque catalogo ancora non presente in LibX e, nel caso italiano, sono diversi SBN, Sebina, EasyCat (o meglio EasyWeb) etc.
/*
* Bicocca Open Access Catalogue
* By Salvatore Vassallo
* Based on worldcat example by LibX Team, see http://libx.org/catalogs/worldcat.js
*/
//definire il path a cui aggiungere le varie parti della query
thisCatalog.path = '/simple-search?query=';
// funzione per la ricerca semplice
thisCatalog.makeSearch = function(stype, sterm) {
switch (stype) {
// switch di tutti i case possibili, alcuni codici tipici di LibX altri aggiunti
// sono state previsti tutti i casi supportati da Bicocca Open Access anche se poi solo in parte saranno usati in Bibliobar
// generalmente la query semploice in BOA e data da (codicetermine + %3A + termine da ricercare)
case 'all': // tutti i termini, da inserire
sterm = "(" + sterm + ")";
break;
case 'a': // author
sterm = "(author%3A" + sterm + ")";
break;
case 't': // title
sterm = "(title%3A" + sterm + ")";
break;
case 'jt': // journal title
sterm = "(journaltitle%3A" + sterm + ")";
break;
case 'miur': // settore disciplinare miur, da inserire
sterm = "(subject%3A" + sterm + ")";
break;
case 'Y': // keyword
sterm = "(keywords%3A" + sterm + ")";
break;
case 'language': // lingua codice
sterm = "(language%3A" + sterm + ")";
break;
case 'anno': // anno di pubblicazione
sterm = "(year%3A" + sterm + ")";
break;
case 'identifier': // identificativo
sterm = "(identifier%3" + sterm + ")";
break;
}
// viene generata la stringa da ricercare
return this.url + this.path + "(" + sterm + ")";
};
// funzione per la ricerca multipla
thisCatalog.makeAdvancedSearch = function(fields) {
var query = "";
// ciclo for per inserire i vari termini da ricercare, si assume che si rierca con AND
for (var i = 0; i < fields.length; i++) {
var type = fields[i].searchType;
var term = fields[i].searchTerms;
switch (type) {
// solito swith, simile al precedente
case 'all': // tutti i termini, da inserire
query += "(" + term + ")";
break;
case 'a': // author
query += "(author%3A" + term + ")";
break;
case 't': // title
query += "(title%3A" + term + ")";
break;
case 'jt': // journal title
query += "(journaltitle%3A" + term + ")";
break;
case 'miur': // settore disciplinare miur, da inserire
query += "(subject%3A" + term + ")";
break;
case 'Y': // keyword
query += "(keywords%3A" + term + ")";
break;
case 'language': // lingua codice
query += "(language%3A" + term + ")";
break;
case 'anno': // anno di pubblicazione
query += "(year%3A" + term + ")";
break;
case 'identifier': // identificativo
query += "(identifier%3" + term + ")";
break;
}
var c = i+1;
// se non è l'ultimo termine aggiunge +AND+ essenziale per costruire la query
if (c < fields.length) query +="+AND+";
}
// viene generata la stringa da ricercare
return this.url + this.path + "(" + query + ")";
};
// to add xISBN support, add
// thisCatalog.xisbn.opacid = ...
// read source for more information or ask.

[...] Non utilizzando un ILS e un OPAC diffuso e conosciuto all’estero, ma utilizzando easycat (easyweb lato OPAC) è stato necessario costruire un catalogo personalizzato (cfr. Libx e i cataloghi personalizzati). [...]
[...] maniera più semplice (cfr Libx e i cataloghi personalizzati) è quella di dichiarare in config.xml (o nell’interfaccia messa a disposizione da Libx) un [...]