OPUS4 / opus4-search

OPUS 4 Solr search.
Other
1 stars 4 forks source link

Anzahl der Treffer bei der Suche nach allen Dokumenten stimmt nicht mit Anzahl in der Datenbank überein #92

Open j3nsch opened 2 years ago

j3nsch commented 2 years ago

Bei Instanz wurde beobachtet, das die Anzahl auf der Startseite (13964) nicht mit der Anzahl der Treffer in der Suche nach allen Dokumenten (13631) übereinstimmt.

Eine Prüfung der Datenbank hat gezeigt, dass die Anzahl der Dokumente mit Status published korrekt auf der Startseite angezeigt wird. Eine Abfrage über die Solr-Admin-UI nach Dokumenten mit server_state:published hat die selbe Zahl wie in der Suche gebracht. Eine Prüfung der Dokumente im Index mit einem Skript hat keine Fehler angezeigt, obwohl die Anzahl der Dokumente im Index anscheinend kleiner ist als in der Datenbank.

$ cd scripts
$ php opus-console.php snippets/find_missing_published_docs_in_searchindex.php

Das Skript wurde lokal noch mal manuell geprüft und scheint zu funktionieren. Es wurden Dokumente aus dem Index gelöscht und das Skript hat dieses Dokumente als fehlend angezeigt.

Es scheint also so, als ob Solr Dokumente unterschlägt, obwohl sie im Index vorhanden sind. Das könnte der Fall sein, wenn die Zeit für den Request, timeAllowed, überschritten ist. Ich habe leider nicht herausfinden können, was der Defaultwert für diesen Parameter ist. Mit -1 lässt die das Zeitlimit anscheinend ausschalten. Das muss noch getestet werden.

j3nsch commented 2 years ago

Momentan wird die neueste Version von Solr 7 eingesetzt.

j3nsch commented 2 years ago

@alw-bsz Habt Ihr ähnliche Probleme beobachtet?

CAWinter commented 2 years ago

Auch wir setzen Solr7 in der aktuellsten Version ein. Dieser Effekt tritt bei uns auch ab und an bei einzelnen Instanzen auf. Im laufenden Betrieb werden einzelne Dokumente nicht indexiert. Das wird dann oft erst später bemerkt, wenn sich die Zahlen - wie auch von Euch beschrieben - von Treffern auf der Startseite und angezeigten Treffern unterscheiden. Meist lässt sich das durch gezieltes Nachindexieren beheben, bei Bedarf mit erhöhtem Timeout. Es gibt aber auch Einzelfälle, in welchem der Volltext nicht indexiert werden kann oder es Probleme mit den Metadaten gibt (z.B. Sonderzeichen, Titel oder Abstract kommt mehrfach in der gleichen Sprache vor). Hier indexieren wir dann ohne Volltext bzw. korrigieren die Metadaten.

j3nsch commented 2 years ago

Fehler beim Indexieren sind die typische Ursache für Abweichungen bei der Anzahl der Dokumente in Datenbank und Index, die im Status published sind. Im konkreten Problemfall hier sieht es aber so aus, als ob sich alle Dokumente aus der Datenbank auch im Index befinden. Die Abweichung scheint also daher zu kommen, dass der Index die Suche frühzeitig abbricht und nicht alle möglichen Ergebnisse liefert.

Bei der Problem-Instanz könnte man mal die einzelnen Jahre separat abfragen und schauen, ob dann insgesamt die erwartete Zahl an Dokumenten dabei herauskommt. Es kann auch eine andere Facette gewählt werden, bei der es keine Überlappungen gibt, um das Suchergebnis kleiner zu machen.