【发布时间】:2022-08-04 20:29:41
【问题描述】:
我有以下方法可以创建一个BooleanPredicateClausesStep 来进行查询。
private BooleanPredicateClausesStep<?> getJournalAndSpatialSearchCriteria(GeoFilter geoFilter, SearchPredicateFactory factory, Boolean includeJournalsWithStatusFinished) {
SearchPredicate journalLocationMustResideWithinRadius = getJournalsContainedWithinRadiusPredicate(geoFilter, factory);
SearchPredicate mustOrShouldBeOfStatus = getSubmissionStatusConditionPredicate(includeJournalsWithStatusFinished, factory);
return factory.bool()
.filter( journalLocationMustResideWithinRadius )
.filter( factory.match().field( \"deleted\" ).matching( \"false\" ) )
.filter( mustOrShouldBeOfStatus )
.filter( factory.match().field( \"containsHarvestEntry\" ).matching( \"true\" ) )
.filter( factory.match().field( \"grownOutdoors\" ).matching( \"true\" ) );
}
它包含一个空间搜索谓词,用于检查期刊是否属于预定义的圆形地理区域。所有其他过滤器都是简单的过滤器,仅检查某个字段是否与值匹配。
我的问题是:所有这些过滤器是按顺序实现还是同时实现?或者换一种说法; lucene 会先获取所有属于定义地理区域的对象,然后再检查它们是否被删除还是同时检查两者? hibernate search documentation 没有说明过滤器的处理顺序。
标签: elasticsearch filter lucene hibernate-search hibernate-search-6