У меня есть элемент контента Sitecore с полем даты с именем «EventDate». Я хочу искать эти предметы с определенной датой с помощью Lucene.Net.Как выполнить поиск Lucene с элементом Sitecore с определенной датой?
Ниже приведен код, я пытался, но я не получаю результат:
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);
}
}
}
Вы проверили, есть ли что-нибудь в вашем индексе? http://marketplace.sitecore.net/ru/Modules/Index_Viewer.aspx - очень удобный инструмент для проверки наличия в вашем индексе каких-либо элементов, и вы можете запустить свой запрос, используя это, а также проверить, не является ли ваш запрос неправильным. – Trayek
Используете ли вы стандартное поле даты и времени Sitecore для 'EventDate'? –
Да, я дважды проверил это. У меня есть другой метод, который принимает диапазон дат и возвращает список элементов. Этот метод работает. – hegdesachin