2
은 내가 제품 테이블이 있으며 필드를 이름, SKU, 설명 및 제품 카테고리 (제품 카테고리 테이블과 하나의 관계에 많은)가 있습니다. 나는 최대 절전 모드 검색을 사용하여 제품 색인 및 검색을 수행하려면 다음 코드를 작성했습니다 :ManytoOne에서 where 절을 적용하는 방법 최대 절전 모드 검색의 Join 필드?
FullTextEntityManager fullTextEntityManager = org.hibernate.search.jpa.Search
.getFullTextEntityManager(getEntityManager());
QueryBuilder qb = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(Product.class).get();
org.apache.lucene.search.Query query = qb.keyword().fuzzy()
.onFields("name", "sku", "uniqueid", "description")
.matching(value).createQuery();
javax.persistence.Query persistenceQuery = fullTextEntityManager
.createFullTextQuery(query, Product.class);
가 지금은 제품 범주에 WHERE 조건을 추가하고 싶습니다. 예를 들어 productCategory.Id = 101 인 제품 만 검색하려고합니다.
아무도 내가 이것을 할 수있는 방법을 제안 할 수 있습니까? 이 같은
Query fuzzyQuery = qb.keyword()
.fuzzy()
.onFields("name", "sku", "uniqueid", "description")
.matching(value)
.createQuery();
Query categoryQuery = qb.keyword()
.onField("productCategory.Id")
.matching("101")
.createQuery();
Query luceneQuery = qb
.bool()
.should(fuzzyQuery)
.must(categoryQuery)
.createQuery();
뭔가 : & 감사 비제이이 같은
답장을 보내 주셔서 감사합니다. 내 Product 도메인 클래스에서 -ManyToOne과 같은 Cateogry를 주석으로 처리했습니다. \t -JoinColumn (name = "PL_PRODUCTCATEGORY_ID") -IndexedEmbedded \t private ProductCategory Productcategory; 그리고 ProductCategory 도메인 클래스에 나는 \t - AnnToMany (mappedBy = "Productcategory")로 제품을 주석으로 표시했습니다. \t -ContainedIn \t 개인 목록 제품; –
VijayM
카테고리를 기반으로 찾을 수있는 가장 좋은 방법을 제안 해 주시겠습니까? – VijayM
언급 한 모든 주석은 JPA (ORM) 매핑 주석입니다. Hibernate Search를 통해 연관을 색인하고 검색하려면 @IndexedEmbedded을 사용해야합니다. 예제를 보려면 설명서를보십시오. – Hardy