Я использую WCMS Sitecore и имею часть кода C#, которая использует Lucene.net для поиска индекса, основанного на некоторых критериях. Я использую класс IndexSearcher следующим образом:Lucene.net IndexSearcher.search нет результатов
Database webDB = Sitecore.Context.Database;
Sitecore.Data.Indexing.Index index = webDB.Indexes["CampusNewsIndex"];
IndexSearcher indexSearcher = index.GetSearcher(webDB);
BooleanQuery completeQuery = new BooleanQuery();
// build completeQuery
Hits hits = indexSearcher.Search(completeQuery, sort);
for (int i = 0; i < hits.length(); i++)
{
returnItems[i] = Sitecore.Data.Indexing.Index.GetItem(hits.Doc(i), Sitecore.Context.Database);
}
Этот код отлично работает, если результаты возвращаются. Однако, если «hits» не имеет никаких результатов, hits.length() возвращает 1, хотя логически имеет смысл вернуть 0. Кто-нибудь знает, как я могу определить, не возвратил ли запрос результат?
Каковы данные, которые возвращаются в виде хитов, когда результатов нет? – danben
Strange - length() должно быть 0 и равно 0 в реализации Java Lucene. Похоже на Lucene.Net или WCMS-ошибку ... Я бы сообщил об этом. –
Да, чем больше я изучаю это, я собираюсь назвать это ошибкой Sitecore. Похоже, что Lucene что-то возвращает (хотя это не должно), а затем, когда Sitecore пытается оценить это, элемент равен нулю. Я также выложил для справки на форумах Sitecore и перейду сюда, если узнаю что-нибудь. – Kyle