[Kobv-opus-tester] Probleme bei Migration von OPUS 3->OPUS 4.03

Gunar Maiwald maiwald at zib.de
Fre Feb 25 09:48:25 MET 2011


Lieber Herr Neufing,

vielen Dank für Ihre E-Mail und dem Feedback zur Migration.

On 25.02.2011 09:19, Michael Neufing wrote:
> Liebes Opus Entwicklerteam,
>
> wir haben gestern eine neue Testmigration mit unseren Daten von OPUS 
> 3.2 auf OPUS 4.03 durchgeführt und dabei zwei Probleme festgestellt.
> Das erste der beiden konnten wir selbst lösen:
>
> Einträge in der Spalte "title_de" der Tabelle "opus_diss" von Opus 3 
> werden anscheinend als zusätzliche Abstracts anstatt als Titel 
> importiert.
> Das Problem liegt wohl in der Datei 
> "opus4/import/stylesheets/opus3.xslt" in Zeile 285:
> --------------------------------------------------------------------------- 
>
> ...
> <!-- Dissertation:TitleMain, Language="deu" (2nd) -->
> <xsl:for-each select="/mysqldump/database/table_data[@name='opus_diss' 
> or @name='temp_diss']/row[field[@name='source_opus']=$OriginalID]">
> <xsl:if test="string-length(field[@name='title_de'])>0">
> <xsl:element name="TitleAbstract"> <!-- Hier sollte bestimmt 
> "TitleMain" stehen -->
> <xsl:attribute name="OldLanguage">
> <xsl:text>ger</xsl:text>
> </xsl:attribute>
> <xsl:attribute name="Value">
> <xsl:value-of select="field[@name='title_de']" />
> </xsl:attribute>
> </xsl:element>
> </xsl:if>
> </xsl:for-each>
> ...
> --------------------------------------------------------------------------- 
>
Sie haben recht, korrekt heißt es 'TitleAbstract'.
> Nachdem wir das geändert hatten, wurden die Daten richtig in die 
> Datenbank importiert, es gab nun jedoch sehr viele Datensätze, welche 
> nun 2 deutsche Titel hatten.

Das schauen wir uns genauer an. Vermutlich wird die Lösung auch die 
nachfolgend von Ihnen beschriebenen Probleme beheben.

Sobald wir eine Lösung haben, geben wir Ihnen bescheid.

> Dies führte nun dazu, dass diese scheinbar nicht mehr in das Schema 
> des Solr-Servers passen:
>
> (aus der Solr-Logdatei)
> ---------------------------------------------------------------------------- 
>
> ...
> Feb 24, 2011 10:21:26 AM org.apache.solr.common.SolrException log
> SEVERE: org.apache.solr.common.SolrException: ERROR: [18] multiple 
> values encountered for non multiValued field title_output: [TADDOLe 
> als chirale Dotierstoffe in nematischen Phasen, TADDOLe als chirale 
> Dotierstoffe in nematischen Phasen]
>         at 
> org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:214)
>         at 
> org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:60)
>         at 
> org.apache.solr.handler.XMLLoader.processUpdate(XMLLoader.java:139)
> ...
> ---------------------------------------------------------------------------- 
>
> Das Dokument wird nicht in den Index aufgenommen und ist über die 
> Suchfunktion nicht zu finden. Es steht allerdings richtig in der 
> Datenbank und lässt sich direkt über die Document-Id problemlos aufrufen.
> Sehr unschön äußert sich dieses Problem bei den gruppierten Ansichten. 
> So wurde in unserem Beispiel unter dem Punkt "Browsen->Dokumenttypen" 
> angezeigt, dass es 578 Dissertationen gibt (diese Zahl kommt scheinbar 
> aus der Datenbank), allerdings werden,
> wenn man auf den Link klickt nur 570 Dokumente gefunden (diese Zahl 
> kommt scheinbar vom Solr).
>
> Weitere Auswertungen der Logdateien ergaben, dass dieses Problem auch 
> unabhängig von dem zuerst geschilderten Problem auftritt. Bei uns 
> kommt es oft vor, das ein deutscher Titel sowohl als original Titel 
> als auch als deutscher Titel eingetragen wurde.
> Bei der Migration werden daraus zwei Einträge in der Tabelle 
> "document_title_abstracts".
>
> Dieses Problem konnten wir durch das Löschen der Duplikate und 
> Neuaufbauen des Solrindexes weitestgehend beheben. Folgende 
> SQL-Abfragen wurden benutzt:
>
> 1. Zum Suchen der betroffenen Dokumente:
> ---------------------------------------------------------------------------- 
>
> select `document_id` from document_title_abstracts dta group by 
> `document_id`, `type`,`language` having count(*) > 1 order by 
> document_id;
> ---------------------------------------------------------------------------- 
>
>
> 2. Zum Löschen von absolut identischen Einträgen in der Tabelle 
> "document_title_abstracts" :
> ---------------------------------------------------------------------------- 
>
> drop table IF EXISTS document_title_abstracts_backup ;
> create table document_title_abstracts_backup like 
> document_title_abstracts;
> insert into document_title_abstracts_backup select * from 
> document_title_abstracts;
> drop table IF EXISTS `temp_ids`;
> CREATE TABLE IF NOT EXISTS `temp_ids` (   `id` int(11) NOT NULL,   
> PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
> insert into temp_ids (select max(dtab.id) as id from 
> document_title_abstracts_backup dtab group by dtab.`document_id`, 
> dtab.`type` ,dtab.`value`,dtab.`language` having count(*) > 1  );
> delete FROM `document_title_abstracts` WHERE id in (select id from 
> temp_ids);
> delete from document_xml_cache where document_id in ( select 
> dtab.document_id from document_title_abstracts_backup dtab join 
> temp_ids tids on tids.id = dtab.id );
> drop table IF EXISTS `temp_ids`;
> drop table IF EXISTS document_title_abstracts_backup;
> ---------------------------------------------------------------------------- 
>
>
>
>
> Mit freundlichen Grüßen
> Michael Neufing
>
>
> --
> Kobv-opus-tester mailing list
> Kobv-opus-tester at zib.de
> http://listserv.zib.de/mailman/listinfo/kobv-opus-tester

Viele Grüße
Gunar Maiwald
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: http://listserv.zib.de/mailman/private/kobv-opus-tester/attachments/20110225/e4f54e74/attachment.html