Java 如何在Hibernate搜索中故意忽略筛选器的子查询?
我将试着描述这个问题。 假设我们有一个lucene文档,其中包含TITLE、DESC和TYPE字段。 现在我按以下字段进行搜索:Java 如何在Hibernate搜索中故意忽略筛选器的子查询?,java,hibernate,lucene,hibernate-search,Java,Hibernate,Lucene,Hibernate Search,我将试着描述这个问题。 假设我们有一个lucene文档,其中包含TITLE、DESC和TYPE字段。 现在我按以下字段进行搜索: org.apache.lucene.search.Query titleQuery = prepareTitleQuery(); org.apache.lucene.search.Query descQuery = prepareDescQuery(); org.apache.lucene.search.Query mainQuery = query
org.apache.lucene.search.Query titleQuery = prepareTitleQuery();
org.apache.lucene.search.Query descQuery = prepareDescQuery();
org.apache.lucene.search.Query mainQuery = queryBuilder.bool().should(titleQuery).should(descQuery).createQuery()
FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery(mainQuery, Class.class);
fullTextQuery.enableFullTextFilter("typeFilter").setParameter("types", types);
TITLE:Another
DESC:lucene
TYPE:1
这是非常简化的代码,只是为了全面理解我在做什么
现在举个例子:
TITLE | DESC | TYPE
Some title | hibernate search | 1
Another title | lucene | 1, 3
Something here | search lucene | 2, 8, 3
我这样搜索:
org.apache.lucene.search.Query titleQuery = prepareTitleQuery();
org.apache.lucene.search.Query descQuery = prepareDescQuery();
org.apache.lucene.search.Query mainQuery = queryBuilder.bool().should(titleQuery).should(descQuery).createQuery()
FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery(mainQuery, Class.class);
fullTextQuery.enableFullTextFilter("typeFilter").setParameter("types", types);
TITLE:Another
DESC:lucene
TYPE:1
它只能找到第二行。但我需要第三条第二线。有没有办法使过滤器只应用于titleQuery,而不应用于descQuery?另外,我还有另一个过滤器和排序,应该适用于两者 过滤器应用于整个搜索结果。它们不应用于组合查询的部分。我想最好是将标题查询本身编写为布尔查询,由两部分组成——一部分用于匹配标题,另一部分用于匹配类型。据我所知,这是你想要实现的 嗨,谢谢。最后我自己来了。这就是我所做的:对于类型类型{titleQuery=queryBuilder.bool.musttitleQuery.mustqueryBuilder.keyword.onfildTypes.id.matchingtype.getId.createQuery.createQuery;}