2013-04-15 5 views
1

현재 Lucene (Umbraco)에서 사용자의 역할로만 볼 수있는 공용 문서 및 보호 된 문서를 검색하는 검색을 시도하고 있습니다. 내가 가지고있는 문제는 Lucene이 모든 공개 항목과 모든 보호 항목을 반환하지만 역할은 반환하지 않는다는 것입니다.Lucene에서 역할이있는 공용 및 개인 문서 검색

내 원시 루씬 검색은 다음과 같습니다

+nodeTypeAlias:pdfdocument +isProtected:false (+rolesAllowed:"userrole" +isProtected:true) 

사람이 어떤 아이디어가 있습니까? 미리 감사드립니다.

답변

1

귀하의 질의가 실제로하는 것을 수행하지 않습니다.

+nodeTypeAlias:pdfdocument 쿼리는 pdfdocuments 만 반환합니다.

+isProtected:false 쿼리가 필요

(+rolesAllowed:"userrole" +isProtected:true) 쿼리가 선호 공공의 문서를 반환하지만,하지 않습니다 보호 "userrole을"일치하는 문서. 그러나 위의 용어는 보호 된 문서와 일치하지 않으므로이를 보지 않아야합니다.

또는 약간 다르게 재 작성 (쿼리 엄격 AND/OR 구문에 매핑되지 않음) :

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

난 당신이 될 것이다 찾고있는 생각 쿼리를 더 같은 :

+nodeTypeAlias:pdfdocument +(isProtected:false (+rolesAllowed:"userrole" +isProtected:true)) 
같은 방식으로, 다시 작성할 수 있습니다

:

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

이 정말 행동 y를 설명하지 않습니다 ou는 그러나 기술한다. 공용 및 보호 된 모든 문서를 반환하는 경우 실제 내용이 isProtected 필드에 저장되어 있는지 확인해야합니다. 해당 입력란에 나와있는 검색어와 일치하려면 해당 입력란에 false이 있어야합니다. 두 개 이상의 용어를 포함 할 수 있으며 falsetrue을 모두 포함 할 수 있습니다.

+0

Spot on! 귀하의 답변에 감사드립니다. –

관련 문제