1

我可以禁用搜索结果的权限检查吗?当我看到 BaseIndexer.java 时,它正在做以下事情。

PermissionChecker permissionChecker =
            PermissionThreadLocal.getPermissionChecker();

        int start = searchContext.getStart();
        int end = searchContext.getEnd();

        if (isFilterSearch() && (permissionChecker != null)) {
            searchContext.setStart(0);
            searchContext.setEnd(end + INDEX_FILTER_SEARCH_LIMIT);
        }

        Hits hits = SearchEngineUtil.search(searchContext, fullQuery);

        searchContext.setStart(start);
        searchContext.setEnd(end);

        if (isFilterSearch() && (permissionChecker != null)) {
            hits = filterSearch(hits, permissionChecker, searchContext);
        }

isFilterSearch() 方法:

    protected boolean isFilterSearch() {
    return _FILTER_SEARCH;
}

和 _FILTER_SEARCH 变量:

private static final boolean _FILTER_SEARCH = false;

修改此类以不检查权限是唯一的选择吗?任何更好的想法来做到这一点。我想这样做的原因是,更多的搜索结果需要时间来检查所有搜索结果的权限。这是我们需求的瓶颈。

4

1 回答 1

0

也许是疯狂的想法,但您可以暂时禁用权限检查器:

PermissionChecker permissionChecker = PermissionThreadLocal.getPermissionChecker();
PermissionThreadLocal.setPermissionChecker(null);

//Search

PermissionThreadLocal.setPermissionChecker(permissionChecker);
于 2012-08-15T11:01:47.610 回答