"cars blue"를 검색 할 때 "cars"또는 "blue"와 일치하는 모든 결과를 얻지 만 둘 다 일치시켜야합니다. 일부 defaultOperator
을 AND
에 설정하는 방법에 대해 읽었지만 그 위치를 찾을 수 없습니다. 또한 PhraseQuery
을 사용할 수 없습니다. 검색어의 검색어 순서가 부적절하기 때문에 이것은 지금까지 작성한 코드입니다. 감사!Hibernate 검색 쿼리 DSL을 사용하여 여러 용어를 일치시키는 방법은 무엇입니까?
// create the query using Hibernate Search query DSL
QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(Articulo.class).get();
// a very basic query by keywords
BooleanJunction<BooleanJunction> bool = queryBuilder.bool();
bool.must(queryBuilder.keyword()
.onFields("description")
.matching(text)
.createQuery()
);
Query query = bool.createQuery();
FullTextQuery jpaQuery =
fullTextEntityManager.createFullTextQuery(query, Articulo.class);
return jpaQuery.getResultList();
참고 : 나는 하이버 네이트 검색 5.6.4
참고 : Hiberenate Search 5.8.0 이상이 필요합니다. –
좋은 답변이지만 봄 부팅 때문에 최대 절전 모드 검색 5.6.4을 사용하고 있습니다. 해결 방법이 있습니까? –
Spring Boot를 사용하면서 Hibernate Search를 업그레이드 할 수 있습니다. 그러나이 버전을 계속 사용하려면 DSL이 도움이되지 않습니다. Simple Query String 기능이 소개되기 전에 Lucene의 MultiFieldQueryParser를 사용하여 질의를 작성하여 Hibernate Search에 전달했습니다. –