共通仕様¶
この章では、 IM-ContentsSearch の機能を利用した実装をする上で必要な、共通的な仕様や概念について説明します。
コンテンツ¶
登録用コンテンツ (APIList: InputContent)
新たに検索対象を登録する際に使用するコンテンツです。検索対象の作成処理において、検索結果として表示したい1データ毎にこの登録用コンテンツを作成する必要があります。通常は標準実装クラスである StandardInputContent クラスを利用します。使用方法の詳細や実装例については、 コンテンツ作成処理の実装 の章にて説明します。検索結果用コンテンツ (APIList: ResultContent)
検索処理を実行した結果として取得されるコンテンツです。基本的には登録用コンテンツにて作成された情報を保持しています。検索処理を実行すると、検索結果用コンテンツが格納されたリストを取得することができます。使用方法の詳細や実装例については、 独自全文検索処理の作成手順 の章にて説明します。
フィールド¶
コンテンツには フィールド というデータを格納する単位を保持しており、フィールドの種類毎に格納できるデータ型が異なります。フィールドは 標準フィールド と 動的フィールド の2種類が定義されています。標準フィールド標準で用意されているフィールドです。標準フィールドを使用するには、下記サンプルのように Fields クラスから取得します。標準フィールドには以下のフィールドが定義されています。
- 必須 項目に ○ が付いているフィールドには必ず値を設定する必要があります。
- 検索 項目に ○ が付いているフィールドは、標準全文検索画面において検索対象となります。
No. フィールド名 型 必須 検索 説明 1 ID String ○ コンテンツを一意に判別することが可能なIDを登録するためのフィールドです。RDBにおけるプライマリキーと同様の役割を果たします。 2 TYPE String配列 ○ コンテンツ種別 を登録するためのフィールドです。 コンテンツ種別 の詳細については コンテンツ作成処理の実装 にて記述します。 3 URL String コンテンツの元データにアクセスするためのURLを登録するためのフィールドです。 4 ID_ORIGINAL String 必要に応じてコンテンツの元データを辿るのにデータを登録するためのフィールドです。保持方法は任意ですが、標準ではJSON形式で扱うためのユーティリティが用意されています。 5 TITLE テキスト [1] 配列 ○ コンテンツにおけるタイトルのテキストデータを登録するためのフィールドです。 6 TEXT テキスト [1] 配列 ○ コンテンツのメインとなるテキストデータを登録するためのフィールドです。 7 ATTACHMENT テキスト [1] 配列 ○ 添付ファイル内のテキストデータを登録するためのフィールドです。通常は直接利用せず、APIから添付ファイルをのものを登録します。 8 RECORD_DATE Date 標準検索画面の日付レンジ検索にて使用されるフィールドです。コンテンツの元となる情報が作成された日付を登録することを推奨します。 動的フィールドフィールド名と共に任意のキー値を指定することで、標準フィールドにはない項目を追加可能なフィールドです。動的フィールドを取得するサンプル
1 2 3 4 5 // 商品名の保存に利用するString型の動的フィールド final DynamicField<String, String> strProductNameField = Fields.STRING.toField("product_name"); // 価格の保存に利用するint型の動的フィールド final DynamicField<Integer, Integer> intPriceField = Fields.INT.toField("price");動的フィールドには以下のフィールドが定義されています。
No. フィールド名 型 説明 1 STRING String 文字列値を登録するためのフィールドです。 2 INT Integer 整数値を登録するためのフィールドです。 3 LONG Long 長整数値を登録するためのフィールドです。 4 DATE Date 日付データを登録するためのフィールドです。 5 BOOLEAN Boolean 真偽値を登録するためのフィールドです。 6 NGRAM N-gram テキスト 文字列値をN-gramで解析して登録するためのフィールドです。 7 MORPH 形態素解析 テキスト 文字列値を形態素解析して登録するためのフィールドです。 8 WHITESPACE Whitespace テキスト 文字列値をWhitespaceで解析して登録するためのフィールドです。 9 STRING_MLT String配列 文字列値を登録するための配列フィールドです。 10 INT_MLT Integer配列 整数値を登録するための配列フィールドです。 11 LONG_MLT Long配列 長整数値を登録するための配列フィールドです。 12 DATE_MLT Date配列 日付データを登録するための配列フィールドです。 13 BOOLEAN_MLT Boolean配列 真偽値を登録するための配列フィールドです。 14 NGRAM_MLT N-gram テキスト配列 文字列値をN-gramで解析して登録するための配列フィールドです。 15 MORPH_MLT 形態素解析 テキスト配列 文字列値を形態素解析して登録するための配列フィールドです。 16 WHITESPACE_MLT Whitespace テキスト配列 文字列値をWhitespaceで解析して登録するための配列フィールドです。
権限制御¶
IM-ContentsSearch ではコンテンツ毎に参照権限を設定することが可能です。コンテンツ登録時に設定された権限を利用することで、検索を行ったユーザが検索結果として表示されるコンテンツを制御します。IM-ContentsSearch にける検索権限の操作には、 ACI インターフェースを中心としたAPI群を利用する必要があります。権限制御の概要
IM-ContentsSearch の標準動作における参照権限の制御は、以下のフローで実現されています。コンテンツ作成時の権限付与
- 作成したコンテンツに対して、各コンテンツに応じて参照させたい権限を作成するための ACIBuilder を追加します。
- コンテンツの登録処理を行うと、更新サービスが各コンテンツ追加された ACIBuilder を ACI のセットへと展開します。
- 展開された ACI のセットはメタデータ(文字列)化されて、コンテンツの登録時に権限情報として索引に保持されます。
実装サンプルについては、 コンテンツ作成処理の実装 を参照してください。全文検索実行時の権限フィルタリング
- 全文検索をユーザが保持するすべての権限( ACI )を取得し、メタデータ(文字列)化します。
- 検索のフィルタリング条件として、すべての権限のメタデータを OR条件 として検索します。
- 権限情報がマッチしたコンテンツの索引のみがフィルタリングされ、検索結果のコンテンツとして返却されます。
以下は、参照権限による検索結果をフィルタリングするイメージです。TODO 図を描いて載せる。
脚注
[1] | (1, 2, 3) テキスト : 設定ファイルの設定値により、 N-gram , 形態素解析 , Whitespace の解析方法に変更可能です。 |