2017-02-01 4 views
0

Ich habe gerade in Lucene Welt trat und versuchen, die Verwendung der ConstantScoreRange Abfrage und ihre Alternative in Lucene 6.2.1 zu verstehen.ConstantScoreRangeQuery ist veraltet

Nach Googeln fand ich, dass ConstantScoreRange veraltet und ich sollte entweder NumericRangeQuery oder TermRangeQuery von diesem Link gehen: https://lucene.apache.org/core/2_9_4/api/core/deprecated-list.html

Ich bin derzeit mit Lucene 6.2.1 Bibliothek und versuchen, diesen Code-Schnipsel zu ändern:

public Query toQuery() { 
     return new ConstantScoreRangeQuery(getName(), lowValue, highValue, true, true); 
} 

in einem Format, das in lucene 6.2.1

wie pro meinem Verständnis geeignet ist die Voraussetzung ist NumericRangeQuery als die Daten bei verwenden ng, die an ConstantScoreRangeQuery übergeben wurden, waren numerisch und keine Begriffe.

Seit NumericRangeQuery API ist auch veraltet in Lucene 6.2.1 Ich bin mir nicht sicher, welche die richtige API ist zu verwenden.

Bitte helfen Sie mir dabei.

Danke, Abhishek

Antwort

0

Ab 6.0 sind die alten numerischen Typen als veraltet und umbenannt (LegacyIntField, zum Beispiel), und sollte mit PointValues, die bieten insgesamt eine bessere Leistung ersetzt werden.

Um es für einen Integer-Wert zu verwenden, zum Beispiel, würden Sie Index wie folgt aus:

int myIntValue = 10; 
document.add(new IntPoint("myIntField", myIntValue)); 

Und es abzufragen:

Query query = IntPoint.newRangeQuery("myIntField", 5, 15);