あなたのクエリは、あなたが意図したことを実際には行っていません。
+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))
ただし、これはあなたが説明する動作を実際には説明していません。パブリックと保護の両方のすべてのドキュメントを返す場合は、isProtected
フィールドに実際に保存されているものを確認する必要があると思います。false
リストしたクエリと一致するには、そのフィールドに含まれている必要があります。複数の用語が含まれる場合があり、場合によってはfalse
との両方が含まれますtrue
。