3

Spring Data Solr カスタム リポジトリに以下を実装する必要があります。

(X OR Y) AND Z

私の現在のコードは次のとおりです。

Criteria criteria = new Criteria("x").is(X_VALUE);
criteria = criteria.or(new Criteria("y").is(Y_VALUE);
criteria = criteria.and(new Criteria("z").is(Z_VALUE);

しかし、このコードを実行すると、次の優先順位が得られます。

X または (Y および Z)

何か案は?

4

1 に答える 1

6

現在の API では、この条件の組み合わせは許可されていません。問題を完全に解決するわけではありませんが、DATASOLR-105にはパッチが添付されています。

の使用はSimpleStringCriteria今のところ役立つかもしれません。値は Solr で読み取り可能な形式に変換する必要があることに注意してください。

new SimpleQuery(new SimpleStringCriteria("(x or y) and z"));

アップデート

バージョン1.2ではこの問題が修正され、次のようにクエリを作成できるようになります。

Criteria orPart = Criteria.where("x").is("foo").or("y").is("bar");
Criteria andPart = Criteria.where("z").is("roo");
Query query = new SimpleQuery(orPart.and(andPart));
于 2014-01-30T12:43:59.420 に答える