Lucene 如何使用Hibernate搜索查询DSL获得多个匹配的术语?
当我搜索“cars blue”时,我会得到与“cars”或“blue”匹配的所有结果,但我需要同时匹配它们。我已经读过关于将一些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
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();