【发布时间】:2010-09-22 11:24:10
【问题描述】:
我希望这对某人来说是一个非常简单的问题......
基本上,我们在 lucene.net 中针对我的文档索引安全信息,该信息存储在 2 个文档字段中,称为 viewuserids 和 viewroleids,因此当我们构造查询时- 仅返回用户有权查看的文档。
查询所需的功能是,如果用户属于存储在 viewroleids 中的角色(此位工作正常),我们只希望返回文档,但是如果 viewuserids 字段包含索引上的任何 id(该字段可能不包含任何值),viewroleids 应该被忽略,并且只有存在于 viewuserids 中的用户应该能够查看文档。
如上所述,角色部分按预期工作,但我们需要一些帮助来在 API 中构建术语查询以考虑 viewuserids(有效地覆盖 viewroleids 查询。这是我们目前所拥有的:
BooleanQuery bq = new BooleanQuery();
foreach (int roleId in roleIds)
{
bq.Add(new TermQuery(new Term("viewroleid", roleId.ToString())),BooleanClause.Occur.SHOULD);
}
bq.Add(new TermQuery(new Term("viewuserid", User.Id.ToString())), BooleanClause.Occur.SHOULD);
提前感谢您的帮助!
注意: 这两个字段都存储在未标记的索引中
【问题讨论】:
标签: c# asp.net lucene lucene.net