簡體   English   中英

根據用戶限制來限制Lucene.Net搜索結果

[英]Limit Lucene.Net Search Results based on user restrictions

我試圖弄清楚如何在Lucene.Net索引中管理受限數據,比如說您有一個人文檔,內容如下:

Name: Peter Pan
Locations: Neverland, London, Paris

現在說我有兩個用戶,UserA和UserB,分別允許他們查看的方式是:

UserA: 
  Name: Peter Pan
  Locations: Neverland, London

UserB: 
  Name: Peter Pan
  Locations: London, Paris

現在,我希望允許他們兩個都在“位置”上進行搜索,但是由於UserB看不到Peter Pan曾經去過Neveland,因此在“ Neverland”上進行搜索不會向PeterB,UserA的Visa-Versa和Paris屈服Peter ,但都可以看到倫敦...

我要處理的數據遠比這要復雜得多,因為打開和關閉這些內容的方式取決於我們所說的警告,因此,請更深入地研究上述內容,以了解他們看到示例的原因是他們有權查看以下注意事項的數據:

UserA: AAA, BBB
UserB: BBB, CCC

並且因為彼得的位置數據條目被標記為:

Neverland - AAA
London - BBB
Paris - CCC

舉個例子...

我希望這種概述足以使情況至少能夠開始討論。

1.復制模型

顯然,我可以將所有數據條目正確地分成組成“文檔”的位,而不是將Peter Pan存儲為一個大文檔,我可以將其碎片化,但是這樣會使我陷入多次打擊的境地在與我看到的相同的實際對象上……這也將是字段的分配。

2.多個文件

或者,我可以存儲一個文檔。 僅限於數據a單個警告可能授予的權利,據我所知,這給出了多個匹配,還分配了“冗余”數據。

3.按數據庫往返過濾

最后但並非最不重要的一點是,我可以忽略搜索而執行搜索,而不是直接顯示來自Lucene的結果,我可以讓我們的DataAccess層為我執行警告過濾,這樣雖然比需要的時間更早地向數據庫添加了往返。

盡管往返數據庫可能是我最不關心的問題。 也有事實。 Lucene會返回在搜索字詞中實際上可能不是真正的匹配的匹配,因為生成該匹配的值可能對該用戶不可見。

這也意味着“結果數”可能會關閉。

總而言之,這不僅是一次額外的數據庫往返,我們還必須在結果被提取后再“重做”過濾。


我會聽我說是否可以聯系比我自己擁有更多Lucene經驗的人提供一些建議。

提前致謝。

如果可以按組分配權限(即“所有看不到Neverland旅程的用戶”),則可以向每個文檔添加一個字段(或多個字段,具體取決於權限的復雜性),以通知UI忽略所有Neverland旅程。

如果您不能對權限進行分組,則可以(如果在大量用戶的情況下笨拙)將每個用戶的權限添加到每個文檔,然后讓UI適當地處理這些權限。 這將使您對每個用戶具有針對每個文檔的單獨權限(類似於文件系統權限)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM