Meine Anwendung verwendet das Grails durchsuchbare Plugin mit Compass darunter.Grails durchsuchbares Plugin
Die Tabellen beginnen indiziert ist etwa 36 MB, und baut Indizes von etwa 350 MB. Dies ist in den meisten Büchern der Völker klein.
Wenn wir die Indizes löschen und die Grails-Anwendung starten, werden die Indexdateien wie erwartet neu erstellt, aber nach ungefähr einem Tag der Ausführung finden wir diesen Fehler. Wir rufen den 'Reindex' auf den TellMeEntity
Instanzen auf, wie sie gespeichert werden, um sicherzustellen, dass der Index aktualisiert wird.
Ausnahme org.compass.core.engine.SearchEngineException: Fehler alias [TellMeEntity] und ids [[gespeichert/unkomprimiert, indiziert, omitNorms, omitTf]] löschen; Die geschachtelte Ausnahme ist java.io.FileNotFoundException:/var/www/web17/log/mn/index/tellmeentity/segments_2 (Keine solche Datei oder Verzeichnis) unter org.compass.core.lucene.engine.transaction.readcommitted.ReadCommittedTransaction (doDelete : 348)
Offensichtlich sobald der Fehler auftritt, wird der Index nicht aktualisiert, und die Suchvorgänge funktionieren nicht bei den neu eingegebenen Daten.
Wir haben die einfachen Dinge wie Speicherplatz usw. überprüft. Die 'segments_2' existiert nicht, aber ich würde erwarten, dass Compass es selbst erstellt.
In der grails-app/conf/Searchable.groovy
Datei:
....
mirrorChanges = true
bulkIndexOnStartup = "fork"
....
In meinem Code:
....
def formInstance = new TellMeEntity(name:'form',dataOwner:session.community,createBy:session.zoner,tellMeSite:form).save()
formInstance.reindex()
....
Meine aktuelle Erfahrung ist, dass dieser Code für etwa 24 Stunden funktioniert, aber dann beginnt, Probleme zu geben. Wir erzeugen etwa 3000 neue Einträge pro Tag, was sich nicht wie ein hohes Volumen anhört, also glaube ich nicht, dass es volumenbezogen ist.
Wie kann dieses Problem behoben werden?
Wo in Ihrem Code sind Sie neu indizieren? Ich vermute, dass es irgendwo eine .lock-Datei gibt, die erstellt wurde und Ihre Probleme verursacht. Mehr Code würde helfen. –
Der Code wurde aktualisiert. – user304217
Ein Code-Segment wurde hinzugefügt. Ich schaue auch an, dass ich die standardmäßigen lokalen Dateiindizes nicht verwende, sondern den Cache in der Datenbank mit JDBCDirectory ablege. – user304217