2010-11-05 50 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

相關問題