Solr沒有文檔級別的安全性,所以您將不得不爲每個文檔檢索和索引訪問控制列表。然後,您需要對每個搜索應用過濾器查詢並傳入用戶的安全組和/或用戶名。
比方說,你的文檔被索引這樣的,其中對於多值字段「訪問」的值是在索引時間通過在文件中的實際權限決定:
<doc>
<field name="id">42</field>
<field name="name">Products.xlsx</field>
<field name="title">Product list</field>
<field name="content">...</field>
<field name="access">COMPANY\Marketing</field>
<field name="access">COMPANY\CustomerService</field>
</doc>
然後你可以裝點查詢請求在solrconfig.xml中默認的過濾器查詢參數的處理程序:
<requestHandler name="/select" class="solr.SearchHandler">
<defaults>
<str name="fq">access:"COMPANY\Everyone"</str>
</default>
</requestHandler>
默認情況下,現在搜索將不會返回Products.xlsx文件,因爲這是模擬的默認的「用戶」(即「COMPANT \每個人」)不不出現在「訪問」字段中。但只要你一個真實用戶羣覆蓋默認篩選器查詢中傳遞,Solr的將返回文檔:
/solr/collection1/select?q=content:"product x"&fq=access:"COMPANY\Marketing"
當然這時的權限更改,指數必須儘快更新以反映此。