도메인 모델 변경에 따라 Lucene Index를 최신 상태로 유지하기 위한 전략

StackOverflow https://stackoverflow.com/questions/38125

  •  09-06-2019
  •  | 
  •  

문제

응용 프로그램의 도메인 모델 개체가 변경될 때 Lucene 색인을 최신 상태로 유지하는 것에 대한 사람들의 생각을 알아보고 싶었습니다.

문제의 애플리케이션은 Hibernate를 사용하는 Java/J2EE 기반 웹 애플리케이션입니다.현재 작업 방식은 Hibernate 매핑 모델 개체가 모두 Lucene에 기록된 키/값 쌍 집합을 반환할 수 있는 공통 "인덱싱 가능" 인터페이스를 구현하는 것입니다.그러한 객체와 관련된 CRUD 작업이 수행될 때마다 나는 객체의 기본 키와 Indexable 객체의 index() 메서드에서 반환된 키/값 쌍을 Lucene에 기록하는 메시지 구동 Bean으로 JMS 대기열을 통해 보냅니다. 제공됩니다.

이 계획에 대한 나의 주된 걱정은 MDB가 뒤처져 들어오는 인덱싱 작업을 따라잡을 수 없거나 일종의 오류/예외로 인해 개체가 인덱스되지 않는 경우입니다.결과는 정렬 기간 또는 장기간에 대한 오래된 인덱스입니다.

기본적으로 나는 다른 사람들이 이런 종류의 일을 위해 어떤 종류의 전략을 생각해 냈는지 궁금했습니다.반드시 하나의 정답을 찾는 것은 아니지만 내 두뇌가 대안을 생각하도록 하는 "화이트보드" 종류의 아이디어 목록을 상상하고 있습니다.

도움이 되었습니까?

해결책

메시지를 변경합니다:키/값 쌍이 아닌 기본 키와 현재 날짜만 제공하면 됩니다.MDB는 기본 키로 엔터티를 가져오고 index()를 호출합니다.색인을 생성한 후 색인의 "업데이트된" 값을 메시지 날짜로 설정합니다.메시지 날짜가 색인의 "업데이트된" 필드 이후인 경우에만 색인을 업데이트합니다.이렇게 하면 항상 현재 키/값 쌍을 먼저 가져오기 때문에 뒤쳐질 수 없습니다.

대안으로:좀 봐 http://www.compass-project.org.

다른 팁

허용되는 답변은 현재 8세이며 매우 오래된 것입니다.

Compass 프로젝트는 주요 개발자가 뛰어난 Elasticsearch를 만들기 위해 이동하면서 오랫동안 더 이상 유지 관리되지 않습니다.

이에 대한 현대적인 대답은 다음과 같습니다. 최대 절전 모드 검색, 우연히 Lucene 인덱스에 직접 또는 Elasticsearch를 통해 매핑할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top