2 回答
TA贡献1803条经验 获得超3个赞
您尝试使用的语法(113 | 112 | 3)在此上下文中不正确。不解释查询的参数keyword,特别是不支持运算符。
使用与任何提供的 ID 匹配的布尔连接:
List<String> eids = ...;
QueryBuilder qb = getQueryBuilder();
BooleanJunction<?> idJunction = qb.bool();
for (String eid : eids) {
idJunction.should(
qb.keyword()
.onField("eid")
.matching(eid)
.createQuery()
);
}
return idJunction.createQuery();
请注意,如果您想添加其他查询,则不应使用相同的连接点。使用另一个连接idJunction.createQuery()作为其子句之一。
TA贡献1836条经验 获得超5个赞
从我对 hibernate-search 的一点经验来看,只有 Ranges 似乎适用于整数和长字段。在您此处的示例中,我希望以下查询可以正常工作:
QueryBuilder qb = getQueryBuilder();
BooleanJunction<?> idJunction = qb.bool();
bool.must(NumericRangeQuery.newLongRange("eid", Long.valueOf(eid), Long.valueOf(eid), true, true).createQuery();
Long.valueOf()在这种情况下,如果提供的值已经是 Long 值,则 Boxed是可选的。
添加回答
举报