2010-07-30 2 views
0

텍스트 내용 외에도 내 문서에는 검색 할 수있는 태그가 있습니다. 문제는 태그가 자주 변경된다는 것이고 태그가 추가되거나 제거 될 때마다 저는 수백 개의 문서를 처리 할 때 상당히 느린 UpdateDocument를 호출해야합니다.태그가 자주 바뀔 수있는 태그가있는 문서의 색인 전략

자주 변경되고 Lucene으로 검색해야하는 태그를 저장하는 전략이 있습니까? 나는 태그를 개별 문서로 유지하여 태그를 작게 유지하려고 생각했지만 태그와 컨텐트를 빠르게 검색하는 방법을 알 수는 없습니다.

답변

4

[tag, UID] 쌍을 관계형 데이터베이스에 저장하십시오. 태그가 추가되거나 업데이트 될 때마다 데이터베이스의이 테이블에 태그가 추가되고 업데이트됩니다.

태그 데이터 (데이터베이스에 저장 됨)와 컨텐츠 (Lucene에 인덱스 됨)를 모두 포함하는 Lucene 검색을 수행 할 때 결과를 함께 병합해야합니다. 당신이 할 수있는 한 가지 방법은하는 것입니다

  1. 가 끌어 데이터베이스 쿼리를 확인 모든 UID의
  2. 번역 모든 UID의 루씬 문서의 ID의과마다의 비트 세트의 비트를 설정 문제의 태그 일치 Lucene doc ID
  3. BitSet을 래핑하는 필터를 만들고 해당 필터를 검색에 전달합니다.

Google 시스템에서이 접근 방식을 구현했으며 제대로 작동합니다. 성능상의 이유로 데이터베이스 앞에 캐시를 두어야 할 수도 있습니다. 단계 (3)의 세부 사항은 사용중인 Lucene의 버전에 따라 다릅니다.

+0

+1. – Mikos

+0

감사! 데이터베이스의 태그 앞에 캐시를 두는 것이 효과적입니다. – user46703

관련 문제