Lucene返回不一致的结果计数

Lucene返回不一致的结果计数,lucene,sitecore,lucene.net,sitecore6,Lucene,Sitecore,Lucene.net,Sitecore6,在我们的网站中,我们使用Lucene查询来获得搜索结果。问题是我们有时会随机得到正确结果的子集。通常一切都很好。但当您在做一些事情,如调整搜索条件、更改排序顺序等时,突然会看到结果的子集(有时是0个结果)。如果再次更改排序顺序,则会再次得到正确的结果,并且可能再也看不到该问题 有没有人经历过这个问题,并且知道是什么导致了这个问题?这可能是索引损坏还是索引的高负载 我们正在使用Lucene.NET2.9.4.1。这是一个Sitecore.NET 6.6.0(版本130404)项目。我们的索引只有不

在我们的网站中,我们使用Lucene查询来获得搜索结果。问题是我们有时会随机得到正确结果的子集。通常一切都很好。但当您在做一些事情,如调整搜索条件、更改排序顺序等时,突然会看到结果的子集(有时是0个结果)。如果再次更改排序顺序,则会再次得到正确的结果,并且可能再也看不到该问题

有没有人经历过这个问题,并且知道是什么导致了这个问题?这可能是索引损坏还是索引的高负载

我们正在使用Lucene.NET2.9.4.1。这是一个Sitecore.NET 6.6.0(版本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内部变量,解决了这个问题。不确定这些是否相关。

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

您是在另一个线程中同时更新某些项目还是重建索引?从技术上讲,当一个用户执行索引搜索时,发布可能发生在系统的另一部分上,从而导致索引更新。索引更改每分钟可能发生多次。并行索引搜索每分钟可能发生数百次。lucene搜索失去单一结果可能是由于sitecore中更新lucene索引的机制造成的-它从索引中删除现有项,爬网新版本并添加回索引。在删除旧项目和添加新项目(其中项目不在索引中)之间存在差距。但这并不能解释为什么不退货,也不是少退一件。如果实际计数是1215,你会得到413。完全随机的。我还用我们过去遇到的另一个奇怪的问题更新了我的问题(现在已经解决了)。