2009-10-14 3 views
0

색인을 최신으로 유지하려면 5 분마다 검색 색인을 추가/수정해야합니다. 내가 설정 한 방법은 2 개의 인덱스, 하나는 Full 디렉토리에, 다른 하나는 Incremental 디렉토리에 있으며, MultiSearcher를 사용하고 있습니다.Lucene.Net MultiSearcher를 사용할 때 색인 유지

색인을 유지 관리하는 프로세스를 작성 중입니다. 내가하고있는 일은 마지막 인덱스 날짜를 저장 프로 시저에 전달하는 것이고 DB는 DB의 "UpdatedOn"필드를 기반으로 모든 새로운/수정 된 레코드를 반환합니다. 그런 다음 각 디렉토리에 대한 IndexReader를 열고 기본 키에 대한 TermQuery를 기반으로 문서를 삭제하여 2 개의 디렉토리를 반복합니다. 그런 다음 IndexWriter를 사용하여 증분 인덱스에 레코드를 추가하고 최적화합니다.

색인에있는 레코드가 반환되지 않는다고해도 이후 검색을 수행 할 때 무슨 일이 발생합니까?

색인 유지 관리를 잘못하고 있습니까?

답변

1

검색 인터페이스에서 {Multi} IndexSearcher를 닫았다가 다시여시겠습니까? 성능상의 이유로 일부 응용 프로그램은 SearchIndexer 개체를 메모리에 유지하여 모든 검색에서 개체와 해당 기본 디렉터리를 다시 열지 않아도되지만 IndexSearcher는 변경/추가를 선택하지 않습니다. 기본 인덱스로 이동합니다.

귀하의 경우에 문제가있는 것이 아닌지 잘 모르겠지만 일반적으로 검색자가 새 문서를 선택하지 않은 것은 해당 항목이 색인에 추가되기 전에 검색자가 열렸 기 때문입니다. .. 단지 생각.

+0

예, 각 검색 후에 IndexSearcher를 닫습니다. – druta

관련 문제