AnsweredAssumed Answered

Lucene Index Erosion

Question asked by dbachem_3054 on Oct 21, 2009
Ich arbeite seit 1 Jahr mit Alfresco Labs 3.0. Dabei hatte ich schon mehrmals Probleme mit dem Ergebnis der Lucene Suche. Ganz deutlich traten die Probleme im Zusammenhang einer Erweiterung um einen neuen Store zu Tage. Dabei wurden Click-Informationen in einem separaten Store gespeichert, die nach dem Neustart des Systems nicht mehr ordentlich gefunden wurden. Es stellte sich heraus, dass die Suche nach TYPE, ASPECT sowie Properties vom Typ d:boolean und d:category wie erwartet funktionierten. Lediglich die Suche nach einem d:text Property schlug nach dem Neustart (mit index.recovery.mode=AUTO) fehl. Daraufhin hab ich den Index neu erstellen lassen (Neustart mit index.recovery.mode=FULL), was dazu führte, dass das Problem kurzzeitig verschwand. Kurze Zeit später tauchte es aber erneut auf, zum Beispiel nach Änderungen an x-beliebigen Nodes oder auch nach dem Upload von JS WebScripten per WebDAV, das heißt nach Aktionen, die jeweils irgendwelche Indizierungsprozesse angestoßen haben.

Nach dem Import von ca. 4000 PDF Dokumenten hat das Problem nun eine neue Dimension angenommen. Die Dokumente wurden zwar indiziert, jedoch konnten nur einfache Node-Properties (Title, Summary, Categories) halbwegs zuverlässig per Volltext gefunden werden, der PDF Inhalt dagegen lieferte maximal vereinzelte Glückstreffer. Nach diversen Tests war klar, dass es weder ein Problem von geschützten PDFs war, noch ein Problem der Sprache (vorrangig deutsch). Ein Debug-Breakpoint in PdfBoxContentTransformer.transformInternal() belegte schließlich auch, dass prinzipiell indiziert wurde - nach dem Upload eines PDFs erfolgte eine asynchrone Indizierung (also nach Transaktionsende). Dabei landeten aber anscheinend nie alle Begriffe im Index. Nur ca. 30% der ausgewählten Begriffe (alles sinnvolle Substantive, teilweise auch Verben) fand ich in der Suche, nach erneutem Alf-Neustart waren es noch weniger, gefühlt maximal 10%.

Außerdem stellte sich heraus, dass auch simple Properties wie Creator und Modifier nicht 100-prozentig funktionieren. Von 11 Dokumenten, die ausschließlich vom admin User erzeugt und modifiziert wurden, lieferte die Suche nach @cm\:creator:“admin“ nur noch 4 Treffer! Also nochmals Neuindizierung. Danach wurden 7 von 11 Dokumente mit Creator==admin gefunden. Nachdem ich eine kurze Zeit mit dem System gearbeitet und per Web-Client ein weiteres PDF hochgeladen hatte, reduzierte sich die Treffermenge wieder von 7 auf 4. Es scheint also, dass Alfresco bei irgendwelchen Indizierungsprozessen Teile des (intakten) Index einfach beseitigt. Insgesamt würde ich das ganze Problem mit dem Begriff Index-Erosion zusammenfassen.

Details zur Installation

  • Alfresco Labs 3.0 Stable (Tomcat+MySQL) auf Windows und Linux
  •      
  • historisch gewachsener Content-Bestand, teilweise mit eigenen Modell-Erweiterungen
  •      
  • seit August/September zusätzliche Stores
  •      
  • im September wurden der komplette Code nochmal hinsichtlich ResultSet.close()  (ResultSets werden seitdem wie im Alfresco Wiki beschrieben konsequent im finally Block geschlossen)
Hat jemand ähnliche Erfahrungen mit Alfresco+Lucene gemacht oder vielleicht eine Idee woran das Problem liegen könnte?

Outcomes