我有一个带有多个值的Indexed枚举Active,Pending,Pulled。我想设计一个只有Active和Pulled但不是Pending的查询。
junction = junction.must(
qb.keyword().onField("itemStatus").ignoreFieldBridge()
.matching("active pulled").createQuery());
上面的查询是我的第一次尝试,但除非我将查询更改为仅活动或将结点更改为应该,否则这不会返回任何内容。我基本上想要一个带有条件的必须......
答案 0 :(得分:1)
您需要将两个查询分开以获得不同的匹配状态:
Query itemStatusQuery = queryBuilder
.bool()
.should(queryBuilder.keyword().onField("itemStatus").matching("active").createQuery())
.should(queryBuilder.keyword().onField("itemStatus").matching("pulled").createQuery())
.createQuery();
junction = junction.must(itemStatusQuery);
或者,您可以使用must().not()
。另请参阅http://docs.jboss.org/hibernate/search/5.1/reference/en-US/html_single/#_combining_queries