可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
Hi: I am migrating to Lucene 6 from Lucene 5.1. I found out that InPoint does not support sorting as its DocValuesType is frozen to NONE and sorting requires NUMERIC. In Lucene 5.1, I could set the field type of a newmeric field so I could do range based search and sort the result. I know I can migrate to LegacyIntField but I'd like migrate to the new IntPoint instead. Does any one know how to index a numeric value to support both range based query and sorting?
Thank you!
回答1:
You have to use additional SortedNumericDocValuesField
document.add(new SortedNumericDocValuesField("bid_sorter", bid));
and make sort based on it
searcher.search(query, hitsPerPage, new Sort(new SortField("bid_sorter", SortField.Type.SCORE, true)))
回答2:
You need to store the value in a NumericDocValuesField or its subclasses. doc.add(new NumericDocValuesField(field, 10);
Then search docs ranked by this field will be :
Sort sort = new Sort(new SortedNumericSortField(field, SortField.Type.INT, true)); TopDocs topDocs = indexsearcher.search(query, returnedDocNum, sort);