Lucene возвращает непоследовательные результаты

На нашем сайте мы используем запросы Lucene для получения результатов поиска. Проблема в том, что мы иногда получаем случайное подмножество правильных результатов. Обычно все хорошо. Но когда вы делаете некоторые вещи, такие как настройка критериев поиска, изменение порядка сортировки и т. Д., Внезапно вы видите подмножество результатов (иногда 0 результатов). Если вы снова измените порядок сортировки, вы снова получите правильные результаты и больше никогда не увидите проблему.

Кто-нибудь сталкивался с этой проблемой и имел представление о том, что может быть причиной этого? Может ли это быть повреждением индекса или высокой нагрузкой на индекс?

Мы используем Lucene.Net 2.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. Не уверен, связаны ли они.

1 ответ

Решение

Похоже, вопроса не было в индексе. Но в статической переменной мы использовали для хранения и отображения счетчиков. Когда нагрузка была высокой, переменная общего доступа испорчена параллельными запросами, что привело к странным результатам.

Другие вопросы по тегам