Soundtrack per il post: Eruption – Van Halen
Recentemente avevo illustrato come installare la lookup patch per permettere la ricerca z39.50 in OpenBiblio, riscontrando problemi nell’interrogazione di SBN.
Ho avuto il tempo di effettuare qualche test e direi che il problema è sostanzialmente risolto: interrogando il server opac.sbn.it alla porta 2100 si otterrà sempre un errore, poiché in quel caso è supportata solo la sintassi del record surts e questa non è supportata dalla funzione php yaz_record se si utilizza il type array.
Se invece si interroga sempre opac.sbn.it alla porta 3950 è supportata anche la sintassi di dati usmarc, ovviando al problema.
$host[0] = 'opac.sbn.it:3950'; ##-- sbn $hostName[0] = 'SBN - Sistema Bibliotecario Nazionale'; $database[0] = 'nopac'; ##-- as required for the server $hostUser[0] = ''; ##-- as required for the server $hostPassword[0] = ''; ##-- as required for the server
Bisogna ancora risolvere un piccolo inconveniente: la lookup patch, nel caso di un ISBN elimina tutti gli spazi vuoti e gli score “-“, SBN invece si aspetta proprio il numero ISBN segmentato nelle 4 (5 se ISBN13) parti.
Per ovviare a questo, nel file lookup_z3950_search.php proprio all’inizio bisogna sostituire l’intero else if ($srchBy == “7”) con:
else if ($srchBy == "7") { $srchByName = 'ISBN'; ## remove any space char user may have entered $lookupVal = str_replace(" ", "-", $lookupVal); ## test if its a scanned EAN code ## '978' & '979' per Cristoph Lange of Germany ## sbn seems to record isbn13 without "-" if (((substr($lookupVal, 0,3) == '978') ||(substr($lookupVal, 0,3) == '979')) && (strlen($lookupVal) > 12)) { ## remove any "-" char user may have entered $lookupVal = str_replace("-", "", $lookupVal); ## remove any space char user may have entered str_replace(" ", "", $lookupVal); } //$lookupVal = substr($lookupVal,0,10); //echo 'final isbn: ' . $lookupVal . ''; }
In questo modo inserendo un codice ISBN segmentato la ricerca su SBN funziona (mentre l’isbn13 viene passato non segmentato così come sembra essere di solito registrato in sbn).
Mi rendo conto che come workaround non è il massimo dell’eleganza…