Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Hibernate搜索中故意忽略筛选器的子查询?_Java_Hibernate_Lucene_Hibernate Search - Fatal编程技术网

Java 如何在Hibernate搜索中故意忽略筛选器的子查询?

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

我将试着描述这个问题。 假设我们有一个lucene文档,其中包含TITLE、DESC和TYPE字段。 现在我按以下字段进行搜索:

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;}