Confluence 8.0插件开发:searchFilter移除后的查询实现方案咨询
Confluence 8.0 适配:替代 SiteSearchPermissionsSearchFilter 的方案
Confluence 8.0 移除了com.atlassian.confluence.search.v2.searchfilter.SiteSearchPermissionsSearchFilter,且官方文档提及的内部替代类无法在插件中使用。你可以通过公开的PermissionQueryBuilderAPI实现等效的权限过滤逻辑,具体适配方案如下:
步骤1:替换导入类
移除旧过滤器的导入,添加权限查询构建器的相关类:
import com.atlassian.confluence.search.v2.ContentSearch; import com.atlassian.confluence.search.v2.PermissionQueryBuilder; import com.atlassian.confluence.search.v2.query.BooleanQuery; import com.atlassian.confluence.search.v2.sort.RelevanceSort;
步骤2:构建权限查询
使用PermissionQueryBuilder生成对应站点搜索的权限查询,替代原权限过滤器:
// 生成与原SiteSearchPermissionsSearchFilter功能等效的权限查询 var permissionQuery = PermissionQueryBuilder.builder() .forSiteSearch() // 匹配原有站点搜索的权限校验逻辑 .build();
步骤3:组合查询并创建ContentSearch
将原有业务查询与权限查询合并为复合AND查询,直接传入ContentSearch(无需单独的filter参数):
// 合并原有查询与权限查询 var combinedQuery = BooleanQuery.composeAndQuery(allQueries, permissionQuery); // 创建适配Confluence 8.0的ContentSearch实例 ContentSearch search = new ContentSearch(combinedQuery, RelevanceSort.INSTANCE, 0, 1);
核心说明
- Confluence 8.0 后,权限过滤逻辑从Filter体系迁移到Query体系,
PermissionQueryBuilder是官方提供的公开API,专门用于构建权限相关查询条件,插件可安全调用。 forSiteSearch()方法会自动生成与原SiteSearchPermissionsSearchFilter一致的权限校验规则,确保搜索结果仅返回当前用户有权限访问的内容。
内容的提问来源于stack exchange,提问作者Gobliins
相关产品推荐
相关产品推荐

