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 に答える