2 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
您嘗試使用的語法(113 | 112 | 3)在此上下文中不正確。不解釋查詢的參數(shù)keyword,特別是不支持運(yùn)算符。
使用與任何提供的 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();
請(qǐng)注意,如果您想添加其他查詢,則不應(yīng)使用相同的連接點(diǎn)。使用另一個(gè)連接idJunction.createQuery()作為其子句之一。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
從我對(duì) hibernate-search 的一點(diǎn)經(jīng)驗(yàn)來看,只有 Ranges 似乎適用于整數(shù)和長字段。在您此處的示例中,我希望以下查詢可以正常工作:
QueryBuilder qb = getQueryBuilder();
BooleanJunction<?> idJunction = qb.bool();
bool.must(NumericRangeQuery.newLongRange("eid", Long.valueOf(eid), Long.valueOf(eid), true, true).createQuery();
Long.valueOf()在這種情況下,如果提供的值已經(jīng)是 Long 值,則 Boxed是可選的。
添加回答
舉報(bào)