Hibernate Search Query DSLを学んでいますが、AND や OR などのブール引数を使用してクエリを作成する方法がわかりません。
firstName
たとえば、 "bill" または "bob"の値を持つすべての人物レコードを返したいとします。
hibernate のドキュメントに従って、次のような 2 つのサブクエリで bool() メソッドを使用する例を 1 つ示します。
QueryBuilder b = fts.getSearchFactory().buildQueryBuilder().forEntity(Person.class).get();
Query luceneQuery = b.bool()
.should(b.keyword().onField("firstName").matching("bill").createQuery())
.should(b.keyword().onField("firstName").matching("bob").createQuery())
.createQuery();
logger.debug("query 1:{}", luceneQuery.toString());
これにより、最終的に必要な lucene クエリが生成されますが、これはブール値ロジックを休止状態検索で使用する適切な方法ですか? 「should()」は「OR」と同等ですか (同様に、「must()」は「AND」に対応しますか)?
また、この方法でクエリを作成するのは面倒です。たとえば、照合する firstNames のコレクションがある場合はどうなるでしょうか。そもそも、このタイプのクエリは DSL に適しているのでしょうか?