2016-11-01 9 views
2

luceneとsolrを使用して、カスタム知識ベースにフルテキスト検索機能を追加しようとしています。現在のところ、ユーザーはロールベースのモデルで見ることができるものを制限しています。したがって、各記事には役割の配列が添付されており、ユーザーがその役割のメンバーでもある場合、その記事を閲覧することができます。ユーザアクセスが制限されたLuceneのインデックス作成

もちろん、検索はユーザーがアクセスできる結果のみを返す必要があります。

私はちょっとどこから始めたいのか、どうやってこれを行うのですか?後で結果をフィルタリングする必要はありますか?ロールベースのインデックスを作成しますか?

誰かが私を正しい方向に向けることができれば、非常に感謝しています。

ありがとうございました。ステファニー。

答えて

1

アクセスロールをメタデータとして保存することをお勧めします。 define access_rolesは、複数の値を持つ文字列フィールドを持つことができます。

access_roles:[user, admin] // Users and the Admin roles can access this search. 
access_roles:[user, admin, anonymous] // Users and the Admin and Anonymous roles can access this search. 

権限を変更する場合は、アクセスロールを編集する必要があります。


ユーザーロール検索を持つユーザーの場合、solrはユーザーのアクセスロールに一致する結果のみを取得します。

user)の役割とも(admin)ロール検索を持っているユーザー、彼の検索は次のように行く:access_rolesuser役割ORadmin役割が含まれているすべての結果をフェッチ

q=mainquery 
&fq=access_roles:user 
&fq=access_roles:admin 
&facet=on 
&facet.field=access_roles 

すると、ユーザ、(user)私はより良い

を理解するための認可スキームをdrawedしているにも「it_departmentのドキュメント

をフェッチする特別チーム(it_department)ロール検索、

q=mainquery 
&fq=access_roles:user 
&fq=access_roles:it_department 
&facet=on 
&facet.field=access_roles 

の役割、メンバーから適応

enter image description here

クエリ210

+0

こんにちは。お返事をありがとうございます。しかし、2つの質問。まず、クエリに基づいて結果を制限するのはちょっと危険なことではありませんか?私が理解しているように、このクエリはユーザによって操作される可能性があります。 2つ目は、アクセスメソッドをインターフェイスとして実装し、他の実装では異なる関数/メソッドを使用するということです。私がちょうど言ったように、私たちにはアクセスを制限するためにアップアドレスを使用する組織があります。したがって、基本的に、access_methodは、ユーザーセッションごとにリアルタイムでtrueを返す必要があります。ありがとう。 Stephanie – Stephanie

+0

もちろん私はIPアドレスがアドレスではないことを意味しました。 – Stephanie

+0

私はあなたのsolrクエリが最終ユーザから直接アクセスできるとは思わなかった。私はあなたがWebフレームワークを使用していると考えた。私はあなたがluceneクエリーパーサーを使ってSpringのようなウェブプロジェクトsthのユーザからクエリを取るべきだと思います。実装されたaccess_rolesにいくつかの定数を定義して、すべてのアクセスグループを区別できる定数を定義する必要があります。つまり、booleanを直接使用することはできません。ユーザーグループ固有のインジケータを定義する必要があります。また、アクセスメソッドがtrueの場合は、ユーザーがアクセス可能なコントローラーメソッドをインターセプトして、照会にaccess_roleを追加する必要があります。 Solrにはフレームワーク –

関連する問題