私たちのアプリケーションでは、アプリケーションを使用して(アップロードされたデータのインデックスを作成するためにsolrを使用している)各ユーザーのインデックスデータを何らかの方法で分離したいと思います。それは可能ですか?
インデックス付けされるすべてのドキュメントのschema.xmlとドキュメント構造は同じです。セキュリティ上の理由から、分離したいだけです。
明確化:SolrにはWebアプリからのみアクセスできることを忘れました。エンドユーザーがSolrに直接接続することはありません。
私たちのアプリケーションでは、アプリケーションを使用して(アップロードされたデータのインデックスを作成するためにsolrを使用している)各ユーザーのインデックスデータを何らかの方法で分離したいと思います。それは可能ですか?
インデックス付けされるすべてのドキュメントのschema.xmlとドキュメント構造は同じです。セキュリティ上の理由から、分離したいだけです。
明確化:SolrにはWebアプリからのみアクセスできることを忘れました。エンドユーザーがSolrに直接接続することはありません。
allowed_user_ids
少数のユーザーのみが各ドキュメントにアクセスできる場合は、ドキュメントへのアクセスを許可されているユーザーIDの複数の値のフィールドを保持できます。次に、user_idでフィルタークエリを実行して、アクセスを制限します。
公開ドキュメントと制限付きドキュメントの両方がある場合は、すべてのuser_idを公開ドキュメントに保存する代わりに、フィールドis_public
を保持して、公開ドキュメントに対してのみtrueに設定できます。制限されたドキュメントについては、でフィルタクエリを使用してallowed_user_ids
ください。
Luceneの検索スペースフィルター機能を使用してみてください。提供された基準に基づいて、クエリの検索に使用できるドキュメントセットを制限します。
基準は2つの方法で構築できます。
1)他のLuceneクエリと同じように:Lucene Filtered Query
2)フィルターのインスタンスとしてドキュメントセットをIndexSearcherに渡します