在我们的网站中,我们使用 Lucene 查询来获取搜索结果。问题是我们有时会随机获得正确结果的子集。通常一切都很好。但是当你做一些事情比如调整搜索条件、改变排序等时,你会突然看到结果的一个子集(有时是 0 个结果)。如果您再次更改排序顺序,您将再次获得正确的结果,并且您可能再也看不到问题了。
有没有人遇到过这个问题并知道可能是什么原因造成的?可能是索引损坏还是索引上的高负载?
我们正在使用 Lucene.Net 2.9.4.1。这是一个 Sitecore.NET 6.6.0 (rev. 130404) 项目。我们的索引只有不到 10000 个文档。
这是我们用来获取总结果计数的代码示例:
Index index = SearchManager.GetIndex("indexname");
using (IndexSearchContext searchContext = index.CreateSearchContext())
{
Lucene.Net.Search.IndexSearcher searcher = searchContext.Searcher;
TopScoreDocCollector collector = TopScoreDocCollector.create(1, false);
searcher.Search(query, collector);
return collector.GetTotalHits();
}
我们过去也遇到过这个奇怪的问题。这个问题通过 sitecore 提供的补丁来解决,该补丁可以检测到这一点并重置 Lucene 内部变量。不确定这些是否相关。