Lucene返回不一致的结果很重要

时间:2013-10-24 12:08:32

标签: lucene sitecore lucene.net sitecore6

在我们的网站中,我们使用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();
        }

我们过去也有this weird problem。这是通过sitecore提供的补丁解决的,以检测这个并重置Lucene内部变量。不确定这些是否相关。

1 个答案:

答案 0 :(得分:0)

似乎问题不在索引中。但在一个静态变量中,我们习惯于存储和显示计数。当负载很高时,共享变量被并行请求搞砸了,导致了奇怪的结果。