2016-05-25 10 views
-1

Einer unserer Kunden, für den wir kundenspezifische Entwicklungen durchgeführt haben, steht vor diesem seltsamen Problem. Obwohl wir immer noch nur im Vor-Uat sind, sehen wir, dass dies keinem bekannten Lucene-Verhalten entspricht.RCA benötigt mehr Informationen, mit Hilfe der Hibernate-Suche

Wir verwenden Hibernate Search 5.5.2, Apache Lucene 5.3.x; Wir verwenden Dateisystem für den Index. Wir betreiben dies in einem Weblogic 12c Container mit Oracle 12c als Datenbank.

Wir haben zwei verschiedene virtuelle Maschinen, die zwei verschiedene Weblogic 12c-Instanzen (und damit die Anwendung) hosten, die auf die gleiche Datenbank verweisen (dadurch die gleichen Daten); Zu Beginn der Anwendung indexieren wir die Daten auf dem Dateisystem auf jedem der Knoten. Aber für die gleiche Abfrage liefert es unterschiedliche Ergebnisse auf jedem der Knoten!

Hat jemand ein ähnliches Problem konfrontiert? Ist der Indexierungsmechanismus in irgendeiner Weise an die Hardware oder eine bestimmte Maschine gebunden? Ich kann den Grund für dieses Verhalten einfach nicht verstehen. Die nächste Frage ist auch, dass, wenn es nicht replizierte (keine Form der Replikation) Clusterknoten (Weblogic 12c) - ist es in Ordnung, auf jeden der Knoten getrennt, die gleichen Daten zu indizieren? Oder ist es notwendig, dass wir die Master-Slave-Replikation verwenden? Ich brauche die Antwort nicht aus Sicht der Wartbarkeit, sondern aus der Sicht der Korrektheit der Ergebnisse.

Siehe die ursprüngliche Frage auf der offiziellen Hibernate Suche Forum unter: https://forum.hibernate.org/viewtopic.php?f=9&t=1043314

Antwort

1

Es scheint, als ob Sie gerade auf jedem Knoten einen Index speichern nur die Daten enthalten, die durch diesen Knoten geändert. Daher variieren die Abfrageergebnisse je nach dem Knoten, der die Abfrage ausführt.

Sie sollten nach Optionen für Clustered-Setups suchen, insbesondere nach master/slave set-up mit JMS oder Infinispan-based backend. Beide stellen sicher, dass es einen einzigen Index gibt, der alle Daten enthält.

+0

Nein ... Wir ändern keine Daten. Die Daten sind schreibgeschützt (zur Ansicht). Bedeutet dies, dass jeder Knoten die gleichen Daten aus derselben Datenbank unterschiedlich indiziert? –

+0

Wie lösen Sie dann die Indizierung aus? Verwenden Sie den Massenindexer? Sie sollten es nur auf einem Knoten des Clusters starten. – Gunnar

+0

Betrachten Sie es als nicht repliziertes Cluster (keine Datenreplikation) ODER sehen Sie sich das Problem jetzt einfach als 'zwei unabhängige Knoten von der gleichen Datenbank (Oracle rac) Knoten lesen - genau die gleichen Daten - Indizierung der Daten und dann mit der genau der gleiche Suchbegriff für die Suche nach Daten ': Die zurückgegebenen Ergebnisse sind unterschiedlich! Ist das das erwartete Verhalten? –