Frage

In meinem Projekt verwenden wir Lucene 2.4.1 für die Volltextsuche. Dies ist ein J2EE-Projekt, IndexSearcher wird einmal erstellt. Im Hintergrund wird der Index alle paar Minuten (wenn der Inhalt ändert) aktualisiert. Benutzer können den Index durch einen Suchmechanismus auf der Seite suchen.

Das Problem ist, scheinen die Ergebnisse zurückgegeben von Lucene irgendwie zwischengespeichert werden.

Das ist Szenario, das ich bemerkt:

  • Ich fange an, die Anwendung und die Suche nach ‚Schlüsselwort‘ - 6 Ergebnisse zurückgegeben werden,
  • Index aktualisiert wird, Luke mit Ich sehe, dass es 8 Ergebnisse jetzt ‚Schlüsselwort abfragen ‘,
  • ich wieder suchen die Anwendung mit, wieder 6 Ergebnisse zurückgegeben.

analysierte ich unsere Konfiguration und habe kein Caching überall gefunden. Ich habe die Suche auf Fehler, und es gibt keine Zwischenspeicherung in Out-Code, returnes searcher.search 6 Ergebnisse.

Ist Lucene Cache Ergebnisse intern irgendwie? Welche Eigenschaften usw. sollte ich überprüfen?

War es hilfreich?

Lösung

Um Änderungen durch IndexWriters gegen einen Index zu sehen, für die Sie ein offenen IndexReader haben, sollten Sie IndexReader.reopen () die neuesten Änderungen zu sehen.

Stellen Sie sicher, dass Ihre Indexwriter wird, um die Änderungen zu begehen, entweder durch eine explizite commit (), ein close (), oder mit autoCommit auf true gesetzt.

Andere Tipps

Mit Versionen vor 2.9.0, zwischengespeichert Lucene automatisch die Ergebnisse von Abfragen. Mit späteren Versionen gibt es kein Caching, wenn Sie Ihre Abfrage in einer Queryfilter wickeln und dann das Ergebnis in einem CachingWrapperFilter wickeln. Sie könnte in Erwägung ziehen, um eine Freigabeschalt> = 2.9.0, wenn der Index Wiedereröffnung wird ein Problem,

Noch eine Anmerkung: Um IndexReader die Echtzeit andere Threads aktualisierte Dokumente zu finden, wenn IndexReader initialisieren, um den Parameter „read-only“ false sein muss. Andernfalls Verfahren wieder öffnen () wird nicht funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top