在Lucene中搜索具有角色的公共和私人文档

在Lucene中搜索具有角色的公共和私人文档,lucene,umbraco,lucene.net,Lucene,Umbraco,Lucene.net,我目前正在尝试在Lucene(来自Umbraco)中构建一个搜索,搜索只能由用户角色看到的公共文档和受保护的文档。我遇到的问题是Lucene返回所有公共项和所有受保护项,但不是按角色返回 我的原始Lucene搜索是: +nodeTypeAlias:pdfdocument +isProtected:false (+rolesAllowed:"userrole" +isProtected:true) 有人有什么想法吗? 提前感谢。您的查询并没有真正达到您的目的 +nodeTypeAlias:pdf

我目前正在尝试在Lucene(来自Umbraco)中构建一个搜索,搜索只能由用户角色看到的公共文档和受保护的文档。我遇到的问题是Lucene返回所有公共项和所有受保护项,但不是按角色返回

我的原始Lucene搜索是:

+nodeTypeAlias:pdfdocument +isProtected:false (+rolesAllowed:"userrole" +isProtected:true)
有人有什么想法吗?
提前感谢。

您的查询并没有真正达到您的目的

+nodeTypeAlias:pdfdocument
查询将仅返回pdfdocuments

+isProtected:false
查询将仅返回公共文档

(+rolesAllowed:“userrole”+isProtected:true)
查询将首选但不需要与“userrole”匹配的文档,这些文档受保护。但是,由于上面的术语阻止在受保护的文档上进行任何匹配,因此我们不应该看到这一点

或者,以稍微不同的方式重写(您的查询没有严格映射到和/或语法):

我相信您正在寻找的问题更像:

+nodeTypeAlias:pdfdocument +(isProtected:false (+rolesAllowed:"userrole" +isProtected:true))
顺便说一句,可以改写为:

nodeTypeAlias:pdfdocument AND (isProtected:false OR (rolesAllowed:"userrole" AND isProtected:true))

但这并不能真正解释你描述的行为。如果它返回所有文档,包括公共文档和受保护文档,我怀疑您需要查看
isProtected
字段中实际存储的内容。该字段必须包含
false
,才能与您列出的查询匹配。它可能包含多个术语,可能同时包含
false
true

您的查询并没有真正达到您的目的

+nodeTypeAlias:pdfdocument
查询将仅返回pdfdocuments

+isProtected:false
查询将仅返回公共文档

(+rolesAllowed:“userrole”+isProtected:true)
查询将首选但不需要与“userrole”匹配的文档,这些文档受保护。但是,由于上面的术语阻止在受保护的文档上进行任何匹配,因此我们不应该看到这一点

或者,以稍微不同的方式重写(您的查询没有严格映射到和/或语法):

我相信您正在寻找的问题更像:

+nodeTypeAlias:pdfdocument +(isProtected:false (+rolesAllowed:"userrole" +isProtected:true))
顺便说一句,可以改写为:

nodeTypeAlias:pdfdocument AND (isProtected:false OR (rolesAllowed:"userrole" AND isProtected:true))

但这并不能真正解释你描述的行为。如果它返回所有文档,包括公共文档和受保护文档,我怀疑您需要查看
isProtected
字段中实际存储的内容。该字段必须包含
false
,才能与您列出的查询匹配。它可能包含多个术语,可能同时包含
false
true

!谢谢你的回答。马上!谢谢你的回答。