2010-11-05 49 views
0

我在Sitecore中有许多不同的角色。我已经对我的内容项目设置了安全权限,以便不同的角色只能访问特定的内容项目。看来Lucene只会索引所有的内容。当我查询Lucene时,它并不关注安全性。有没有办法让Lucene只返回当前Extranet用户可以访问的项目?如何在Sitecore中设置正确处理安全性的Lucene索引?

感谢, 科瑞

回答

3

据我所知。但通过点击采集工作时,你通常有一个类似的循环:

for (int i = 0; i < hits.Length() && i < Context.Current.Settings.MaxSearchResultsToProcess; i++) 
{ 
    Item item = Index.GetItem(hits.Doc(i), Context.Current.Database); 
    if (item != null) 
    { 
     indexResultater.Add(item); 
    } 
} 

而且,由于这种运行在当前用户的情况下,没有结果将被添加到您的结果,如果用户无法访问他们。

+0

其实在我的代码中,我做了一点不同。我只反复浏览当前的项目页面,而不是遍历数千个结果。因此,如果我的搜索返回了1,475个匹配,并且我在结果集的第2页上,那么我只会将搜索结果拉到11-20。不过,我想我可以按照你的建议来尝试。这只是意味着我必须始终遍历所有1,475个点击,然后才能获得我所访问的点击。然后,我可以返回项目11-20。希望它不会太慢。 – 2010-11-08 13:22:01

+0

实际上,这通常不是太糟糕。无论如何,您可以考虑的一些事情,无论如何都不会返回YYY以​​上的搜索结果。 1475会是我认为太多的东西,我通常不会要求Lucene为任何给定的查询处理超过200-300次点击。 Sitecore的项目缓存将帮助您(很多)后续页面请求,最后您可以选择缓存页面浏览结果。 – 2010-11-09 06:44:52

相关问题