当涉及到全文搜索和许多其他方面时,流行的搜索引擎的性能相当好,但是,我不知道如何将主文档存储系统安全策略Map到es和/或solr?
想想谷歌硬盘和它的文件夹。用户可以共享任何文件夹-然后下面的文件和文件夹也可以共享。内容管理系统使用类似的东西。
但是如何将其Map到外部搜索引擎(也就是说,不是内置到应用程序的内容管理系统中),特别是在成千上万的文件夹、成千上万的用户中有数百万个文档的情况下?例如,如果文件夹的深度(嵌套性)被限制在某个小数目内,它会有帮助吗?
我知道es有用户角色,但我看不出它在这里有什么帮助,因为访问或多或少是任意的。另一种方法是以某种方式在文档(文件夹和文档)本身中具体化用户访问,但是用户角色的更改(在某个文件夹中是本地的)将导致数千个文档的更改。
另外,搜索可能非常随意和冗长,因此需要分页,因此,例如,获取“所有内容”,然后在应用程序端对用户访问进行排序是不可取的。
我相信描述的场景非常常见,但是我找不到任何关于如何实现它的提示。
1条答案
按热度按时间vzgqcmou1#
我使用solr作为搜索引擎,并使用solr的数据导入处理程序(dih)特性将数据从数据库导入solr。
我建议您使用索引acl和文档的方法。
我已经做了同样的方法和它的工作良好,直到现在。
我同意当文件夹访问或文档访问级别发生任何更改时,您必须在solr端重新索引数据。如果文档的元数据发生更改或文档的内容发生更改,我们确实需要重新索引文档。类似地,我们还可以更新solr端的文档,以查看acl(访问控制列表)中的任何更改。
为什么要将acl与文档信息一起索引。原因是每当用户搜索文档时,您都可以以筛选查询的形式将用户acl作为查询的一部分传递,并获取用户可以访问的文档。我觉得这消除了在后端应用acl逻辑的复杂性。
如果您没有在solr中索引acl,那么您必须在从solr检索文档之后通过检查文档是什么以及acl逻辑应用什么来过滤文档。
或者最后一个选项可以是索引没有ACL的文档。让用户搜索所有文档。当他试图对这些文档执行任何操作时,您可以检查权限并允许用户执行操作,或者拒绝用户说您没有足够的权限访问文档。
操作可以是查看、下载、更新等。。
你需要决定哪种方法适合你的情况。