2012-08-15 51 views
1

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

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; 

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

回答

0

也许疯狂的想法,但你可以暂时禁用许可检查:

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

//Search 

PermissionThreadLocal.setPermissionChecker(permissionChecker);