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

日付を含むフィールドに降順でaQueryを発行するだけです。Sort

Sort次のように、in パラメーターを受け取る Search メソッドを使用します。

IndexSearcher.Search(クエリ、フィルター、int、ソート)

于 2012-12-19T03:30:24.893 に答える