2017-08-04 2 views
1

Ich verwende Lucene 6 neue IntPoint und ich möchte eine BereichssucheApache Lucene 6 QueryParser Bereichsabfrage funktioniert nicht mit IntPoint

Mit IntPoint.newRangeQuery die Sucharbeiten tun und die richtigen Dokumente zurückgegeben werden, aber wenn ich m mit QueryParser (klassisch) oder die neue StandardQueryParser nichts zurückgegeben wird.

// This works 
Query query = IntPoint.newRangeQuery("duration",1,20); 
System.out.println(query); 

//This doesn't work 
QueryParser parser = new QueryParser("name", analyzer); 
Query query = parser.parse("duration:[1 TO 20]"); 
System.out.println(query); 

//This doesn't work 
StandardQueryParser queryParserHelper = new StandardQueryParser(); 
Query query = queryParserHelper.parse("timestamp:[1 TO 20]", "timestamp"); 
System.out.println(query); 



// In all 3 cases it prints: timestamp:[1 TO 20] 

Ist das ein Fehler oder fehlt mir etwas?

Antwort

2

Es ist kein Fehler, und ich würde nicht sagen, dass Sie wirklich etwas vermissen. QueryParser unterstützt keine IntPoint-Felder oder andere numerische Feldtypen (PointValues). Bereichsabfragen in der QueryParser-Syntax erzeugen immer eine TermRangeQuery, die nach diesem Feld auf der Grundlage der lexikographischen Reihenfolge im invertierten Index sucht, was keine Arbeit für die Suche nach PointValues-Feldern sein wird. Generieren diese mit IntPoint.newRangeQuery und ähnliche Methoden ist die richtige Sache zu tun.

Verwandte Themen