Hibernate search (Lucene) - Index wird nicht rechtzeitig erzeugt?

  • Themenstarter Themenstarter GerryW
  • Beginndatum Beginndatum
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:

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());
 
Java:
<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());

[/Java]

Oben hats leider nicht geklappt!
 

Zurück
Oben