"cars blue"を検索すると "cars"や "blue"と一致するすべての結果が得られますが、両方を一致させる必要があります。 defaultOperator
をAND
に設定しましたが、その場所を見つけることができません また、PhraseQuery
を使用することはできません。検索クエリの用語の順序が不適切であるため、 これはこれまでのコードですが、ありがとう!Hibernate検索クエリDSLを使用して一致する多くの用語を取得するには?
// create the query using Hibernate Search query DSL
QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(Articulo.class).get();
// a very basic query by keywords
BooleanJunction<BooleanJunction> bool = queryBuilder.bool();
bool.must(queryBuilder.keyword()
.onFields("description")
.matching(text)
.createQuery()
);
Query query = bool.createQuery();
FullTextQuery jpaQuery =
fullTextEntityManager.createFullTextQuery(query, Articulo.class);
return jpaQuery.getResultList();
注:私はHibernateの検索5.6.4
注意:これにはHibernate Search 5.8.0以降が必要です。 –
良い答えですが、SpringブートのためにHibernate Search 5.6.4.Finalを使用していますが、回避策はありますか? –
さて、Spring Bootを使っている間も、Hibernate Searchをアップグレードすることができます。しかし、このバージョンを維持したい場合、DSLはあなたを助けません。 Simple Query String機能が導入される前は、LuceneのMultiFieldQueryParserを使用してクエリを作成し、それをHibernate Searchに渡しました。 –