OPUS4 / opus4-search

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

Kommando index:repair implementieren #56

Open j3nsch opened 2 years ago

j3nsch commented 2 years ago

Die Aufgabe des Kommandos ist es den Index zu prüfen (consistency check) und die Dokumente, die fehlen, zu melden und versuchen separat zu indexieren. Das sollte es ermöglichen automatisch herauszufinden welche Dokument einzeln nicht indexiert werden können.

Intern: https://tickets.zib.de/jira/browse/OPUSVIER-4341

j3nsch commented 2 years ago

Es geht hier auch darum die Arbeit im Hosting und die Problemanalyse für die weitere Entwicklung zu erleichtern. Dafür wird noch mehr notwendig sein, aber ich hoffe das ist ein guter Start. Feedback hilft die Werkzeuge nützlicher zu machen.

j3nsch commented 2 years ago

Derzeit haben wir ja schon ein Script, mit dem wir überprüfen können, ob sich Dokumente nicht im Index befinden. Dieses Script guckt aber nur nach, ob das Dokument generell im Index ist. Es kann nicht prüfen, ob der dazugehörige Volltext indexiert wurde. Da die Metadaten alle indexiert werden (nur in absoluten Ausnahmen nicht), zeigt das Script dann keine Fehler an. Wir verwenden das Script bisher, um Dokumente aufzustöbern, die indexiert wurden, weil der SolrServer temporär nicht vorhanden war. Ein Kommando, welches die Dokumente findet, die Probleme bei der Volltextindexierung machen, wäre super.

snippets/find_missing_published_docs_in_searchindex.php
j3nsch commented 2 years ago

Die existierenden Skripte bilden die Grundlage für die neuen Kommandos. Es gibt hier mindestens zwei Aspekte.

Die Umwandlung ein Kommando macht die Funktionen auf einfache Weise zugänglicher. Wir können ein komplexeres Kommandozeileninterface mit eingebauter Hilfe wesentlich einfacher umsetzen als es mit den aktuellen Skripten möglich ist. Das wäre bereits ein Plus auch wenn sich die Funktionalität sonst nicht ändert.

Der andere Aspekt ist der Ausbau der Funktionalität. Die Regeln für den Prüfung haben sich zum Beispiel geändert. Vor 4.7 waren nur published Dokumente im Index, jetzt sind alle dort. Das wird in diesen Skripten noch nicht berücksichtigt.

Wie gesagt, ein Schritt nach dem anderen. Was an Skripten vorhanden ist, ist mir ziemlich bewusst. Was ich nicht weiß, ist, ob und wie Ihr die Skripte nutzt.

Steffi Conrad-Rempel Wenn ich Deinen Kommentar richtig interpretiere, kommen auch bei Fehlern die Metadaten trotzdem im Index an. Ich habe ja bereits Tickets angelegt, um den Indexierungsstatus von Dokumenten in der Datenbank zu erfassen. Das ist im Normalfall effizienter, wobei trotzdem die Notwendigkeit für einen unabhängigen Check besteht. So ein Check dauert nur eine Weile. Wir werden aber zusätzlich auch den Extraction Status einzelner Dokumente erfassen müssen.

Diese Ticket baut die Grundlagen, um sich auf die eigentlichen Funktionen konzentrieren zu können. Bei den einzelnen Skripten muss man sich immer auch noch mit der Implementation des Interface herumschlagen. Das wird einem durch die Umsetzung mit Symfony Console abgenommen.

j3nsch commented 2 years ago

Die Dokumente gelangen alle, trotz Probleme bei der Volltextindexierung, in den Index.

j3nsch commented 2 years ago

Ein unabhängiger Check des Indexierungsstatus der Dateien wird für die 4.7.1 nicht möglich sein. Unabhängig heißt, dass dabei nur geschaut wird was im Index ist ohne, dass sich OPUS 4 bei der Indexierung etwas gemerkt haben muss. Also eine Operation, die man bei bereits indexierten Instanzen durchführen könnte.

Um so etwas umzusetzen müsste man die Volltexte vermutlich separat im Index speichern, also als Feld mit mehreren Werten. Momentan wird ja alles in einem riesigen Feld zusammengefasst.

Die dafür notwenigen Änderungen sind geplant, aber das ist zu viel Arbeit, um es jetzt zu machen. Es muss im Rahmen der nächsten größeren Umbauten an der Index-Anbindung passieren.