2010-05-06 4 views
1

나는 전 동료로부터 우리 solr/lucene 자료를 가져 왔습니다. 그러나 이상한 버그가 있습니다.최적화가 잘못된 검색 결과를 야기 함

dataimport 다음에 최적화가없는 경우 실제로 여러 세그먼트 파일이있는 경우 검색 결과가 잘못됩니다. 사용자 화 된 solr searchComponent를 사용하고 있습니다. 내가 루씬에 대해 아는 한, 최적화가 검색 결과에 영향을주지 않아야합니다. 나는 이것이 멀티 쓰레딩이나 비공개 검색 자/독자 또는 뭔가와 관련이 있을지 의심 스럽다.

아무도 도와 드릴 수 있습니까? 고맙습니다.

답변

0

여전히 추측입니다. 사용자 지정 검색 구성 요소에서 사용하는 사용자 지정 lucene 필터가 있습니다. 그리고 해당 필터에서 SolrIndexSearcher.search가 필터 쿼리에 대해 호출됩니다. 이것이 원인 일 가능성이 높습니다.

lucene에 익숙한 사람들을위한 힌트 일 수 있습니다.

+0

필터, 세그먼트 등을 언급 한 흥미로운 게시물을 찾았습니다. http://www.gossamer-threads.com/lists/lucene/java-user/97270 – KailZhang

+0

나는 진실에 가깝다고 생각합니다. 검색 구성 요소의 프로세스에서 solr의 검색보다는 lucene.indexsearcher.search가 호출됩니다. 해당 검색을 solr로 바꾸면 그 결과가 정확합니다. 그래서 지금은 솔 러를 사용하도록 코드를 다시 작성하는 것입니다 (예전 코드는 lucene의 검색에서 docs return을 사용합니다). – KailZhang

+0

글쎄, 나는 내 발견을 공개하기 위해 돌아왔다. 이제 나는 무슨 일이 일어 났는지 확신합니다. SolrIndexSearcher.getDocSet는 필터로 불려갑니다 만,이 getDocSet는 전체 세그먼트 (segment)를 스캔합니다. 필터는 각 세그먼트 (segment)마다 불려갑니다. 즉, 8 개의 세그먼트가 있으면 8 * 8 스캔이됩니다. 또한 필터에서는 문서 ID가 세그먼트로 유지됩니다. 따라서 사용자 정의 루센 필터를 작성하려고 할 때주의하십시오. – KailZhang

관련 문제