11.3.2. Protobuf でエンコードされたエントリーのインデックス化
前項の説明どおりにクライアントを設定したら、サーバー側でキャッシュのインデックス設定を開始できます。インデックス の有効化と各種インデックス固有の設定は埋め込みモードと同じで、Red Hat Data Grid のクエリー に記載されています。
ただし、追加の設定ステップも含まれます。埋め込みモードでは、エントリーのクラスにさまざまな Hibernate Search アノテーションが存在するかどうかを分析することで、インデックスメタデータが Java リフレクションによって取得されますが、エントリーが protobuf エンコードされている場合は明らかに実行できません。サーバーは、クライアントと同じ記述子(.proto ファイル)から関連するメタデータを取得する必要があります。記述子は '___protobuf_metadata' という名前のサーバーの専用のキャッシュに保存されます。このキャッシュのキーと値はどちらもプレーンテキストの文字列です。そのため、スキーマの名前をキーとして使用し、スキーマファイル自体を値として使用して、このキャッシュで put 操作を実行するのと同じくらい簡単です。または、(cache-container=*:register-proto-schemas()操作経由)CLI、管理コンソール、または JMX 経由で ProtobufMetadataManager MBean を使用できます。セキュリティーが有効になっている場合、リモートプロトコル経由でスキーマキャッシュにアクセスするには、ユーザーが '___schema_manager' ロールに属している必要があります。
インデックス化を有効にすると、インデックス化する必要のあるフィールドを正確に制御するために @Indexed および @Field protobuf スキーマ擬似アノテーションを使用しない限り、Protobuf でエンコードされたエントリーのすべてのフィールドに対してインデックスが有効になります。デフォルトの動作は、多くのフィールドを持つタイプを処理する場合に非常に効率的ではない可能性があるため、デフォルトのインデックス動作に依存する代わりに、インデックス化すべきフィールドを常に指定することが推奨されます。アノテーションのない protobuf メッセージタイプのインデックス動作も、スキーマファイルの最初に protobuf スキーマオプション 'indexed_by_default' を false に設定して変更できます(デフォルト値は trueと見なされます)。
option indexed_by_default = false; // This disables indexing of types that are not annotated for indexing
option indexed_by_default = false; // This disables indexing of types that are not annotated for indexing