Ich habe einige grundlegende Fragen zur Verwendung von SearcherManager mit IndexWriter.Verwenden von IndexWriter mit SearchManager
Ich muss den Lucene-Index in der Anwendung regelmäßig neu erstellen und derzeit passiert es auf einem anderen Thread als der, der die Suchanfragen dient.
- Kann ich dieselbe IndexWriter-Instanz während der Lebensdauer der Anwendung verwenden, um den Index regelmäßig neu zu erstellen? Momentan erstelle/öffne ich ihn einmal während des Hochfahrens und rufe einfach
IndexWriter#commit
auf, wenn ein neuer Index erstellt wird. - Ich verwende
SearcherManager
zu erwerben undIndexSearcher
Instanzen für jede Suchanfrage freigeben. Nachdem der Index periodisch erstellt wurde, plane ich,SearcherManager#maybeRefresh
Methode zu verwenden, umIndexSearcher
instances.SearcherManager-Instanz zu erhalten, wird auch einmal während des Starts erstellt, und ich beabsichtige, es durch zu behalten. - Ich schließe nicht die
IndexWriter
oderSearcherManager
während der gesamten Lebensdauer der App.
Nun zu den Fragen,
- Wenn ich einen neuen Indexwriter jedes Mal, wenn ich den Index neu erstellen muß erstellen, wird
SearcherManager#maybeRefresh
die Lage sein, zu erkennen, dass es eine neue Instanz Indexwriter ist? Oder muss ich einen neuen SearcherManager mit dem neu erstellten IndexWriter erstellen? - Was ist der Unterschied zwischen dem Erstellen einer
SearcherManager
Instanz mit einemIndexWriter
, Erstellen mit einemDirectoryReader
oder Erstellen mit einemDirectory
?