2013-04-22 4 views
0

내 Jboss 응용 프로그램에서 데이터 검색을 위해 최대 절전 모드 검색을 사용하고 있습니다. 모든 JPE 엔티티 클래스는 BaseEntity 클래스를 확장하고 각각 Lucene에 의해 인덱싱됩니다. 예 :인덱싱 된 엔티티에서 최대 절전 검색 검색

이제 와일드 카드 검색 쿼리로 DVD 제목이나 책 저자를 검색하고 결과 목록을 목록으로 가져옵니다. 이것이 제가 지금까지 가지고있는 것입니다 :

public List<BaseEntity> search(String query, int firstResult, int maxResults) { 
    List<BaseEntity> results = null; 
    FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em); 
    Query luceneQuery = new WildcardQuery(new Term("*", "*" + query + "*")); 
    FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery(luceneQuery, BaseEntity.class); 
    fullTextQuery.setFirstResult(firstResult); 
    fullTextQuery.setMaxResults(maxResults); 
    results = fullTextQuery.getResultList(); 
    return results; 
} 

그러나 이것으로 나는 결과를 얻지 못하고 있습니다. 어떻게 이것을 작동 시키거나 각 엔티티에 대해 buildQueryBuilder를 사용하지 않고 어떻게 할 수 있습니까? 감사!

답변

1

당신과 같이, 클래스의 변수 인수 스타일의 방법을 사용하는 것이 좋습니다 :

FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery(luceneQuery, DVD.class, Book.class); 

이것은 최대 절전 모드 검색은 검색 쿼리를 생성 할 때, 그것은에 클래스 이름 (들)을 추가하기 때문에 query (_hibernate_class 필드의 경우 색인화 된 클래스의 이름 임).

관련 문제