我正在使用Sitecore WCMS並且有一段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.length()返回1,即使它返回0是合理的。是否有人知道如何判斷查詢是否返回結果?
沒有結果時返回的數據是什麼? – danben 2010-01-04 18:58:38
奇怪 - length()應該爲0,並且在Lucene的Java實現中爲0。看起來像一個Lucene.Net或WCMS的錯誤...我會報告它。 – 2010-01-04 19:00:04
是的,我正在研究它越多,我打算稱這是一個Sitecore錯誤。它看起來像Lucene返回的東西(儘管它不應該),然後當Sitecore試圖評估它到一個項目它爲空。我已經在Sitecore論壇上發佈了幫助,如果發現任何問題,我會在這裏發佈。 – Kyle 2010-01-04 19:36:20