나는 디렉토리에서 인덱싱 한 일부 데이터를 검색하기 위해 Hibernate Search (Lucene 사용)를 사용하고 있습니다. 그것은 잘 작동하지만 역방향 검색을해야합니다. 역 검색을 사용하면 데이터베이스에 저장된 쿼리 목록이 있다는 의미입니다. 데이터 개체를 만들 때마다 이러한 쿼리 중 하나가 데이터 개체와 일치하는지 확인해야합니다. 데이터 객체가 생성 한 쿼리와 일치 할 때 사용자에게 경고해야합니다. 그래서 방금 생성 된이 단일 데이터 객체를 색인화하고 목록의 어떤 쿼리가이 객체를 결과로 가져야하는지 확인해야합니다.최대 절전 모드에서 역방향 검색
나는 (매우 효율적되지 않을 것 쿼리의 자바 목록에 반복하지만) 목록에있는 모든 쿼리에 대한 예처럼 뭔가를 할 수 있도록 루씬 MemoryIndex 클래스가 메모리에 인덱스를 생성하는 본 적이 :
//Iterating over my list<Query>
MemoryIndex index = new MemoryIndex();
//Add all fields
index.addField("myField", "myFieldData", analyzer);
...
QueryParser parser = new QueryParser("myField", analyzer);
float score = index.search(query);
if (score > 0.0f) {
System.out.println("it's a match");
} else {
System.out.println("no match found");
}
여기이 문제는이 데이터 클래스가 FullTextEntityManager 인스턴스에서 index() 메서드를 호출 할 때 필드를 인덱싱하는 방법을 나타내는 @ Field, @ IndexedEmbedded, 등의 여러 Hibernate 검색 주석이 있다는 것입니다. 디렉토리에있는 객체의 색인을 생성한다. 이 정보를 사용하여 메모리에 색인을 생성하는 유사한 방법이 있습니까?
역 검색을 수행하는보다 효율적인 방법이 있습니까?