搜索lucene NumericField以获得最大价值

时间:2012-05-11 15:21:05

标签: lucene

我知道Lucene中有一个NumericRangeQuery,但是有可能让lucene只返回存储在NumericField中的最大值。我可以在整个已知范围内使用RangeQuery然后排序,但这非常麻烦,如果有大量记录,它可能会返回大量结果

2 个答案:

答案 0 :(得分:1)

IndexSearcher.search(Query query, int n, Sort sort)的第二个参数允许指定前n个命中(在您的情况下为1),如果排序正确,则只返回所需的结果。还有其他重载方法可以实现相同的目标。

虽然不能争论麻烦:)

答案 1 :(得分:0)

您可以通过索引Term Enum。不幸的是,我不认为它们的排序方式使得找到最大值瞬间,但至少你不需要进行实际的搜索来找到它。您需要使用NumericUtils将Lucene的内部结构转换为正常数字。

This thread包含一个示例。