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 ответ
Похоже, вопроса не было в индексе. Но в статической переменной мы использовали для хранения и отображения счетчиков. Когда нагрузка была высокой, переменная общего доступа испорчена параллельными запросами, что привело к странным результатам.