2013-01-04 87 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));