人
我有数十亿条有两个属性的记录:
RecordCreatedTime,RecordContent
我已经使用lucene来索引记录,并且完成了。
现在我想根据RecordCreatedTime
查询一些记录,例如,请查看2013年11月的文档。
我正在考虑使用RecordCreatedTime
对文档进行排序,并尝试了一些方法,例如NumericDocValuesSorter
,但它不起作用。
你们能提供更多的材料,所以我可以仔细看看吗?
非常感谢。
答案 0 :(得分:0)
您应该查看Lucene的DateTools
,它为您提供了以适合在索引中搜索和排序的方式表示日期的工具。当以该格式编制索引时,TermRangeQuery
可用于搜索特定范围(例如2013年11月)。
您还可以通过将Sort
传递到搜索电话中来轻松排序。
例如:
String startDateString = DateTools.dateToString(startDate, DateTools.Resolution.DAY);
String endDateString = DateTools.dateToString(endDate, DateTools.Resolution.DAY);
TermRangeQuery query = TermRangeQuery.newStringRange("recordCreatedTime", startDateString, endDateString, true, false);
SortField field = new SortField('recordCreatedTime', SortField.Type.STRING);
Sort sort = new Sort(field);
TopDocs results = searcher.search(query, numDocs, sort);