1

現在、(Umbraco の) Lucene で検索を構築しようとしています。これは、ユーザーの役割のみが表示できる公開ドキュメントと保護されたドキュメントを検索します。私が抱えている問題は、Lucene がすべてのパブリック アイテムとすべての保護されたアイテムを返しますが、役割によって返さないことです。

私の生のLucene検索は次のとおりです。

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

誰にもアイデアはありますか?前もって感謝します。

4

1 に答える 1

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))

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

于 2013-04-15T16:57:56.027 に答える