開始日フィールドを持つ lucene.net インデックスにイベントのリストを保存しています。ユーザーがクリックして、表示中のイベントに関連する次のイベント (開始日フィールドに基づく) を表示するためのボタンを追加したいと考えています。
現在、ConstantScoreRangeQuery
検索を使用して 2 つの日付間のイベントを検索していますが、インデックスで次の日付を取得する方法がわかりません。
開始日フィールドを持つ lucene.net インデックスにイベントのリストを保存しています。ユーザーがクリックして、表示中のイベントに関連する次のイベント (開始日フィールドに基づく) を表示するためのボタンを追加したいと考えています。
現在、ConstantScoreRangeQuery
検索を使用して 2 つの日付間のイベントを検索していますが、インデックスで次の日付を取得する方法がわかりません。
を使用してそれを行う簡単な方法を次に示します。TermEnum
RAMDirectory ramDir = new RAMDirectory();
IndexWriter iw = new IndexWriter(ramDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_CURRENT));
Document d = new Document();
Field date = new Field("date", "", Field.Store.YES, Field.Index.ANALYZED);
d.Add(date);
DateTime first = DateTime.Now.Subtract(TimeSpan.FromDays(5));
DateTime second = DateTime.Now.Subtract(TimeSpan.FromDays(4));
DateTime third = DateTime.Now.Subtract(TimeSpan.FromDays(3));
DateTime fourth = DateTime.Now.Subtract(TimeSpan.FromDays(2));
DateTime fifth = DateTime.Now.Subtract(TimeSpan.FromDays(1));
date.SetValue(DateTools.DateToString(first, DateTools.Resolution.MINUTE));
iw.AddDocument(d);
date.SetValue(DateTools.DateToString(second, DateTools.Resolution.MINUTE));
iw.AddDocument(d);
date.SetValue(DateTools.DateToString(third, DateTools.Resolution.MINUTE));
iw.AddDocument(d);
date.SetValue(DateTools.DateToString(fourth, DateTools.Resolution.MINUTE));
iw.AddDocument(d);
date.SetValue(DateTools.DateToString(fifth, DateTools.Resolution.MINUTE));
iw.AddDocument(d);
iw.Commit();
IndexReader ir = iw.GetReader();
var termEnum = ir.Terms(new Term("date", DateTools.DateToString(second, DateTools.Resolution.MINUTE)));
if (termEnum.Next())
{
Console.WriteLine(DateTools.StringToDate(termEnum.Term().Text()));
Console.WriteLine(DateTools.StringToDate(termEnum.Term().Text()).Day == third.Day);
}
Console.Read();