1

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

4

2 回答 2

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"));
于 2012-12-20T01:30:25.783 回答
2

只需在包含日期的字段上发出降序号QuerySort

使用带有Sortin 参数的 Search 方法,如下所示:

IndexSearcher.Search(查询、过滤器、整数、排序)

于 2012-12-19T03:30:24.893 回答