上下文:
Lucene.Net索引索引实体(简单,对吧?)
需求:
仅返回用户查询可访问的文档(仍然非常经典)。
约束:
权利是通过几种类型的大量ACL来定义的。
简单类型是“用户拥有实体”或“用户创建实体”之类的东西。由于所有者和创建者ID存储在每个文档中,因此这些ACL很容易查询。
但有些ACL称“用户是拥有该实体的用户的经理”。很容易获得当前用户所管理的用户列表,但我需要的是一种针对所有这些ID过滤结果的方法。
我尝试了什么:
我构建了一个自定义过滤器,将每个相关的文档字段与提供的每个id进行比较,但是这个过滤器的复杂性是O(n²),这使得在针对大量用户列表处理大型查询结果集时效率特别低IDS。
包含每个文档的每个授权ID也可以工作(this question的变体),但索引大小会呈指数级增长,不提及更新索引会变得非常痛苦(ACL或用户之间的关系可以当然,随时改变,每次修改时都必须计算每个文档的访问权限...)
我这里的想法已经不多了,有没有人遇到这样的问题?
欢迎任何想法。