gpt4 book ai didi

.net - 如何使用特定日期的 Sitecore 项目进行 Lucene 搜索?

转载 作者:行者123 更新时间:2023-12-02 22:05:59 25 4
gpt4 key购买 nike

我有一个内容项目是 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);
}
}
}

最佳答案

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

20130418T140122

然后您只对查询的第一部分使用 TermQuery,例如:

20130418

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

您应该使用 20130418* 尝试 WildcardQuery 或使用 RangeQuery20130418T000000 开始,包括此值并结束在 20130819T000000 上不包括此值。

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

关于.net - 如何使用特定日期的 Sitecore 项目进行 Lucene 搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com