过滤具有复杂访问权限的Lucene查询

时间:2014-06-04 08:25:35

标签: c# full-text-search lucene.net lucene

上下文:

Lucene.Net索引索引实体(简单,对吧?)

需求:

仅返回用户查询可访问的文档(仍然非常经典)。

约束:

权利是通过几种类型的大量ACL来定义的。

简单类型是“用户拥有实体”或“用户创建实体”之类的东西。由于所有者和创建者ID存储在每个文档中,因此这些ACL很容易查询。

但有些ACL称“用户是拥有该实体的用户的经理”。很容易获得当前用户所管理的用户列表,但我需要的是一种针对所有这些ID过滤结果的方法。

我尝试了什么:

我构建了一个自定义过滤器,将每个相关的文档字段与提供的每个id进行比较,但是这个过滤器的复杂性是O(n²),这使得在针对大量用户列表处理大型查询结果集时效率特别低IDS。

包含每个文档的每个授权ID也可以工作(this question的变体),但索引大小会呈指数级增长,不提及更新索引会变得非常痛苦(ACL或用户之间的关系可以当然,随时改变,每次修改时都必须计算每个文档的访问权限...)

我这里的想法已经不多了,有没有人遇到这样的问题?

欢迎任何想法。

0 个答案:

没有答案