Lucene 如何使用Hibernate搜索查询DSL获得多个匹配的术语?

Lucene 如何使用Hibernate搜索查询DSL获得多个匹配的术语?,lucene,querydsl,hibernate-search,Lucene,Querydsl,Hibernate Search,当我搜索“cars blue”时,我会得到与“cars”或“blue”匹配的所有结果,但我需要同时匹配它们。我已经读过关于将一些defaultOperator设置为和的内容,但我找不到在哪里执行该操作, 此外,我不能使用短语查询,因为搜索查询中术语的顺序是不相关的, 这是我到目前为止的代码,谢谢 // create the query using Hibernate Search query DSL QueryBuilder queryBuilder = fullTextEntityManage

当我搜索“cars blue”时,我会得到与“cars”或“blue”匹配的所有结果,但我需要同时匹配它们。我已经读过关于将一些
defaultOperator
设置为
的内容,但我找不到在哪里执行该操作, 此外,我不能使用短语查询,因为搜索查询中术语的顺序是不相关的, 这是我到目前为止的代码,谢谢

// 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搜索查询DSL创建查询
QueryBuilder QueryBuilder=fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(Articulo.class).get();
//一个非常基本的关键字查询
BooleanJunction bool=queryBuilder.bool();
bool.must(queryBuilder.keyword()
.onFields(“说明”)
.匹配(文本)
.createQuery()
);
Query Query=bool.createQuery();
FullTextQuery jpaQuery=
createFullTextQuery(查询,Articulo.class);
返回jpaQuery.getResultList();

注意:我正在使用Hibernate Search 5.6.4

我想您正在寻找简单查询字符串功能

有关详细信息,请参阅

您有一个.withAndAsDefaultOperator()的示例:


这篇解释此功能原理的博文可能也会有所帮助:。

我想您正在寻找简单查询字符串功能

有关详细信息,请参阅

您有一个.withAndAsDefaultOperator()的示例:


这篇解释此功能原理的博文可能也会有所帮助:。

注意这需要Hibernate Search 5.8.0或更高版本。回答不错,但我使用的是Hibernate Search 5.6.4。最后,由于Spring Boot,有什么解决方法吗?好的,您可以在仍然使用Spring Boot的情况下升级Hibernate Search。但是如果你想保留这个版本,DSL不会帮你。在引入简单查询字符串功能之前,我使用Lucene的MultiFieldQueryParser来构建查询并将其传递给Hibernate Search。请注意,这需要Hibernate Search 5.8.0或更高版本。答案不错,但我使用Hibernate Search 5.6.4.Final,因为Spring Boot,有什么解决方法吗,您可以在仍然使用Spring Boot的情况下升级Hibernate搜索。但是如果你想保留这个版本,DSL不会帮你。在引入简单查询字符串特性之前,我使用Lucene的MultiFieldQueryParser构建查询并将其传递给Hibernate Search。
Query luceneQuery = mythQB
    .simpleQueryString()
    .onField("history")
    .withAndAsDefaultOperator()
    .matching("storm tree")
    .createQuery();