考虑到NumericUtils API的警告: 注意:此API仅供内部使用,可能会在下一个版本中以不兼容的方式进行更改。 我已经注意到这成为某些人的问题,因为从3.6版本到4.0版本,NumericUtils API确实发生了重大变化。 我建议避免直接使用它。相反,使用NumericRangeQuery搜索数值。通过将最小和最大范围设置为相等的值,可以获得精确匹配。此外,有意选择哪些字段应该是数字可能会有所帮助。 NumericFields旨在允许数字范围查询和排序。 如果您不需要使用它作为数字值进行搜索,则可能不应该是NumericField。 例如,标识号通常应是关键字而不是数字。
BytesRef ref = new BytesRef(); NumericUtils.longToPrefixCoded( 12L, 0, ref ); Query q = new TermQuery( new Term( fieldname, ref ) );