[Kobv-opus-tester] Auswahl von CompletedYear statt PublishedYear für Year
Jens Schwidder
schwidder at zib.de
Mi Mai 22 19:10:52 CEST 2024
Liebe Frau Baade-Kelishani,
ich sehe nichts im Code, das mir Ihrer Konfiguration (unten) zulassen
würde, dass CompletedDate anstelle von CompletedYear verwendet wird.
Ich gehe davon aus, dass sie eine komplette Neu-Indexierung nach den
Änderungen in der Konfiguration gemacht haben und das keine doppelten
Konfigurationseinträge in der Datei config.ini vorhanden sind.
Wenn in "...year.order" nur ein Feld angegeben wird, dann ist der Wert
von Year leer, wenn das Feld nicht gesetzt ist. Die Konfiguration wird
in folgender Funktion ausgelesen:
Opus\Search\Solr\Document\Xslt::getYearOrder
Die Klasse ist in folgender Datei definiert.
vendor/opus4-repo/search/src/Solr/Document/Xslt.php
Sie könnten sich dort die aktive Konfiguration ins Log
(workspace/log/index.log) ausgeben lassen.
Log::get()->err(implode(',', self::$yearOrder));
Mit dem Log-Level "->err" sollte, die Ausgabe im Log landen.
Wenn ich irgendwann mal Zeit habe, werde ich ein Tool hinzufügen, um die
effektive Konfiguration auszugeben ohne solche Zeilen hinzufügen zu müssen.
Wenn dort "CompletedYear" ausgeben wird und der Index aktuell ist, dann
könnte es noch Probleme mit dem XSLT geben.
In der Datei XSLT-Datei
Solr/Document/solr.xslt
werden die möglichen Werte an die Funktion übergeben, die bestimmt
welcher Wert für die Indexierung verwendet wird.
<xsl:variable name="year">
<xsl:value-of
select="php:functionString('Opus\Search\Solr\Document\Xslt::indexYear',
/Opus/Opus_Document/PublishedDate/@Year,
/Opus/Opus_Document/@PublishedYear,
/Opus/Opus_Document/CompletedDate/@Year,
/Opus/Opus_Document/@CompletedYear)" />
</xsl:variable>
Es kann lokal auch ein eigenes Solr XSLT verwendet werden.
Wenn das XSLT auch dem Standard entspricht, habe ich im Augenblick keine
weiteren Ideen.
Viele Grüße
Jens
On 22.05.24 18:15, Baade-Kelishani, Annegret wrote:
> Lieber Herr Schwidder,
>
> ganz herzlichen Dank, das hat mich schon mal weitergebracht. Das Problem
> mit dem inverted hat sich erledigt, das funktioniert durch Ihre
> Beschreibung jetzt wie gewünscht.
>
> Meine Einstellungen sehen jetzt so aus:
>
> searchengine.solr.facets =
> author_facet,institute,has_fulltext,language,doctype,subject,enrichment_zugriffsart,belongs_to_bibliography,year
> search.facet.year.indexField = 'year_inverted'
> search.index.field.year.order = 'CompletedYear'
> search.facet.year.type = 'Year'
> search.facet.year.sort = lexi
>
> Durch weitere Tests habe ich herausgefunden, dass tatsächlich bei uns
> nicht das PublishedYear anstelle des CompletedYear belegt wird, wie ich
> zuerst dachte, sondern das Jahr von CompletedDate. Dabei habe ich doch
> eingestellt, dass CompletedYear verwendet werden soll? Haben Sie da
> vielleicht noch eine Idee?
>
> Nochmals vielen Dank für Ihre Mühe und einen schönen Abend
>
> Annegret Baade-Kelishani
>
>
> Am 22.05.2024 um 08:24 schrieb Jens Schwidder:
>> Liebe Frau Baade-Kelishani,
>>
>> ich habe mal versucht das bei mir nachzuvollziehen und sehe folgende
>> Probleme.
>>
>> Die folgende Option sollte den Feldnamen verwenden, also so aussehen:
>>
>> search.index.field.year.order = 'CompletedYear'
>>
>> Bei der Indexierung muss angegeben werden, welches Feld verwendet
>> werden soll. Bei der Anzeige der Facette ist der Name des Index-Feldes
>> im Solr-Schema notwendig.
>>
>> Bei den Inverted-Index-Feldern, wird ein Trick verwendet, um die
>> umgekehrte Reihenfolge zu erzeugen. Dafür ist der Prefix da, der bei
>> Ihnen mit angezeigt wird. Folgende Option sorgt dafür, dass die Facette
>> als "Year" behandelt und bei der Anzeige gegebenenfalls der Prefix
>> gefiltert wird.
>>
>> search.facet.year.type = 'Year'
>>
>> Diese Option sollte nie geändert werden. Wenn ich diese Option bei mir
>> entferne, sieht die Anzeige wie bei Ihnen aus.
>>
>> Generell ist die Empfehlung die Datei "application.ini" (Defaults) nie
>> zu verändern, sondern die notwendige lokale Konfiguration in die Datei
>> "config.ini" zu schreiben.
>>
>> Natürlich kann und wird OPUS 4 lokal auf die vielfältigste Art und
>> Weise angepasst, auch im Code, aber je mehr es vermieden werden kann,
>> desto besser. Dafür haben wir über die Jahre immer mehr Aspekte
>> konfigurierbar gemacht. Die Datei "application.ini" wird sich in
>> zukünftigen Versionen ändern und wird in Teile zerlegt werden.
>>
>> Ich hoffe das hilft ihnen weiter.
>>
>> Viele Grüße
>>
>> Jens Schwidder
>>
>>
>> On 21.05.24 19:30, Baade-Kelishani, Annegret wrote:
>>> Lieber Herr Schwidder,
>>>
>>> das ist eine tolle Option, aber bei mir funktioniert es leider nicht.
>>> Ich habe nun in meiner application.ini folgende Einstellungen gewählt:
>>>
>>> searchengine.solr.facets =
>>> author_facet,institute,has_fulltext,language,doctype,subject,enrichment_zugriffsart,belongs_to_bibliography,year
>>>
>>> search.facet.year.indexField = 'completed_year_inverted'
>>> search.index.field.year.order = 'completed_year'
>>> search.facet.year.sort = lexi
>>>
>>> Das Ergebnis sieht so aus:
>>>
>>>
>>> Jahr der Veröffentlichung in Opus
>>>
>>> * 63511:2024
>>> <http://opustest2.bibliothek.fh-aachen.de/opus4/solrsearch/index/search/searchtype/all/start/0/rows/10/facetNumber_year/all/yearfq/63511%3A2024> (120)
>>> * 63512:2023
>>> <http://opustest2.bibliothek.fh-aachen.de/opus4/solrsearch/index/search/searchtype/all/start/0/rows/10/facetNumber_year/all/yearfq/63512%3A2023> (498)
>>> * 63513:2022
>>> <http://opustest2.bibliothek.fh-aachen.de/opus4/solrsearch/index/search/searchtype/all/start/0/rows/10/facetNumber_year/all/yearfq/63513%3A2022> (457)
>>> * 63514:2021
>>> <http://opustest2.bibliothek.fh-aachen.de/opus4/solrsearch/index/search/searchtype/all/start/0/rows/10/facetNumber_year/all/yearfq/63514%3A2021> (284)
>>> * ...
>>>
>>> Wobei die Jahre sich weiterhin auf das Published_Year und nicht auf
>>> das Completed_Year beziehen. Gibt es jemanden, bei dem die
>>> Einstellung mit dem Completed_Year funktioniert?
>>>
>>> Herzlichen Dank und viele Grüße in die Runde
>>>
>>> Annegret Baade-Kelishani
>>>
>>>
>>> Am 23.04.2024 um 18:00 schrieb Jens Schwidder:
>>>> Liebe Frau Baade-Kelishani,
>>>>
>>>> die Indexierung für die Jahresfacette lässt sich mittlerweile
>>>> konfigurieren.
>>>>
>>>> https://www.opus-repository.org/userdoc/search/yearfacet.html
>>>>
>>>> Ich hoffe das hilft Ihnen weiter.
>>>>
>>>> Viele Grüße
>>>>
>>>> Jens Schwidder
>>>>
>>>>
>>>> On 4/23/24 17:43, Baade-Kelishani, Annegret wrote:
>>>>> Liebe Kolleginnen und Kollegen,
>>>>>
>>>>> ich beziehe mich auf eine Mail aus dem Archiv aus dem November
>>>>> 2011. Es ging um die Frage, welche Datumsangabe aus OPUS für die
>>>>> Sortierreihenfolge und für die Anzeige des Jahres in Klammern in
>>>>> den Trefferlisten verwendet wird:
>>>>>
>>>>>> die Anzeige der Jahre in der Facette "Erscheinungsjahr" ist
>>>>>> abhängig davon, welches Jahr im
>>>>>> Solr-Index indexiert wurde.
>>>>>> Nach diesem indexierten Jahr erfolgt dann ebenfalls die Sortierung
>>>>>> in den Suchergebnissen und die
>>>>>> Anzeige der "Jahre in Klammern".
>>>>> In der Mail wurde beschrieben, dass man durch die Anpassung der
>>>>> Datei solr.xslt erreichen kann, dass nicht das Datum der
>>>>> Erstpublikation, sondern das Erscheinungsjahr als relevantes Feld
>>>>> "year" verwendet werden kann:
>>>>>
>>>>>> Wir benutzen bei den migrierten OPUS3-Instanzen für die
>>>>>> Indexierung des Jahres, das Feld
>>>>>> "CompletedYear".
>>>>>>
>>>>>> Im Script für die Migration von OPUS3 nach OPUS4 wird das Feld
>>>>>> "Erstellungsjahr" aus OPUS3
>>>>>> nach "Jahr der Fertigstellung"="CompletedYear" in OPUS4 gemappt.
>>>>>>
>>>>>> Für die Änderung der Indexierung des Jahres müssen Sie wie folgt
>>>>>> vorgehen:
>>>>>>
>>>>>>
>>>>>> 1. Die Standardeinstellung für das Jahr in der Datei solr.xslt
>>>>>> auskommentieren und die Zeile mit
>>>>>> CompletedYear ersetzen
>>>>>>
>>>>>> vi
>>>>>> /home/opus/opus4-<instanz>/opus4/library/Opus/SolrSearch/Index/solr.xslt
>>>>>>
>>>>>> alt: <!-- year (Standardeinstellung für Jahr)
>>>>>> <xsl:element name="field">
>>>>>> <xsl:attribute name="name">year</xsl:attribute>
>>>>>> <xsl:choose>
>>>>>> <xsl:when
>>>>>> test="/Opus/Opus_Document/PublishedDate/@Year != ''">
>>>>>> <xsl:value-of
>>>>>> select="/Opus/Opus_Document/PublishedDate/@Year" />
>>>>>> </xsl:when>
>>>>>> <xsl:otherwise>
>>>>>> <xsl:value-of
>>>>>> select="/Opus/Opus_Document/@PublishedYear" />
>>>>>> </xsl:otherwise>
>>>>>> </xsl:choose>
>>>>>> </xsl:element>
>>>>>> -->
>>>>>>
>>>>>>
>>>>>> neu: <xsl:element name="field">
>>>>>> <xsl:attribute name="name">year</xsl:attribute>
>>>>>> <xsl:value-of
>>>>>> select="/Opus/Opus_Document/@CompletedYear" />
>>>>>> </xsl:element>
>>>>>>
>>>>> Das habe ich damals für unsere Installation genauso nachgebaut, und
>>>>> es ist nun seit Jahren so gelaufen. Nun probieren wir gerade,
>>>>> unsere Installation mit der Version 4.6.3 auf die 4.8 zu migrieren.
>>>>> Eine direkte Migration scheint nicht möglich zu sein, dazu gab es
>>>>> hier schon entsprechende Mails, daher gehen wir über den
>>>>> Zwischenschritt 4.7.1. In unserer Testinstanz ist die Datei
>>>>> solr.xslt unverändert, das heißt, meine Änderung bezüglich "year"
>>>>> ist erhalten geblieben, aber
>>>>>
>>>>> - die Sortierung bezieht sich auf das PublishedYear und nicht auf
>>>>> das CompletedYear
>>>>>
>>>>> - in Klammern wird das PublishedYear angezeigt, wenn das nicht
>>>>> vorhanden ist (das ist bei der Mehrzahl unserer Dokumente der
>>>>> Fall), bleibt es ganz frei
>>>>>
>>>>> - und am schlimmsten: auch die Facettierung bezieht sich auf das
>>>>> PublishedYear, wenn das nicht gefüllt ist, wird das Dokument bei
>>>>> der Jahresfacette nicht berücksichtigt
>>>>>
>>>>> Was kann man da machen bzw. wo kann ich das jetzt wieder so
>>>>> einstellen, dass es für uns richtig funktionieren würde?
>>>>>
>>>>> Vielen Dank für Ihre Hilfe und freundliche Grüße aus Aachen
>>>>>
>>>>> Annegret Baade-Kelishani
>>>>>
>>>>>
>>>>> --
>>>>> Kobv-opus-tester mailing list
>>>>> Kobv-opus-tester at zib.de
>>>>> https://listserv.zib.de/mailman/listinfo/kobv-opus-tester
>>>>
>>>>
>>>> --
>>>> Kobv-opus-tester mailing list
>>>> Kobv-opus-tester at zib.de
>>>> https://listserv.zib.de/mailman/listinfo/kobv-opus-tester
>>
>>
>> --
>> Kobv-opus-tester mailing list
>> Kobv-opus-tester at zib.de
>> https://listserv.zib.de/mailman/listinfo/kobv-opus-tester
--
==============================================================
Jens Schwidder
Kooperativer Bibliotheksverbund Berlin-Brandenburg (KOBV)
Zuse Institute Berlin (ZIB)
Takustr. 7, D-14195 Berlin
Telefon: (030) 841 85 - 308
E-Mail: schwidder at zib.de
WWW: http://www.kobv.de
==============================================================
Mehr Informationen über die Mailingliste Kobv-opus-tester