如何使用 Hibernate Search 查询 DSL 匹配多个术语?

How to get many terms matched using Hibernate Search query DSL?

当我搜索 "cars blue" 时,我得到了匹配 "cars" 或 "blue" 的所有结果,但我需要将它们都匹配。我读过有关将 defaultOperator 设置为 AND 的内容,但我找不到在哪里进行设置, 我也不能使用 PhraseQuery 因为搜索查询中的术语顺序无关紧要, 这是我到目前为止的代码,谢谢!

// 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 Search 5.6.4

我认为您正在寻找简单查询字符串功能。

有关它的更多详细信息,请参阅 http://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#_simple_query_string_queries

你有一个 .withAndAsDefaultOperator() 的例子:

Query luceneQuery = mythQB
    .simpleQueryString()
    .onField("history")
    .withAndAsDefaultOperator()
    .matching("storm tree")
    .createQuery();

此博客 post 解释此功能的基本原理也可能有帮助:http://in.relation.to/2017/04/27/simple-query-string-what-about-it/ .