【发布时间】:2013-04-18 11:55:45
【问题描述】:
我的内容项是 Sitecore,其日期字段名为“EventDate”。我想使用 Lucene.Net 搜索具有特定日期的项目。
以下是我尝试过的代码,但我没有得到结果:
var index = SearchManager.GetIndex("event_search_index");
var items = new List<EventDetailItem>();
var eventDateString = eventDate.Year.ToString("D4") + eventDate.Month.ToString("D2") + eventDate.Date.Day.ToString("D2");
using (var context = new IndexSearchContext(index))
{
var searchTerm = new Lucene.Net.Index.Term("EventDate", eventDateString);
var query = new Lucene.Net.Search.TermQuery(searchTerm);
var topFieldDocs = context.Searcher.Search(query, 1);
if (topFieldDocs != null)
{
var scoreDocs = topFieldDocs.ScoreDocs;
foreach (var scoreDoc in scoreDocs)
{
var doc = context.Searcher.Doc(scoreDoc.doc);
var uriField = doc.GetField("_url");
var itemUri = new Sitecore.Data.ItemUri(uriField.StringValue());
var item = Sitecore.Context.Database.GetItem(itemUri.ToDataUri());
if (item == null) continue;
var eventItem = new EventDetailItem(item);
items.Add(eventItem);
}
}
}
【问题讨论】:
-
您是否仔细检查过您的索引中是否有任何内容? marketplace.sitecore.net/en/Modules/Index_Viewer.aspx 是一个非常方便的工具,可以检查您的索引中是否有任何内容,您也可以使用它来运行您的查询,以检查您的查询是否错误。
-
EventDate是否使用标准 Sitecore 日期时间字段? -
是的,我已经仔细检查过了。我有另一种方法,它采用日期范围并返回项目列表。此方法有效。
-
是的,马拉斯。我正在为 EventDate 使用标准的 Sitecore 日期字段。
标签: .net sitecore lucene.net sitecore6