2016-07-11 5 views
0

Ich möchte Hibernate Search in meiner Anwendung verwenden; Die Anwendung enthält mehrere Module, um die Suchindex zugreifen:Sharing Hibernate Suchindex

  • einem Schreib-/Lesegerät Modul
  • zwei oder drei Nur-Lese-

Module (die Module auf der gleichen physikalischen Maschine befinden wird)

Kann dies getan werden? Reicht es aus, wenn das gleiche Indexverzeichnis zwischen den Modulen geteilt wird? Gibt es irgendwelche Leistungsstrafen?

Antwort

0

Ja. Es gibt nur Leistungseinbußen, wenn Sie mehrere Anwendungen auf demselben Computer unter schreiben müssen.

Da in Ihrem Fall nur eine App schreiben wird, können Sie eine gute Leistung erzielen, indem Sie zulassen, dass diese Anwendung den "exklusiven Modus" verwendet, und die anderen Anwendungen nur lesen.

Der Exklusivmodus ist der Standard seit Version 5.0, daher ist keine Konfigurationsänderung für die Writer/Reader-Anwendung erforderlich.

Die anderen Anwendungen müssen so konfiguriert werden, dass sie beim Bootstrapping keinen IndexWriter öffnen, wodurch sie die Indexschreibsperre erhalten würden.

Gerade diese Eigenschaft:

hibernate.search.default.exclusive_index_use = false 

Eine Einschränkung: Sie können nicht verwenden, um die Near-Echtzeit-Indexmanager in section 3.2.2 beschrieben, wie die Schreibvorgänge nicht auf den Datenträger auf jedem Schreibvorgang gespült werden würde, so dass die Andere Anwendungen würden die neuesten Änderungen nicht sehen.

+0

Vielen Dank! Ungefähr wie groß wird diese Verzögerung sein? Sekunden? Protokoll? – krisy

+0

Bei Verwendung von NRT wird die Verzögerung nicht durch die Zeit gesteuert, sondern durch die Puffer, die voll sind. Das ist nicht sehr praktisch, deshalb habe ich vorgeschlagen, NRT nicht zu aktivieren. Selbst die Standardeinstellungen (Nicht-NRT) liefern eine ziemlich gute Leistung. – Sanne