【问题标题】:How to do a Lucene search with Sitecore item with specific date?如何使用具有特定日期的 Sitecore 项目进行 Lucene 搜索?
【发布时间】: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


【解决方案1】:

您正在使用标准 Sitecore 日期字段(切换到原始值视图),因此日期存储为 yyyyMMddTHHmmss 字符串,例如:

20130418T140122

然后您将TermQuery 仅用于查询的第一部分,例如:

20130418

因此您看不到任何结果,因为 TermQuery 与确切的字段值匹配。

您应该尝试WildcardQuery20130418*,或者使用RangeQuery,从20130418T000000 开始,包括这个值,到20130819T000000 结束,不包括这个值。

Here you can find more information about troubleshooting Sitecore and Lucene problems.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多