是否可以搜索多个实体以查找相同的关键字,使用特定过滤器过滤每种类型并将它们放在一个列表中?
例如,拥有实体,饲养员和动物,并在其数据中搜索条件" Boston Terrier"。之后,为物种过滤育种者和物种的动物,并返回包含动物和育种者的单个列表。
然后可以修剪此列表以在Web应用程序的前端对结果进行分页:
// FullTextQuery ftq = .... definiing and filtering the query
int numResults = ftq.getResultSize();
ftq.setFirstResult((pageNum-1)*numPerPage);
ftq.setMaxResults(numPerPage);
List<Object> results = ftq.getResultList();
答案 0 :(得分:1)
假设你不关心育种者和动物之间的关系,只想寻找动物或育种者:是的,你可以。
但有一些条件:
Animal
类和Breeder
类中以完全相同的方式配置:同一分析器在特定。否则,您的搜索结果可能会不一致。这些字段不必存在于两个索引中:对“animalName”和“breederName”字段进行过滤应该可以正常工作。Animal
类中的物种过滤的物种来过滤物种。否则,育种者也将按物种过滤。如果上述所有三项的答案都是“是的,我很好”,那么你可以做到以下几点:
Breeder
创建QueryBuilder
,说Animal
animalQueryBuilder
创建另一个QueryBuilder
,例如Breeder
breederQueryBuilder
作为物种过滤器。animalQueryBuilder
作为位置过滤器然后,在创建查询时,将Animal类和Breeder类都传递给breederQueryBuilder
方法。
查询应该返回动物和饲养员。
类似的东西:
createFullTextQuery