在字段中返回具有最高DateTime值的文档的最有效方法

时间:2012-12-18 23:34:46

标签: lucene.net

我有一个带文件的lucene索引 - 它们都包含存储DateTime值的字段。提取/最有效的方法来提取具有最高价值的文档。整数值的外观如何?当然我假设使用DateTools.DateToString或类似的方法将值转换为字符串。

2 个答案:

答案 0 :(得分:3)

阐述Jf Beaulac的答案,这样的代码示例可能如下所示。请注意,'CreatedAt'字段用于存储DateTime值。

//providing query that will not filter any documents
var query = new TermRangeQuery("CreatedAt", DateTools.DateToString(DateTime.MinValue, DateTools.Resolution.MINUTE), DateTools.DateToString(DateTime.MaxValue, DateTools.Resolution.MINUTE), false, false);

//providing sorting on 'CreatedAt' and returning just one result
var createdAtSerchResults = searcher.Search(query, null, 1, new Sort(new SortField("CreatedAt", SortField.LONG, true)));

//extracting CreatedAt value from returned document
var documentWithMaxCreatedAt = searcher.Doc(createdAtSerchResults.ScoreDocs.First().Doc);

var result = DateTools.StringToDate(documentWithMaxCreatedAt.Get("CreatedAt"));

答案 1 :(得分:2)

只需在包含日期的字段上发出Query Sort降序。

使用带有Sort参数的搜索方法,如下所示:

IndexSearcher.Search(Query, Filter, int, Sort)