G
GerryW
Gast
Ich arbeite mich derzeit in Hibernate search ein, habe die Config soweit korrekt konfiguriert und benutze für den Index ein in-memory Directory (hab auch schon ein "normales" probiert).
Der folgende Methodenausschnitt speichert ein Objekt in der Datenbank, dass ich im Anschluss per Hibernate search suche. Im mittleren Teil habe ich ein Thread.sleep von 1 Millisekunde, das ich benötige damit er das Objekt findet ( zum Indexaufbau?), --> kommentiere ich es hingegen aus, dann findet er es nicht. (Index noch nicht aufgebaut?) Wie stelle ich sicher, dass der Index zum jeweiligen Zeipunkt aktuell ist? Hier der Code:
Der folgende Methodenausschnitt speichert ein Objekt in der Datenbank, dass ich im Anschluss per Hibernate search suche. Im mittleren Teil habe ich ein Thread.sleep von 1 Millisekunde, das ich benötige damit er das Objekt findet ( zum Indexaufbau?), --> kommentiere ich es hingegen aus, dann findet er es nicht. (Index noch nicht aufgebaut?) Wie stelle ich sicher, dass der Index zum jeweiligen Zeipunkt aktuell ist? Hier der Code:
Java:
//speichern des zu suchenden Objekts in der leeren Datenbank
bDao.save(_bearbeiter);
//leider momentran notwendig, weil der Index zu langsam aufbaut
try {
Thread.sleep(1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
/Hibernate search bzw. Lucene Query fertigmachen und starten!
QueryParser parser = new QueryParser( "_name", new StopAnalyzer() );
Query luceneQuery = null;
try {
luceneQuery = parser.parse( "_name:X*" );
} catch (org.apache.lucene.queryParser.ParseException e) {
e.printStackTrace();
}
FullTextQuery fullTextQuery = _fts.createFullTextQuery( luceneQuery );
List results = fullTextQuery.list();
//zu Testzwecken Namen auf Console ausgeben, wirft Nullpointerexception wenn ich nicht 1 Millisekunde warte.
System.out.println(((Bearbeiter)results.get(0)).getName());