2

在我们的网站中,我们使用 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 内部变量。不确定这些是否相关。

4

1 回答 1

0

似乎问题不在索引中。但是在我们曾经用来存储和显示计数的静态变量中。当负载很高时,共享变量会被并行请求弄乱,从而导致奇怪的结果。

于 2013-10-29T04:52:54.910 回答