{"id":326,"date":"2014-06-28T17:34:27","date_gmt":"2014-06-28T15:34:27","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=326"},"modified":"2014-06-28T17:34:50","modified_gmt":"2014-06-28T15:34:50","slug":"vufind-tutorial-3-importare-record","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/vufind-tutorial-3-importare-record\/","title":{"rendered":"VUFIND &#8211; Tutorial 3 &#8211; Importare Record"},"content":{"rendered":"<p style=\"text-align: justify;\">Nell&#8217;articolo di oggi vedremo come popolare la base dati di VUFIND. VUFIND presenta delle utility per il caricamento dati, che si interfacciano con Solr per la creazione del nostro catalogo.<\/p>\n<p style=\"text-align: justify;\">Sono presenti due modalit\u00e0 di caricamenti: tramite file in formato MARC21 oppure tramite file xml con un foglio xsl associato.<\/p>\n<p style=\"text-align: justify;\">Nel caso del formato MARC21 rimando al <a title=\"Specifiche Marc21\" href=\"http:\/\/www.loc.gov\/marc\/\">sito ufficiale<\/a>. Sostanzialmente si tratta di aver un file MARC21 e di caricarlo tramite il comando<\/p>\n<pre class=\"lang:default decode:true\">import-marc.bat nomefile.mrc<\/pre>\n<p style=\"text-align: justify;\">Per chi non conoscesse MARC21 (ad esempio me) VUFIND da la possibilit\u00e0 di caricare i libri in formato XML associando un foglio di stile xsl che effettui la trasformazione del file nel formato xml supportato da Solr, le cui specifiche sono consultabili <a title=\"Xml Message Format Per Solr\" href=\"http:\/\/wiki.apache.org\/solr\/UpdateXmlMessages\">qui<\/a>.<\/p>\n<p style=\"text-align: justify;\">Personalmente preferisco questa seconda soluzione, pi\u00f9 abbordabile e alla portata di tutti. Inoltre permette a chiunque abbia un catalogo xml di poterlo caricare sul nostro sistema agevolmente.<\/p>\n<p style=\"text-align: justify;\">Facciamo un caso pratico, l&#8217;esempio vale pi\u00f9 di 1000 parole. Supponiamo di avere un file xml che contiene il nostro catalogo cos\u00ec fatto:<\/p>\n<pre class=\"lang:default decode:true \">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;books&gt;\r\n&lt;book&gt;\r\n&lt;id&gt;0000000001&lt;\/id&gt;\r\n&lt;title&gt;titolo1&lt;\/title&gt;\r\n&lt;\/book&gt;\r\n&lt;book&gt;\r\n&lt;id&gt;0000000002&lt;\/id&gt;\r\n&lt;title&gt;titolo2&lt;\/title&gt;\r\n&lt;\/book&gt;\r\n&lt;book&gt;\r\n&lt;id&gt;0000000003&lt;\/id&gt;\r\n&lt;title&gt;titolo3&lt;\/title&gt;\r\n&lt;\/book&gt;\r\n&lt;\/books&gt;<\/pre>\n<p style=\"text-align: justify;\">A questo punto definiamo un foglio xsl che trasforma il file xml nel formato atteso da Solr.<\/p>\n<pre class=\"lang:default decode:true\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http:\/\/www.w3.org\/1999\/XSL\/Transform\"&gt;\r\n&lt;xsl:template match=\"\/\"&gt;\r\n&lt;add&gt;\r\n&lt;xsl:for-each select=\"\/books\/book\"&gt;\r\n&lt;doc&gt;\r\n&lt;field name=\"id\"&gt;\r\n&lt;xsl:value-of select=\"id\"\/&gt;\r\n&lt;\/field&gt;\r\n&lt;field name=\"title\"&gt;\r\n&lt;xsl:value-of select=\"title\"\/&gt;\r\n&lt;\/field&gt;\r\n&lt;field name=\"recordtype\"&gt;book&lt;\/field&gt;\r\n&lt;\/doc&gt;\r\n&lt;\/xsl:for-each&gt;\r\n&lt;\/add&gt;\r\n&lt;\/xsl:template&gt;\r\n&lt;\/xsl:stylesheet&gt;\r\n\r\n<\/pre>\n<p style=\"text-align: justify;\">Questo file permetter\u00e0 di trasformare il file xml nel seguente formato atteso da Solr:<\/p>\n<pre id=\"xmlOutput\" class=\"xml prettyprint\" style=\"color: #404040;\"><span class=\"pun\" style=\"color: #666600;\">&lt;?<\/span><span class=\"pln\" style=\"color: #000000;\">xml version<\/span><span class=\"pun\" style=\"color: #666600;\">=<\/span><span class=\"str\" style=\"color: #008800;\">\"1.0\"<\/span><span class=\"pln\" style=\"color: #000000;\"> encoding<\/span><span class=\"pun\" style=\"color: #666600;\">=<\/span><span class=\"str\" style=\"color: #008800;\">\"UTF-8\"<\/span><span class=\"pun\" style=\"color: #666600;\">?&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;add&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;doc&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;field<\/span><span class=\"atn\" style=\"color: #660066;\">name<\/span><span class=\"pun\" style=\"color: #666600;\">=<\/span><span class=\"atv\" style=\"color: #008800;\">\"id\"<\/span><span class=\"tag\" style=\"color: #000088;\">&gt;<\/span><span class=\"pln\" style=\"color: #000000;\">0000000001<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/field&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;field<\/span><span class=\"atn\" style=\"color: #660066;\">name<\/span><span class=\"pun\" style=\"color: #666600;\">=<\/span><span class=\"atv\" style=\"color: #008800;\">\"title\"<\/span><span class=\"tag\" style=\"color: #000088;\">&gt;<\/span><span class=\"pln\" style=\"color: #000000;\">titolo1<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/field&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;field<\/span><span class=\"atn\" style=\"color: #660066;\">name<\/span><span class=\"pun\" style=\"color: #666600;\">=<\/span><span class=\"atv\" style=\"color: #008800;\">\"recordtype\"<\/span><span class=\"tag\" style=\"color: #000088;\">&gt;<\/span><span class=\"pln\" style=\"color: #000000;\">book<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/field&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/doc&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;doc&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;field<\/span><span class=\"atn\" style=\"color: #660066;\">name<\/span><span class=\"pun\" style=\"color: #666600;\">=<\/span><span class=\"atv\" style=\"color: #008800;\">\"id\"<\/span><span class=\"tag\" style=\"color: #000088;\">&gt;<\/span><span class=\"pln\" style=\"color: #000000;\">0000000002<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/field&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;field<\/span><span class=\"atn\" style=\"color: #660066;\">name<\/span><span class=\"pun\" style=\"color: #666600;\">=<\/span><span class=\"atv\" style=\"color: #008800;\">\"title\"<\/span><span class=\"tag\" style=\"color: #000088;\">&gt;<\/span><span class=\"pln\" style=\"color: #000000;\">titolo2<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/field&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;field<\/span><span class=\"atn\" style=\"color: #660066;\">name<\/span><span class=\"pun\" style=\"color: #666600;\">=<\/span><span class=\"atv\" style=\"color: #008800;\">\"recordtype\"<\/span><span class=\"tag\" style=\"color: #000088;\">&gt;<\/span><span class=\"pln\" style=\"color: #000000;\">book<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/field&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/doc&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;doc&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;field<\/span><span class=\"atn\" style=\"color: #660066;\">name<\/span><span class=\"pun\" style=\"color: #666600;\">=<\/span><span class=\"atv\" style=\"color: #008800;\">\"id\"<\/span><span class=\"tag\" style=\"color: #000088;\">&gt;<\/span><span class=\"pln\" style=\"color: #000000;\">0000000003<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/field&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;field<\/span><span class=\"atn\" style=\"color: #660066;\">name<\/span><span class=\"pun\" style=\"color: #666600;\">=<\/span><span class=\"atv\" style=\"color: #008800;\">\"title\"<\/span><span class=\"tag\" style=\"color: #000088;\">&gt;<\/span><span class=\"pln\" style=\"color: #000000;\">titolo3<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/field&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;field<\/span><span class=\"atn\" style=\"color: #660066;\">name<\/span><span class=\"pun\" style=\"color: #666600;\">=<\/span><span class=\"atv\" style=\"color: #008800;\">\"recordtype\"<\/span><span class=\"tag\" style=\"color: #000088;\">&gt;<\/span><span class=\"pln\" style=\"color: #000000;\">book<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/field&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/doc&gt;<\/span><span class=\"tag\" style=\"color: #000088;\">&lt;\/add&gt;<\/span><\/pre>\n<p style=\"text-align: justify;\">Per Solr ogni documento \u00e8 definito come una sequenza di field, ciascuno con il proprio nome e valore. Il file deve rispettare lo schema definito in solr, in caso contrario il file verr\u00e0 rifiutato durante l&#8217;importazione.<\/p>\n<p style=\"text-align: justify;\">A questo punto non ci resta che caricare il file tramite la direttiva<\/p>\n<pre class=\"lang:default decode:true \">c:\\vufind\\import&gt;php import-xsl.php books.xml opac.properties<\/pre>\n<p style=\"text-align: justify;\">Tale direttiva processa il file books.xml applicando le regole definite nel file opac.properties che contiene i parametri per invocare il servizio esposto da solr. \u00a0La configurazione minimale \u00e8 la seguente:<\/p>\n<pre class=\"lang:default decode:true \">[General]\r\nxslt = opac.xsl\r\ncustom_class[] = VuFind\r\ntruncate_custom_class = true<\/pre>\n<p style=\"text-align: justify;\">Il parametro xslt indica il file xsl da usare e deve essere disponibile all&#8217;interno della directory xsl<\/p>\n<pre class=\"lang:default decode:true \">C:\\vufind\\import\\xsl<\/pre>\n<p style=\"text-align: justify;\">A questo punto se abbiamo operato riceveremo come risposta<\/p>\n<pre class=\"lang:default decode:true\">c:\\vufind\\import&gt;php import-xsl.php books.xml opac.properties\r\n&lt;pre&gt;2014-06-28T11:21:46-04:00 DEBUG: =&gt; POST http:\/\/localhost:8080\/solr\/biblio\/\r\nupdate&lt;\/pre&gt;\r\n&lt;pre&gt;2014-06-28T11:21:46-04:00 DEBUG: &lt;= 200 OK&lt;\/pre&gt;\r\nSuccessfully imported books.xml...<\/pre>\n<p style=\"text-align: justify;\">Buon caricamento dati<\/p>\n<p style=\"text-align: justify;\">\n","protected":false},"excerpt":{"rendered":"<p>Nell&#8217;articolo di oggi vedremo come popolare la base dati di VUFIND. VUFIND presenta delle utility per il caricamento dati, che si interfacciano con Solr per la creazione del nostro catalogo. Sono presenti due modalit\u00e0 di caricamenti: tramite file in formato MARC21 oppure tramite file xml con un foglio xsl associato. Nel caso del formato MARC21 &hellip; <a href=\"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/vufind-tutorial-3-importare-record\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">VUFIND &#8211; Tutorial 3 &#8211; Importare Record<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[60],"tags":[62,61,13],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/326"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=326"}],"version-history":[{"count":4,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/326\/revisions"}],"predecessor-version":[{"id":330,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/326\/revisions\/330"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=326"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}