Sorting 如何根据lucene中的字段对文档进行排序?

Sorting 如何根据lucene中的字段对文档进行排序?,sorting,lucene,document,Sorting,Lucene,Document,伙计们 我有数十亿条记录,它们有两个属性: RecordCreatedTime,RecordContent 我用lucene为记录编制索引,已经完成了 现在我想根据RecordCreatedTime查询一些记录,例如,在2013年11月查看文档 我正在考虑使用RecordCreatedTime对文档进行排序,并尝试了一些方法,如NumericDocValuesSorter,但没有成功。 你们能提供更多的材料让我仔细看看吗?? 非常感谢。您应该查看Lucene's,它为您提供了以适合在索引中搜索和

伙计们

我有数十亿条记录,它们有两个属性:

RecordCreatedTime,RecordContent

我用lucene为记录编制索引,已经完成了

现在我想根据
RecordCreatedTime
查询一些记录,例如,在2013年11月查看文档

我正在考虑使用
RecordCreatedTime
对文档进行排序,并尝试了一些方法,如
NumericDocValuesSorter
,但没有成功。 你们能提供更多的材料让我仔细看看吗??
非常感谢。

您应该查看Lucene's,它为您提供了以适合在索引中搜索和排序的方式表示日期的工具。以该格式编制索引时,可以使用搜索特定范围(例如2013年11月)

您还可以通过在搜索调用中传递a来轻松排序

例如,类似于:

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);

谢谢目前,我将时间粒度转换为一个月(使用字符串存储)以加快查询速度,这似乎与DateTools中使用的方式非常相似。