2013-01-04 86 views

回答

6

考慮對NumericUtils API

注意警告:此API僅供內部用途,並在接下來的版本不兼容的方式可能會改變。

我注意到這對某些人來說成了一個問題,因爲NumericUtils API的確從Version 3.6變爲了Version 4.0。我會建議避免直接使用它。請使用NumericRangeQuery來搜索數字值。通過將最大和最小範圍設置爲相等的值可以獲得精確的匹配。

此外,故意選擇哪些字段應該是數字可能會有所幫助。 NumericFields旨在允許數字範圍查詢和排序。如果您不需要使用它作爲數字值進行搜索,則它可能不應該是NumericField。例如,識別號碼通常應該是關鍵字,而不是數字。

1
BytesRef ref = new BytesRef();  
NumericUtils.longToPrefixCoded(12L, 0, ref); 
Query q = new TermQuery(new Term(fieldname, ref));