LibX e i cataloghi personalizzati

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&param_letter_group_save=&param_perform_save=locate&param_letter_group_script_save=&param_chinese_checkbox_save=0&param_services2filter_save=getFullTxt&param_services2filter_save=getSelectedFullTxt&param_current_view_save=table&param_jumpToPage_save=1&param_type_save=textSearch&param_textSearchType_save=contains&param_jumpToPagevalue=&param_patternvalue=%jt&param_textSearchTypevalue=contains&param_issnvalue=%is&param_vendor_active=1&param_vendorvalue=&param_locate_category_active=1&param_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. [/sourcecode]

2 thoughts on “LibX e i cataloghi personalizzati

  1. Pingback: SBAT: Sistema Bibliotecario di Ateneo Toolbar, un’altra personalizazione di LibXITA « Cultural Heritage E-Libraries and Archives

  2. Pingback: LibX e SBN - LibX e Sebina « Cultural Heritage E-Libraries and Archives

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s