如何在Lucene 6中对IntPont或LongPoint字段进行排序

时间:2016-07-13 17:23:56

标签: lucene

嗨:我正在从Lucene 5.1迁移到Lucene 6。我发现InPoint不支持排序,因为它的DocValuesType被冻结为NONE,排序需要NUMERIC。在Lucene 5.1中,我可以设置新数字字段的字段类型,这样我就可以进行基于范围的搜索并对结果进行排序。我知道我可以迁移到LegacyIntField,但我想迁移到新的IntPoint。有没有人知道如何索引数值以支持基于范围的查询和排序?

谢谢!

2 个答案:

答案 0 :(得分:5)

您必须使用其他SortedNumericDocValuesField

document.add(new SortedNumericDocValuesField("bid_sorter", bid));

并根据它进行排序

searcher.search(query, hitsPerPage, new Sort(new SortField("bid_sorter", SortField.Type.SCORE, true)))

答案 1 :(得分:0)

您需要将值存储在NumericDocValuesField或其子类中。 doc.add(new NumericDocValuesField(field, 10));

然后,按此字段排名的搜索文档将是:

Sort sort = new Sort(new SortedNumericSortField(field, SortField.Type.INT, true)); TopDocs topDocs = indexsearcher.search(query, returnedDocNum, sort);