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