2013-10-24 3 views
2

웹 사이트에서 Lucene 쿼리를 사용하여 검색 결과를 얻습니다. 문제는 때때로 올바른 결과의 일부를 무작위로 얻는 것입니다. 보통은 괜찮습니다. 그러나 검색 기준 조정, 정렬 순서 변경 등과 같은 작업을 수행 할 때 갑자기 결과의 하위 집합 (때로는 결과 0 개)이 표시됩니다. 정렬 순서를 다시 변경하면 올바른 결과가 다시 나타나며 문제가 다시 표시되지 않을 수 있습니다.일치하지 않는 결과를 반환하는 Lucene

이 문제가 발생했을 가능성이있는 사람이 있습니까? 인덱스 손상이 될 수 있습니까, 아니면 인덱스의 부하가 클 수 있습니까?

Lucene.Net 2.9.4.1을 사용하고 있습니다. 이것은 Sitecore.NET 6.6.0 (개정판 130404) 프로젝트입니다. Google의 색인에는 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 내부 변수를 재설정했습니다. 이들이 관련이 있는지 확실하지 않습니다.

+0

다른 스레드에서 같은 시간에 일부 항목을 업데이트하거나 인덱스를 다시 작성 하시겠습니까? –

+0

기술적으로 한 사용자가 인덱스 검색을 수행하는 경우 시스템의 다른 부분에서 게시가 발생하여 인덱스가 업데이트 될 수 있습니다. 인덱스 변경은 분당 여러 번 발생할 수 있습니다. 병렬 색인 검색은 분당 수백 번 발생할 수 있습니다. – ravinsp

+0

lucene 검색에서 단일 결과가 손실되면 사이트 코어에서 lucene 색인을 업데이트하는 메커니즘으로 인해 발생할 수 있습니다. 기존 항목을 색인에서 제거하고 새 버전을 크롤링 한 다음 다시 색인에 추가합니다. 이전 항목 제거와 항목이 색인에없는 새 항목 추가 사이에는 간격이 있습니다. 아직 항목을 반환하지 않는다고 설명하는 것은 아닙니다. –

답변

0

색인에 문제가없는 것으로 보입니다. 그러나 정적 변수에서 우리는 카운트를 저장하고 표시하는 데 사용했습니다. 로드가 높을 때 공유 변수가 병렬 요청에 의해 엉망이되어 이상한 결과를 초래했습니다.