コンテンツ検索にREST APIを使用
Oracle Content Management REST APIでは、/itemsリソースに送信された検索問合せに一致するアイテムをフェッチすることで、公開または管理されたコンテンツ(コンテンツ・アイテムおよびデジタル・アセット)を検索できます。
検索問合せ演算子
検索問合せスコープ
/content/published/api/v1.1/items「コンテンツ配信用のREST API」の検索問合せスコープは、チャネル・トークンで指定される公開ターゲットです。 チャネル・トークンは、問合せパラメータまたはリクエスト・ヘッダーのいずれかとして提供する必要があります。
/content/management/api/v1.1/items検索問合せスコープは、APIクライアント・ユーザーに付与される編集権限によって制御されます。 検索問合せは、リポジトリ・メンバーシップとその中のアセットに対する詳細な編集権限に基づいて、ユーザーが表示できるアイテムのみをフェッチします。
Content DeliveryのREST APIへのリクエストに対して選択した公開ターゲットがセキュアである場合(つまり、アセットがセキュアな公開チャネルに公開されている場合)、送信する検索リクエストでは認可にOAuthを使用する必要があります。 「コンテンツ管理のためのREST API」に送信する検索リクエストには、認可にOAuthを使用する必要があります。
問合せ式の検索
コンテンツ管理のREST APIおよびコンテンツ配信のREST APIでのアイテム検索では、問合せパラメータが共有され、検索問合せ式の作成に同じ構文が使用されます。 したがって、1つの用語として、検索APIは、REST APIのいずれかでアイテム検索を参照するために使用されます。
検索APIを使用すると、/itemsリソースに送信されるリクエストで、検索問合せ式をqパラメータの値として指定できます。 検索問合せ式の構文では、照合条件(eq, ne, co、swなど)とAND、ORおよび()演算子を定義するための様々な演算子がサポートされており、1つのアセット・タイプ内または複数のタイプ間で照合する複雑な問合せ式に照合条件を組み合せることができます。 追加の検索問合せリクエスト・パラメータを使用すると、フェッチする一致アイテムの数、一致するアイテムのページ区切りおよびソート方法、一致するアイテムに対して返されるデータ・フィールドを制御できます。 検索範囲および式に関係なく、APIが一致するアイテムを返すことができる最大ページ・サイズは500に制限されることに注意してください。
- アセット・タイプ内の問合せ: 問合せ式ではアセット・タイプを指定する必要があります。問合せ条件では、このタイプの標準データ・フィールドとユーザー定義データ・フィールドの両方への参照が許可されます。
例えば:
/api/v1.1/items?q=(type eq "Employee" AND fields.role eq "Senior Developer")。 ここでは、ロールは「従業員」型のフィールドです。 - アセット・タイプの問合せ : 問合せ式の定式化方法に応じて、Search APIは次の2種類のクロス・タイプ問合せをサポートしています:
- 標準フィールドに対するグローバル問合せ: 問合せ式では、カッコ
()を使用して複数のアセット・タイプを指定することも、タイプを指定することもできません。 このような問合せは、問合せ条件でのみ標準フィールドを参照できるグローバル(未入力)問合せとして処理されます。例えば:
/api/v1.1/items?q=(name eq "John" or description co "John" and (type eq "t1" or type eq "t2")) - 特定のタイプの問合せ: 問合せ式では、中カッコ
{}を使用して複数のアセット・タイプを指定できます。 このような問合せは、問合せ条件で標準フィールドとユーザー定義フィールドの両方を参照できるため、指定されたアセット・タイプにわたる汎用問合せとして処理されます。 詳細は、「複数のタイプの検索」を参照してください。たとえば:
/api/v1.1/items?q=(name eq "John" and {type eq "t1" and fields.ud1 eq "ud1val"} or {type eq "t2" and fields.ud2 eq "ud2val"}
- 標準フィールドに対するグローバル問合せ: 問合せ式では、カッコ
- 管理API:
id, type, name, description, typeCategory, slug, translatable, language, createdBy, createdDate, updatedBy, updatedDate, repositoryId, channels, collections, status, tags, isPublished, languageIsMaster, taxonomies - 配信APIの場合:
id, type, name, description, typeCategory, slug, translatable, language, createdDate, updatedDate, taxonomies
| データ・フィールド | データ型 |
|---|---|
name, description, type, typeCategory, slug, language, status |
textデータ型(単一値)
|
id, repositoryId |
reference (単一値)
|
createdDate, updatedDate |
datetime (単一値)
|
translatable,isPublished, languageIsMaster |
boolean (単一値)
|
collections, channels, tags, taxonomies, suggestedTaxonomies |
referenceデータ型(複数値)
|
いずれかの検索問合せフォームでは、リクエスト時に問合せパラメータdefaultを使用して一致基準を指定することで、任意の場所(つまり、標準またはユーザー定義のデータ・フィールドとの照合)でアイテムを照合して検索できます。 このような条件は、集計テキスト・データとして索引付けされているすべてのフィールドのアイテムの値と一致する汎用問合せとして扱われます。 たとえば:
/api/v1.1/items?default="coffee"/api/v1.1/items?q=(type eq "Employee")&default="senior"
次の詳細を参照してください:
- 「検索演算子」および検索APIでサポートされている問合せパラメータ。
- 参照フィールドによる品目のオーダー照合でサポートされている「2レベル・ディープ検索」と関連オプション。
- タイプ全体にわたる「カスタム・フィールドの検索」で、パラメータ別の順序に関連しています。
- 「タクソノミでの動的アセット数の取得」カテゴリおよびこのAPIを使用したファセット検索のサポート。
「ストップ・ワード(検索で除外される単語)」
次の英語のストップ・ワードは、デフォルト検索および入力されたanyField検索で除外されます:
a, an, and, are, as, at, be, but, by, for, if, in, into, is, it, no, not, of, on, or,such, that, the, their, then, there, these, they, this, to, was, will, with.
検索演算子
AND、ORおよび () 演算子を定義して、単一のアセット・タイプ内または複数のタイプ間でフィールド値を照合できる複雑な問合せ式に組み合せることができます。 次の表に、検索APIで現在サポートされている検索問合せ演算子を示します。
| オペレータ | 例 | サポートされるデータ型 | 説明 |
|---|---|---|---|
| eq |
|
テキスト、参照、数値、10進数、ブール、日時 | equals演算子eqは、問合せに指定された正確な値と一致します。 この演算子は、複数値のデータ型には適用されません。 この演算子で指定する値は、標準フィールドを除いて大/小文字が区別されません。 この演算子は、値の特殊文字も考慮します。
|
| ne |
|
テキスト、参照、数値、10進数、ブール、日時 | not equals演算子neは、問合せに指定された値と一致しないアイテムと一致します。 この演算子は、複数値のデータ型には適用されません。 この演算子で指定する値は、標準フィールドを除いて大/小文字が区別されません。 この演算子は、値の特殊文字も考慮します。 ne演算子は、アセット・タイプ内のユーザー定義フィールドに対する問合せで使用できます。 ただし、クロス・タイプ問合せでは、ユーザー定義フィールドに検索語を含めることはできません。
|
| co |
|
text、reference、number、decimal、datetime、largetext | contains演算子coは、基準で指定されたすべての単語に一致します。 語は、値を特殊文字で分割した形式になります。 指定した語のうち1つ以上(この例では、johnまたはalex、あるいはその両方)を含む結果を返します。 この演算子は、検索中に値の特殊文字を考慮しません。
この演算子では、「ストップ・ワード」は検索されません。 この演算子は、単一値属性の場合はtext, largetextに適用できますが、複数値属性の場合は適用可能です。text、reference、number、decimal、datetime、largetext。 可能な日時書式を理解するには、「サポートされている日時書式」を参照してください。 この演算子とともに指定した値は、大/小文字が区別されません。 |
| nc |
|
text、reference、number、decimal、datetime、largetext | not contains演算子ncは、同じ基準のco 演算子と一致しないアイテムと一致します。
|
| sw |
|
text | starts with演算子swは、フィールド条件で指定された初期文字値のみに一致します。 この演算子は、複数値のデータ型には適用されません。 この演算子とともに指定した値は、大/小文字が区別されません。
|
| ge |
|
数値、小数点、日時 | greater than or equal to演算子geは、数値および日時の値のみに一致します。 可能な日時形式を理解するには、「サポートされている日時書式」を参照してください。 この演算子は、複数値のデータ型には適用されません。
|
| le |
|
数値、小数点、日時 | less than or equal to演算子leは、数値および日時の値のみに一致します。 可能な日時形式を理解するには、「サポートされている日時書式」を参照してください。 この演算子は、複数値のデータ型には適用されません。
|
| gt |
|
数値、小数点、日時 | greater than演算子gt は、数値および日時の値のみに一致します。 可能な日時形式を理解するには、「サポートされている日時書式」を参照してください。 この演算子は、複数値のデータ型には適用されません。
|
| 次を実行します |
|
数値、小数点、日時 | less than演算子ltは、数値および日時の値のみに一致します。 可能な日時形式を理解するには、「サポートされている日時書式」を参照してください。 この演算子は、複数値のデータ型には適用されません。
|
| mt |
|
text, largetext | フレーズ問合せまたは近接検索matches演算子mtを使用すると、相互の特定の距離内にある単語を検索できます。 結果は一致率の高い値でソートされます。 問合せの"petrol 20kmpl"条件で指定されている値が、"petrolの燃料の走行速度"で20KMPLを含む可能性のあるコンテンツと一致する必要がある場合、コンテンツ・アイテムの検索に役立ちます。
|
| sm |
|
text, largetext | この演算子smでは、指定した条件のように音が聞こえる値を検索できます - また、ファジィ検索とも呼ばれます。ファジィ検索では、デフォルトで、結果に一致するように最大2つの編集が使用されます。 "Rome"は"Dome"に似ています。 この演算子は、単一値と複数値の両方のデータ型に適用可能です。 この演算子とともに指定した値は、大/小文字が区別されません。
|
| AND |
|
-NA- | AND演算子は、複数の問合せ条件の間にAND条件を配置するために使用できます。 これはORより優先されます。
|
| または |
|
-NA- | OR演算子を使用すると、複数の問合せ条件間にOR条件を配置できます。
|
| ( ) |
|
-NA- | カッコで囲んだ演算子()を使用して、基準内の条件をグループ化できます。 これは最も優先され、次にAND、次にORが続きます。
|
検索問合せ
検索問合せ式を作成するときは、特定の検索問合せでの演算子の使用、または次の表に示す特定のデータ型の使用について、次の詳細を考慮してください。
| 問合せ | 説明 |
|---|---|
| 特定の問合せを入力 | この問合せでは、常にeq演算子のみが使用されます。eqでは、大/小文字が区別される型名を使用します。 ?q=(type eq "Employee" OR type eq "Address")など、マルチティープ問合せがサポートされていますが、型間の問合せになります。
例: 単一タイプの検索のため、 |
| 日付問合せ | 日付問合せは、様々な日付書式が関連付けられているため、特別なタイプの問合せです。 オフセットがISO 8901フォーマットで追加されないかぎり、問合せのすべての日時値はUTCタイムゾーンのみであるとみなされます。 問合せ結果は、常にすべての日時フィールドのUTCタイムゾーン書式になります。 データ型がdatetimeのフィールドは、レンジ問合せに演算子ge, gt, le, ltを使用し、一致が等しい場合はeqを使用する必要があります。 「サポートされている日時書式」は、日付問合せで受け入れられる日付 / 日時書式を示します。
例: |
| 小数値の問合せ | 小数値の問合せは小数点以下3桁までサポートされ、残りの桁は無視されます。https://{cecsdomain}/content/management/api/v1.1/items?q=(type eq "Product" AND fields.price ge 425.3214)は、価格が425.321以上であるすべての製品を返します。
|
| 大型テキスト・データ型問合せ | データ型がlargetextのフィールドは格納されません。 したがって、問合せ結果はその値を返せません。 しかし、フィールド値は問合せ条件で使用できます。
|
| 一般問合せ | 汎用問合せはデフォルトの検索問合せで、ユーザーがフィールド名または演算子を使用せずに値だけで検索できる場合に使用できます。 内部的には、汎用検索ではco演算子が使用されます。 この問合せはワイルドカード文字をサポートしていません。 この問合せでは、「ストップ・ワード」は検索されません。
例: 例: |
| ID問合せ |
これは、ID属性を使用する検索問合せです。 例: 例: |
| カテゴリ問合せ |
この問合せは、指定されたカテゴリID、カテゴリ名、カテゴリapiName、カテゴリ・ノードID、カテゴリ・ノード名またはカテゴリ・ノードapiName属性で分類されたアイテムを検索します。 例: 例: 例: 例: 例: 例: |
| 推奨カテゴリ問合せ | この問合せでは、カテゴリID、否認済ステータスおよび言語を持つ特定のカテゴリに分類できるアイテムが検索されます。 一度にフィルタリングに使用できるカテゴリIDは1つのみで、suggestedTaxonomyでフィルタリングする場合はrepositoryIdが必須です。 デフォルト・ステータスは「拒否されていません」です。 言語が指定されていない場合、すべての言語のアイテムが返されます。
例: 例: 例: 例: |
| ステータス問合せのロック |
この問合せでは、ロック済ステータスでアイテムを検索します。 例: 例: 例: |
| 参照フィールド問合せ |
この検索問合せは参照属性を使用します。 例: |
| 任意のフィールド問合せでテキストを照合 |
問合せでは、タイプ内または特定のタイプ間でアセットを検索します。 任意のフィールドおよびバイナリ・ファイルのテキストの検索は、アセットに一致する問合せ構文を使用してサポートされます。 この問合せでは、「ストップ・ワード」は検索されません。 例: 例: 例: 問合せ構文でサポートされている問合せ演算子の使用: ノート: MT演算子は、anyField問合せで使用して数値または小数フィールドの値を検索することはできません。
|
| バイナリ・ファイル問合せ内のテキストの一致 |
問合せは、デジタル・アセットのバイナリ・ファイルのテキストと一致するように検索を入力しました。 デジタル・アセット内のバイナリ・ファイルのテキストでの検索は、タイプ内の検索問合せで 例: 例: テキスト・データ型の問合せ構文でサポートされている問合せ演算子の使用: |
サポートされている日時書式
| 書式 | 例 |
|---|---|
| YYYY-MM-DD | 1989-03-26 |
| YYYY/MM/DD | 1989/03/26 |
| DD-MM-YYYY | 26-03-1989 |
| DD/MM/YYYY | 26/03/1989 |
| YYYY-MM-DD''T''hh:mm:ss | 1989-03-26T18:32:38 |
| YYYY/MM/DD''T''hh:mm:ss | 1989/03/26T18:32:38 |
| DD-MM-YYYY''T''hh:mm:ss | 26-03-1989T18:32:38 |
| DD/MM/YYYY''T''hh:mm:ss | 26/03/1989T18:32:38 |
| YYYY-MM-DD''T''hh:mm:ss.SSS | 1989-03-26T18:32:38.840 |
| YYYY/MM/DD''T''hh:mm:ss.SSS | 1989/03/26T18:32:38.840 |
| DD-MM-YYYY''T''hh:mm:ss.SSS | 26-03-1989T18:32:38.840 |
| DD/MM/YYYY''T''hh:mm:ss.SSS | 26/03/1989T18:32:38.840 |
| YYYY年MM月DD日 | 19890326 |
| YYYYMMDDhhmmss | 19890326183238 |
| YYYYMMDDhhmmssSSS | 19880326183238840 |
| YYYY-MM-DD''T''hh:mm:ss.SSS+/-HH:mm | 1989-03-26T18:32:38.840+05:30 |
| YYYY-MM-DD''T''hh:mm:ss+/-HH:mm | 1989-03-26T18:32:38+05:30 |
Querytextパラメータで検索
REST API for Documentsでフォルダまたはファイルの検索APIのquerytextパラメータを使用して、文字列検索、タグ検索およびカスタム・メタデータ・フィールド検索を同時に利用できます。
querytext検索文字列は、検索フォルダまたはファイル、および検索フォルダまたは特定のフォルダIDのファイルのエンドポイントで使用でき、フォルダまたはファイル名と一致し、タグ検索またはカスタム・メタデータ・フィールド検索も可能です。 querytextを使用すると、自宅(self)ディレクトリ内のディレクトリ・ツリー全体と共有フォルダを検索できます。
querytextをREST APIで検索するように設定するには:
-
ファイルとフォルダを作成し、文字列検索のためにそれらにタグを追加します。
現在サポートされているタグは
CONTAINSのみです。-
タグは親フォルダから継承されるため、各タグを配置する場所を計画します。
-
次のAPIを使用して、タグの設定、タグの追加、またはタグの削除: フォルダ・タグの設定、フォルダ・タグの編集、ファイル・タグの設定、ファイル・タグの編集
-
-
メタデータ・コレクションを追加します。
-
管理者は、グローバル・コレクションを作成します(個人コレクションはインデックス・コレクションとしてサポートされていません)。
-
検索をサポートする必要があるフィールドを特定し、これらのフィールドのインデックスを作成するためにメタデータ・リソース内のAPIを呼び出します。
インデックスを作成するフィールドは100個に制限されています。 インデックスからフィールドを削除することはできません。 検索は、まずお気に入り共有フォルダで行われてから、最大100個の他の共有フォルダで行われます。 検索前に一部のフォルダをお気に入りとして指定し、検索結果を向上させることができます。
-
整数型のメタデータ・フィールドは数値として検索できません。
-
ドキュメントのREST APIから、検索APIの日付タイプのメタデータ・フィールドを検索できます。 これにより、正確に一致する日付または日付の範囲(日付が特定の開始日と特定の終了日の間にあるファイル)を検索できます。
-
-
問合せを作成します。
-
検索フォルダまたはファイルの
querytextパラメータで検索文字列を使用し、特定のフォルダIDエンドポイントで検索フォルダまたはファイルを使用して、フォルダおよびファイル名、タグ、および索引メタデータ・フィールドを検索します。タグおよびカスタム・メタデータ検索の例については、「ドキュメント用REST API」のエンドポイントの説明を参照してください。
-
検索問合せでは、シングル・クォーテーション・マーク文字(')を
%60にURLエンコーディングする必要があります。 たとえば、Collection1.field1<CONTAINS>'myValue'はCollection1.field1<CONTAINS>%60myValue%60に変わります。 -
あなたの条件が本当に結果を見つけることを検証する簡単な質問から始めてください。
-
カッコ、
<AND>句、および<OR>句を組み合わせて、より複雑な問合せを作成できます。
-
メタデータ・フィールドに関する検索の設定
ドキュメントのREST APIのメタデータ・コレクション・リソースで検索可能なメタデータ・フィールドを設定します。 その後、カスタム・フィールドを使用してテキスト検索を実行できます。
メタデータ・フィールドを検索するには:
-
管理者としてOracle Content Managementにサインインし、メタデータ・コレクションを作成します。
「メタデータ収集リソース」を参照してください。
-
管理者は、検索可能なMetadataフィールドの取得エンドポイントですでに検索可能なメタデータ・フィールドを確認するため、検索索引に追加できるフィールドの数を確認できます。
このREST APIコールは、コンテンツの検索に現在使用可能なすべてのメタデータ・フィールドを取得します。結果リストには、テナントに対するそれぞれのグローバル・メタデータ・コレクションのプレフィクスが付いたすべてのメタデータ・フィールドが含まれます。 各テナントの検索可能フィールドは200に制限されています。
-
「ドキュメント用REST API」の検索可能なメタデータ・フィールドの設定エンドポイントを使用して、検索可能なメタデータ・フィールドを指定します。
200個のフィールドに到達した後は、新しいフィールドをインデックス作成して検索可能にすることはできません。 現在、メタデータ・コレクションまたはフィールド(あるいはその両方)がシステムから削除されないかぎり、フィールドは検索索引から削除できません。 コレクションまたはフィールド(あるいはその両方)を削除すると、以前に設定したすべての既存のメタデータ情報が失われます(リカバリできません)。 この後、新しいフィールドは200フィールドの制限まで検索可能になります。
カスタム・メタデータ検索の場合、REST APIであるドキュメントの場合、CONTAINSを使用したテキスト検索のみがサポートされます。 数値または日付の検索はサポートされません。 たとえば、webユーザー・インタフェースを介して作成されたカスタム・メタデータ・フィールドは数値または日付タイプのフィールドであるため、検索できません。
これらのエンドポイントとその使用例の詳細は、「ドキュメント用REST API」の「Metadataコレクション」の「検索可能なMetadataフィールドの設定」および「検索可能なMetadataフィールドの取得」を参照してください。
検索リクエスト・パラメータ
qまたはdefaultパラメータに加えて、/itemsリソースに送信される検索リクエストでは、他のリクエスト・パラメータを使用して、レスポンスで返されるアイテムまたはアイテム・フィールドの数を制御できます。 次の表に、コンテンツ配信用のREST APIおよびコンテンツ管理のREST APIによって受け入れられるリクエストの詳細を示します。
| 問合せのパラメータ | タイプ | 説明 |
|---|---|---|
| channelToken | 文字列 | パブリッシュ・ターゲットのチャネル・トークン。 チャネル・トークンは、問合せパラメータまたはリクエスト・ヘッダーのいずれかとして提供する必要があります。 |
| default | 文字列 | すべてのフィールドのアイテムの値と一致するデフォルトの検索問合せ式。 |
| fields | 文字列 |
fieldsパラメータは、照会されたアイテムの返されるフィールドと値を制御するために使用されます。 このパラメータは、フィールド名またはすべてをコンマで区切ったリストを受け入れます。 ユーザー定義フィールド名には、フィールド・プレフィクスとピリオド(.)を付ける必要があります。 これらのフィールドは照会された各アイテムごとに返されます。 すべてのフィールド名で大文字と小文字が区別されるため、ユーザーは検索問合せで正しいフィールド名を指定する必要があります。 フィールドがすべて(大/小文字を区別しない)として指定されている場合、タイプ固有の問合せの場合、問合せ対象の各アイテムについて、すべての標準フィールドおよびユーザー定義フィールド(largetext、json、locationデータ型を除く)が返されます。すべてのタイプにわたる問合せの場合、すべての標準フィールドのみが返されます。 標準フィールドIDおよびタイプは常にレスポンスで返されるため、フィルタで除外できません。 このパラメータは問合せではオプションであり、デフォルトの問合せ結果には、ID、名前、説明およびレスポンス内のタイプのみが表示されます。 問合せで指定された不正または無効なフィールド名は無視されます。 ブレス・スタイルのクロス・タイプの問合せのコンテキストでは、 例: これにより、状態および国フィールドを含むLocationTypeの検索結果でID、タイプ、状態、国、updatedDateが返されます。 例: これにより、 例: 検索問合せではタイプ・フィールドが使用されない(グローバル問合せとして動作する)ため、標準フィールド(ID、タイプ、typeCategory、名前、説明、スラグ、言語、createdDate、updatedDate、タクソノミ、レンディション)のみが返されます 例: 検索問合せではタイプ・フィールドが使用されない(グローバル問合せとして動作)ため、これは標準フィールド(ID、名前、createdDate、タイプなど)のみを返します デフォルト値: |
| limit | integer(int32) | 戻す行数 デフォルト値は100です。 |
| links | 文字列 | 結果に必要な関連(相関)リンクのカンマ区切りリストを受け入れます。 デフォルトでは、リソース内のすべての適用可能なリンクがレスポンスに含まれます。 可能な値は次のとおりです: self, canonical, describedby, first, last, prev, next. 例: link=self,canonicalは、relプロパティ、selfまたはcanonicalとのリンクのみを返します。 |
| offset | integer(int32) | レスポンス行の開始インデックス。 デフォルト値は100です。 |
| orderBy | 文字列 |
フォーマット:
orderBy={fieldName1}:{asc/desc};{fieldName2}:{asc/desc}ノート: 昇順と降順を表します。ascとdescは常に小文字です。タイプ固有の問合せでは、フィールド名は次のようにできます: 名前、createdDate、updatedDate (標準フィールド)、またはユーザー定義フィールド(単一値のデータ型):
例: 名前の昇順ですべてのアイテムを返します。 例: updateDateの昇順ですべてのアイテムを返します。 例 : 年齢の高い順にすべてのアイテムを返します。 例: 年齢の昇順ですべてのアイテムを返します。 例 : リンゴへのアイテムの関連性でソートされたすべてのアイテムを返します。 例 : 参照フィールド「blogauthor」によって参照される作成者の年齢の昇順にすべてのアイテムを返します。 例: 参照フィールド「blogauthor」によって参照される作成者の年齢の昇順にすべてのアイテムを返します。 例: ルート・カテゴリ「loc」の昇順でソートされたすべてのアイテム、パスが 例: ユーザー定義テキスト・フィールドを使用して昇順にソートされたすべてのアイテムを返します。 例: アセットのJSONフィールド(埋込みコンテンツ)に格納されたJSONデータの属性を使用して、昇順でソートされたすべてのアイテムを返します。 例: ユーザー定義テキスト・フィールドへの2レベル参照を使用して、すべてのアイテムを昇順でソートして返します。 この例では、2レベル検索の互換性モードを使用します。 例: ユーザー定義テキスト・フィールドへの2レベル参照を使用して、すべてのアイテムを昇順でソートして返します。 この例では、2レベル検索の2レベル・モードを使用します。 |
| q | 文字列 | このパラメータは、フィールド値に一致する問合せ式条件を受け入れます。 このような問合せ条件の多くは、AND/OR演算子を使用して結合でき、カッコで囲まれています。 問合せ条件の値は、{fieldName} {operator} "{fieldValue}"の形式に従います。
複数のタイプの問合せの場合、フィールド名は標準フィールド(ID、タイプ、名前、説明、typeCategory、スラグ、言語、createdDate、updatedDate、タクソノミ)に制限されます。 ただし、タイプ固有の問合せの場合、フィールド名は標準フィールドとユーザー定義フィールドに制限されます(largeTextデータ型のフィールドを除く)。 演算子で許可される値は、eq (Equals)、co (Contains)、sw (Startswith)、ge (次以上)、le (次以下)、gt (次以下)、lt (次より小さい)、mt (Match)、sm (類似)のみです。 例: 例: 例: 例: 例: |
| スクロール | boolean |
このパラメータを指定すると、検索APIからスクロール動作が予想されます。 スクロールは、大きな結果セットを取得するための推奨メソッドです。 デフォルト値: false |
| scrollId | 文字列 | このパラメータは、スクロールIDを指定するために使用されます。scrollTTLおよびqパラメータの元の値は、一貫した結果を得るためにscrollIdを使用するリクエストでは常に必要です。 後続のスクロール・リクエストに常にqパラメータを含める要件は、現在のところ以前のリクエストに対して検証されず、同じスクロール・セッション内のパラメータへの変更は無視されます。
|
| scrollTTL | integer(int32) |
scrollTTL (ミリ秒) - defaultおよびmaximum value 30000 ms)は、現在のスクロール・リクエストと次のスクロール・リクエスト間で許可される非アクティブな期間を指定します。 スクロールを使用して検索するすべてのレスポンスには、scrollIdが含まれます。 後続のスクロール・リクエストには、返されたscrollIdがリクエスト間で変更されることがあるため、前のレスポンスから返されたscrollIdが含まれている必要があります。 すべてのスクロール・リクエストはステートレスであるため、scrollTTLは常に予想されます。 scrollTTLの値は、リクエスト間で同じである必要はありません。 元の検索問合せ(q)も、後続のスクロール・リクエストごとに想定されます。 scrollIdが無効または期限切れの場合、レスポンス・ステータスは400 (Bad Request)になります。 デフォルト値: 30000 |
| totalResults | boolean |
ブール値を受け入れます。 Trueに設定すると、レスポンスの結果フィールド合計が表示されます。 デフォルト値はfalseです。 |
| twolvl_v1_1 | 文字列 | このパラメータは値を必要とせず、検索APIが参照タイプの名前、説明などのシステム・フィールドを検索するために(i) fields.refname.fieldnameを使用し、(ii) fields.refname.fields.userfieldnameを使用して参照タイプのユーザー定義フィールドを検索します。 このパラメータを使用しない場合、2レベル検索は互換性モードで動作し、fields.reftype.fieldnameのような検索のみをサポートします。 さらに、fieldnameがシステム定義のフィールド名と同じ場合、2レベルの検索はfields.reftype.fields.fieldnameと同じように動作します。
|
Content Management REST API
| 問合せのパラメータ | タイプ | 説明 |
|---|---|---|
| channelToken | 文字列 | このパラメータは、チャネルのchannelTokenを受け入れ、返される結果を制御するために使用します。 結果には、指定されたchannelTokenが属するチャネルをターゲットにしたアイテムのみが含まれます。 これは、q問合せパラメータの問合せ条件の1つとしてチャネル(アイテムの標準フィールド)に問合せ条件(channels co "{channelId}")を指定することで実現できます。 これはオプションのパラメータであり、デフォルトではすべての結果が戻されます。
|
| default | 文字列 | すべてのフィールドのアイテムの値と一致するデフォルトの検索問合せ式。 |
| expand | 文字列 | このパラメータは、ユーザーが一致する各アイテムに対する権限を取得できるようにするために使用されます。 許可のみを受け入れます。 |
| fields | 文字列 |
このパラメータは、結果内の各アイテムの返されるフィールドを制御するために使用します。 このパラメータは、フィールド名またはすべてをコンマで区切ったリストを受け入れます。 これらのフィールドは、結果内の各アイテムに対して返されます。 フィールド名はすべて大文字小文字が区別され、ユーザーは問合せで正しいフィールド名を指定する必要があります。 すべてのユーザー定義フィールド名には、プレフィクス・フィールドを指定し、その後にピリオド(.)を付加する必要があります。 例: これにより、検索結果で標準フィールド(名前)、ユーザー・フィールド(状態)およびタイプ住所の国が返されます。
例: これにより、検索結果で使用される特定のタイプのすべての属性が返されます。
例: すべてのタイプのすべてのアイテムについて、検索結果に標準フィールド、名前およびcreatedByを返します。
例: これにより、検索結果のすべての標準フィールドがすべてのタイプのすべてのアイテムに対して返されます。 https://{cecsdomain}/content/management/api/v1.1/items?fields=allデフォルト値: name、description、repositoryId、slug、language、translatable、createdDate、updatedDate |
| limit | integer(int32) | このパラメータは、負でない整数を受け入れ、結果のサイズの制御に使用します。 offset+limit > 10000の場合、制限は10000オフセットとして処理され、結果が得られます。 デフォルト値は100です。 |
| links | 文字列 | このパラメータは、リンク名のカンマ区切りのリストを受け入れます。 デフォルトでは、このパラメータによって、適用可能なすべてのリンクが指定されます。 可能な値は次のとおりです: self、canonical、describedby、first、last、prev、next |
| offset | integer(int32) | このパラメータには、10000未満の負でない整数を指定でき、結果の開始索引を制御するために使用されます。 デフォルト値は0です。 |
| orderBy | 文字列 |
このパラメータは問合せではオプションであり、デフォルトでは、 このパラメータは、ユーザーが結果をソートしてソートする フォーマット:
orderBy={fieldName1}:{asc/desc};{fieldName2}:{asc/desc}ノート: 昇順および降順を表します。昇順および降順は常に小文字です。タイプ固有の問合せでは、フィールド名は、標準フィールド( クロス・タイプ検索のコンテキストでは、このパラメータには型付きセクションを指定でき、
例: 名前の昇順ですべてのアイテムを返します。 例: updateDateの昇順ですべてのアイテムを返します。 例: 年齢の高い順にすべてのアイテムを返します。 例: 年齢の昇順ですべてのアイテムを返します。 例: リンゴへのアイテムの関連性でソートされたすべてのアイテムを返します 例: 参照フィールド「blogauthor」によって参照される作成者の年齢の昇順ですべてのアイテムを返します。 例: 参照フィールド「blogauthor」によって参照される作成者の年齢の昇順ですべてのアイテムを返します。 例: パスが 例: ユーザー定義テキスト・フィールドを使用して昇順にソートされたすべてのアイテムを返します。 例: アセットのJSONフィールド(埋込みコンテンツ)に格納されたJSONデータの属性を使用して、昇順でソートされたすべてのアイテムを返します。 例: ユーザー定義テキスト・フィールドへの2レベル参照を使用して、すべてのアイテムを昇順でソートして返します。 この例では、2レベル検索の互換性モードを使用します。 例: ユーザー定義テキスト・フィールドへの2レベル参照を使用して、すべてのアイテムを昇順でソートして返します。 この例では、2レベル検索の2レベル・モードを使用します。 |
| q | 文字列 | このパラメータは、フィールド値に一致する問合せ式条件を受け入れます。 このような問合せ条件の多くは、AND/OR演算子を使用して結合でき、カッコで囲まれています。 問合せ条件の値は、{fieldName} {operator} "{fieldValue}"の形式に従います。 タイプ固有の問合せの場合、フィールド名は標準フィールドとユーザー定義フィールドに制限されます(largeTextデータ型のフィールドを除く)。 演算子で許可される値は、eq (Equals)、co (Contains)、sw (Startswith)、ge (Greater than or equals to)、le (Less than or equals to)、gt (Greater than)、lt (Less than)、mt (Matches)、sm (Similar)のみです。
例: 例: 例: 例: 例: |
| repositoryId | 文字列 | このパラメータはリポジトリのIDを受け入れ、返される結果を制御するために使用されます。 結果には、指定したリポジトリに属するアイテムのみが含まれます。 これは、q問合せパラメータの問合せ条件の1つとしてrepositoryId (アイテムの標準フィールド)と等しい問合せ条件(repositoryId eq "{repositoryId}")を指定することで実現できます。 これはオプションのパラメータであり、デフォルトではすべてのリポジトリから結果が戻されます。
|
| スクロール | boolean |
このパラメータを指定すると、検索APIからスクロール動作が予想されます。 スクロールは、大きな結果セットを取得するための推奨メソッドです。 デフォルト値はfalseです。 |
| scrollId | 文字列 | このパラメータは、スクロールIDを指定するために使用されます。scrollTTLおよびqパラメータの元の値は、一貫した結果を得るためにscrollIdを使用するリクエストでは常に必要です。 後続のスクロール・リクエストに常にqパラメータを含める要件は、現在のところ以前のリクエストに対して検証されず、同じスクロール・セッション内のパラメータへの変更は無視されます。
|
| scrollTTL |
scrollTTL (ミリ秒) - defaultおよびmaximum value 30000 ms)は、現在のスクロール・リクエストと次のスクロール・リクエスト間で許可される非アクティブな期間を指定します。 スクロールを使用して検索するすべてのレスポンスには、scrollIdが含まれます。 後続のスクロール・リクエストには、返されたscrollIdがリクエスト間で変更されることがあるため、前のレスポンスから返されたscrollIdが含まれている必要があります。 すべてのスクロール・リクエストはステートレスであるため、scrollTTLは常に予想されます。 scrollTTLの値は、リクエスト間で同じである必要はありません。 元の検索問合せ(q)も、後続のスクロール・リクエストごとに想定されます。 scrollIdが無効または期限切れの場合、レスポンス・ステータスは400 (Bad Request)になります。 デフォルト値は30000です。 |
|
| totalResults | boolean |
このパラメータは、ブール・フラグを受け入れます。 trueとして指定した場合、返される結果には合計結果数が含まれている必要があります。 デフォルト値はfalseです。 |
| twolvl_v1_1 | 文字列 | このパラメータには値は必要ありません。 これを使用すると、検索APIが参照タイプの名前、説明などのシステム・フィールドを検索するために(i) fields.refname.fieldnameを使用する2つのレベルを示し、(ii) fields.refname.fields.userfieldnameを使用して参照タイプのユーザー定義フィールドを検索します。 このパラメータを使用しない場合、2レベル検索は互換性モードで動作し、fields.reftype.fieldnameのような検索のみをサポートします。 さらに、fieldnameがシステム定義のフィールド名と同じ場合、2レベルの検索はfields.reftype.fields.fieldnameと同じように動作します。
|
2レベル・ディープ検索
デフォルトでは、検索問合せは、アイテム自体の標準またはユーザー定義のデータ・フィールドと一致します。 参照アイテムのデータ・フィールドは、直接参照であるかぎり検索することもできます。 これにより、品目のデータ・フィールド階層の2レベルを深める検索問合せを効果的に構成できるため、アセット標準またはユーザー定義のデータ・フィールドと一致する2レベルのディープ検索を実行できます。 2レベル検索では、アイテムのフィールドの検索時に提供されるものと同じ問合せ式のセマンティクスが提供されます。 たとえば:
参照上のユーザー定義フィールドと一致する検索問合せ: /.../api/v1.1/items?q=(type eq "Employee" AND fields.address.street eq "Main St") ここで、住所はタイプ従業員の参照タイプ・フィールドの名前で、名前番地のフィールドがあります。
ノート:
第1レベル参照を通過した品目参照階層の再帰的な検索はサポートされていません。 第2レベルのフィールドによるソートもサポートされていません。
-
「互換性モード」
これはデフォルト・モードです。 互換性モードでは、問合せ式はfields.ref-field.field-nameなどのフィールド表記をサポートします。ref-fieldは参照またはメディア・フィールドの名前、field-nameは参照アセット・タイプのフィールドの名前です。 さらに、field-nameが標準フィールドの名前(ID、名前、説明など)と同じ場合、2レベルのディープ検索はfields.ref-field.fields.field-nameと同じ動作になります。つまり、field-nameはユーザー定義フィールドの名前として扱われます。 たとえば:- 問合せ(
type eq "parent-type" AND fields.ref-field.field-name eq "blah")は、値blahが子アイテムのユーザー定義フィールドfield-nameに割り当てられているparent-type(親アイテム)のアイテムと一致します。これは、フィールドref-fieldの参照として設定されています。 - 問合せ(
type eq "parent-type" AND fields.ref-field.name eq "blah")は、値blahが子アイテムの標準フィールドnameに割り当てられているparent-type(親アイテム)の項目と一致します。これは、フィールドref-fieldで参照として設定されています。
- 問合せ(
-
「2レベル・モード」
このモードは、問合せパラメータtwolvl_v1_1 modeをtrueに設定することでアクティブ化されます。 このモードでは、2レベルの検索問合せ式は、fields.ref-field.field-nameを使用してID、名前または説明などの標準フィールドを検索し、fields.ref-field.fields.field-nameを使用して参照されるアセット・タイプのユーザー定義フィールドを検索します。 たとえば:- 問合せ
(type eq "parent-type" AND fields.ref-field.field-name eq "blah")は、値blahが子アイテムの標準フィールドfield-nameに割り当てられたタイプparent-type(親アイテム)の項目に一致します。これは、フィールドref-fieldの参照として設定されます。 - 問合せ
(type eq "parent-type" AND fields.ref-field.fields.field-name eq "blah")は、値blahがユーザー定義フィールドfield-name(フィールドref-fieldの参照として設定)に割り当てられたparent-type(親アイテム)の項目に一致します。
- 問合せ
JSONフィールドでのJSONデータの検索
検索APIを使用すると、アイテム上のJSONフィールドに格納されているJSONデータの属性に割り当てられた検索条件に一致する値に基づいて、コンテンツ・アイテムまたはカスタム・デジタル・アセット・タイプのデジタル・アセットを返すことができます。 Oracle Content Mangement webインタフェースでは、JSON形式のデータをアセット・タイプに格納するためのデータ・フィールドが埋込みコンテンツと呼ばれます。 APIでは、オブジェクトの配列を含む、JSONオブジェクトのベース属性、配列要素または属性に一致する検索語がサポートされています。 現在、JSONデータ索引付けでは、索引付きJSONフィールド(< 2.5 MB)、JSONフィールド・キー長(< 512B)および深さに対する次の制限が、JSONオブジェクト(10レベル)のフィールドと一致するように設定されています。
問合せ構文では、フィールド名のドット表記法を使用して、任意のJSONコンテンツ内の任意のキーを参照します。つまり、 fields.<json_field_name>.value を使用してカスタム・テキスト・フィールドを問い合せたり、 fields.<json_field_name>.value.key1.subkey1.subsubkey3などを使用できます。検索条件では、検索APIでサポートされている既存のすべての演算子を通常のカスタム・フィールドに使用できます。次に例を示します:
q=(type eq "Employee" AND fields.<json_field_name>.value.street eq "Main St¿)
q=(type eq "Employee" AND fields.<json_field_name>.value.age gt ¿20")
q=(type eq "Employee" AND fields.<json_field_name>.value.proper`es eq ¿office=HQ¿ AND fields.<json_field_name>.value.proper`es eq ¿building=100¿)
同様に、2レベルのディープ検索の場合:
q=(type eq "Employee" AND fields.<ref_field_name>.fields.<json_field_name>.value.street eq "Main St¿)
q=(type eq "Employee" AND fields.<ref_field_name>.fields.<json_field_name>.value.age gt ¿20")
q=(type eq "Employee" AND fields.<ref_field_name>.fields.<json_field_name>.value.proper`es eq ¿office=HQ¿ AND fields.<ref_field_name>.fields.<json_field_name>.value.proper`es eq ¿building=100¿)
fields.<json_field_name>.value.*.subsubkey3などの検索条件でのワイルドカードの使用は、パフォーマンス上の理由ではサポートされていません。
検索APIでは、返された検索結果をJSONキー/サブキーでソートすることもできます。次に例を示します:
orderBy= fields.<json_field_name>.value.name:asc
orderBy= fields.<json_field_name>.value.name:desc
orderBy= fields.<ref_field_name>.fields.<json_field_name>.value.name:asc orderBy= fields.<ref_field_name>.fields.<json_field_name>.value.name:desc
複数のタイプの検索
Oracle Content Managementの21.6.1リリース(2021年6月)より前では、検索問合せで複数のアセット・タイプを指定することで、問合せ条件およびorderBy仕様でアセット・タイプの標準フィールドのみを参照できるグローバル(未入力)問合せになりました。 fields.custom-filed-nameのようなアセット・タイプ固有の述語。型指定されていない問合せ条件、フィールド指定またはorderBy指定で使用できませんでした。 新しいタイプの検索APIとそれに関連付けられた検索問合せ構文によって、これらの制限が削除されます。
- 中カッコの一致するペア内で指定できるアセット・タイプは1つのみです。 {} ペアはタイプ・スコープを定義します。
- ネストされたアセット・タイプ・スコープ・デリミタは許可されません。たとえば、
{...{...}..}式は検証に失敗します。 fieldsまたはorderByパラメータの型式を定義するときに、中カッコ {} を大カッコ[]と組み合せることができます。- 型スコープの外部で指定された述語は、大カッコ(非マルチ・タイプの検索問合せパラメータなど)を使用して指定されたように動作します。
- 問合せでは、様々なユーザー定義型にわたる
not equal (ne)演算子はサポートされていません。
複数のアセット・タイプのカスタム・データ・フィールドに対する検索問合せの例:
{type eq "t1" AND fields.ud1 eq "ud1"}ud1は、t1型のフィールドである必要があります。 問合せが検証に失敗します(そうでない場合)。
{type eq "t1" AND fields.ud1 eq "ud1"} AND name eq "John"タイプ・デリミタ外の標準フィールドの場合と同じ。
{type eq "t1" AND fields.ud1 eq "ud1"} OR {type eq "t2" AND fields.ud2 eq "ud2"}ud1は、型のフィールド、t1およびud2は、t2型のフィールドである必要があります。
{type eq "t1" AND and fields.ud1 eq "ud1"} AND {type eq "t2" AND fields.ud2 eq "ud2"}前の問合せと同様に有効ですが、AND演算子によりゼロの結果が返されます。
{type eq "t1" OR type eq "t2"}タイプ・デリミタ内に2つのタイプが指定されているため、問合せが無効です。
type eq “t1” OR type eq “t2”未タイプの問合せに解決されるスコープ指定されていないスタイル検索。
type eq “t1” OR type eq “t2” AND fields.ud1 eq “ud1”未入力に解決され、検証エラーがスローされる、スコープ指定されていないスタイル検索。
type eq “t1” AND fields.ud1 eq “ud1”タイプt1に解決されるスコープ指定されていないスタイル検索。 ud1がt1のフィールドであるかぎり有効です。
{type eq “t2” AND fields.ud2 eq “ud2”} OR type eq “t1” AND fields.ud1 eq “ud1”t2に解決される型、t1およびスコープ指定検索に解決されるスコープ指定されていないスタイル検索。 問合せは、ud1がt1のフィールド、ud2がt2のフィールドである場合に有効です。
フィールド・パラメータ
単一タイプの標準およびユーザー定義のデータ・フィールドを返すようにリクエストでfieldsパラメータを未入力に構成する方法は、Id, name, type, updatedDate, fields.ud1,fields.ud2という形式を使用します。 fieldsパラメータも入力でき、{<typename1>:fields.<userdefinedfieldname>,[fields.<userdefinedfieldname>]},{<typename2>:fields.<userdefinedfieldname>,[fields.<userdefinedfieldname>]}という形式になります。
型指定されていない式をfieldsパラメータ値として型付き問合せと組み合せて使用する場合、qパラメータは、スコープ指定されていない単一のアセット・タイプ( {} デリミタの外部で指定されたタイプ述語)に解決する必要があります。そうしないと、例外がスローされます。
fieldsパラメータ値として設定された型式の例を次に示します:
fields=id,name,type,updatedDate,{t1:fields.ud1},{t2:fields.ud2,fields.ud3}システム定義フィールド(ID、名前、タイプ、updatedDate)およびユーザー定義フィールドud1(タイプt1、タイプud2およびタイプt2)をリクエストする型指定方法。 タイプとユーザー定義フィールドが一致しない場合、検証中に例外がスローされます。
fields=id,name,type,updatedDate,{t1:fields.ud1},{t2:fields.ud2},fields.ud3システム定義フィールド(id、name、type、updatedDate)およびユーザー定義フィールドud1をタイプt1にリクエストし、t2にud2をリクエストする型付きの方法。 ユーザー定義フィールドud3は、スコープ指定されていない型に解決する必要があります。そうしないと、検証中に例外がスローされます。
タクソノミ・カテゴリごとのアセットの動的数
| タクソノミに次のカテゴリ・ツリーがあるとします: | カテゴリ当たりのアイテム数は、DSLRとNikonの両方に割り当てられた製品アイテムD500を次のように考慮する必要があります: |
|---|---|
|
|
アイテムD500もカメラ・カテゴリに直接割り当てられている場合は、同じ結果が予想されます。
- 初期フィルタ問合せから開始
- エンドユーザーがフィルタ条件を追加するか、カテゴリを選択
- 変更されたフィルタ問合せと、必要に応じて集計問合せを実行
- 返された集計数に基づいてカテゴリ・リストを絞り込みます
- エンド・ユーザーがアイテムのフィルタリングを続行すると#2からサイクルが繰り返されます
AGGS問合せパラメータ
aggs問合せパラメータを使用する必要があります。 この配列の各要素は、次の表に示す必須属性およびオプション属性によって定義された集計を表します。 /itemsリソースは、コンテンツ配信用のREST APIとコンテンツ管理用のREST APIの両方でaggsパラメータをサポートしています。
| 問合せのパラメータ | タイプ | 集計属性 |
|---|---|---|
| aggs | JSON配列 |
|
- 単一の集計を含む問合せ
.../api/v1.1/items?fields=name&aggs={"name":"item_count_per_category"}&q=(type eq "ContentType1" AND fields.simple_text_value mt “brown") - 単一の集計と問合せパラメータ
limit=0を持つ問合せでは、検索結果は返されません。 集計されたカウントは、Elasticsearch集計キャッシュから返されます.../api/v1.1/items?fields=name&aggs={"name":"item_count_per_category"}&q=(type eq "ContentType1" AND fields.simple_text_value mt “brown")&limit=0 - 2つの集計を含む問合せ
.../api/v1.1/items?fields=name&aggs=[{"name":"item_count_per_category"}, {"name":"item_count_per_category","field":"apiname"}]&q=(type eq "ContentType1" AND fields.simple_text_value mt "brown")
"aggregationResults": [
{
"itemCountPerCategory": [
{
"categoryId": "65EAC164681C47D68851583237381001",
"itemCount": 3
},
{
"categoryId": "C1E24A8BA3754F5AB17AEED3F020A898",
"itemCount": 3
},
{
"categoryId": "AF8D57438E3645ABBB137812FE830C34",
"itemCount": 2
}
],
"name": "item_count_per_category"
},
{
"itemCountPerCategory": [
{
"categoryApiName": "tax-cat1",
"itemCount": 3
},
{
"categoryApiName": "tax-cat2",
"itemCount": 3
},
{
"categoryApiName": "tax-cat3",
"itemCount": 2
}
],
"name": "item_count_per_category"
}
]集計キャッシュ
カテゴリAPIごとに集計されたアセット数は、基礎となるElasticsearchリクエスト・キャッシュに依存します。これは、Oracle Content Management検索でデフォルトで有効になっています。 デフォルトでは、リクエスト・キャッシュは、問合せパラメータlimit=0の場合に検索リクエストの結果のみをキャッシュし、一致するアイテムをキャッシュしませんが、hits.total、aggregationsおよびsuggestionsをキャッシュします。 これにより、頻繁に使用される(場合によっては重い)検索リクエストで、ほぼ瞬時に結果が返されます。 リクエスト・キャッシュは、キャッシュされていない検索と同じほぼリアルタイムの約束を保持します。 Elasticsearchは、シャードがリフレッシュされるたびにキャッシュされた結果を自動的に無効化しますが、シャード内のデータが実際に変更された場合のみです。 つまり、Elasticsearchは常にキャッシュから同じ結果を取得します。キャッシュされていない検索リクエストの場合と同じです。
カテゴリAPIごとの動的アセット・カウントの使用
- ユーザー問合せ: Oracle Content Management Search API問合せ構文要件に準拠する任意の複雑度のユーザー指定の検索問合せ式。 これは、(name eq "car"など)入力でエンドユーザーが入力したすべてのものに対するフリー・フォーム検索問合せです。
- カテゴリ・ノード問合せ:
‘(taxonomies.categories.nodes.id eq “<id_1>" OR taxonomies.categories.nodes.id eq “<id_2>” OR ... OR taxonomies.categories.nodes.id eq “<id_N>”)’として表されるOracle Content Management検索API問合せの形式。id_Xは、特定のタクソノミでユーザーが選択したカテゴリの1つのIDです。 - 検索問合せ: エンドユーザーに表示する結果をフェッチするための1つ以上の検索問合せ。 ユーザー問合せ、1つ以上のカテゴリ・ノード問合せ、またはそれらの組合せです。
- 集計問合せ: 特定の検索ファセットについて集計アイテム数をコンピュートするために生成される、ユーザー問合せのバリアント。
総アセット数の計算
- 検索問合せ:
q=<user_query> - 集計問合せ (すべてのタクソノミ):
q=<user_query>
ユーザーは1つのタクソノミから1つ以上のカテゴリを選択 - taxonomy-1:
- 検索問合せ:
q=<user_query> AND <category_node_query_1> - 集計問合せ (taxonomy-1):
q=<user_query> - 集計問合せ (その他のすべてのタクソノミ):
q=<search_query>
- 検索問合せ:
q=<user_query> AND <category_node_query_1> AND <category_node_query_2> - 集計問合せ (taxonomy-1):
q=<user_query> AND <category_node_query_2> - 集計問合せ (taxonomy-2):
q=<user_query> AND <category_node_query_1> - 集計問合せ(他のすべてのタクソノミ):
q=<search_query>
- 検索問合せ:
q=<user_query> AND <category_node_query_1> AND <category_node_query_2> AND <category_node_query_3> - 集計問合せ (taxonomy-1):
q=<user_query> AND <category_node_query_2> AND <category_node_query_3> - 集計問合せ (taxonomy-2):
q=<user_query> AND <category_node_query_1> AND <category_node_query_3> - 集計問合せ (taxonomy-3):
q=<user_query> AND <category_node_query_1> AND <category_node_query_2>
- 検索問合せ:
q=<user_query> AND <category_node_query_1> AND <category_node_query_2> ... AND <category_node_query_N> - 集計問合せ (taxonomy-1):
q=<user_query> AND <category_node_query_2> ... AND <category_node_query_N> - 集計問合せ (taxonomy-2):
q=<user_query> AND <category_node_query_1> AND <category_node_query_3> ... AND <category_node_query_N> - 集計問合せ (taxonomy-N):
q=<user_query> AND <category_node_query_1> AND <category_node_query_2> ... AND <category_node_query_N-1> - 集計問合せ(他のすべてのタクソノミ):
q=<search_query>
eコマースのユース・ケース
| タクソノミ | アイテムとアイテムの分類 | カテゴリ当たりのアイテム数 |
|---|---|---|
|
次のすべてのアイテムに同じコンテンツ・タイプContentType2があります:
|
|
単純検索問合せを使用して、カテゴリなしのすべてのアセットを照合し、特定のリポジトリ内のタイプ・コンテンツType2のすべてのアセットに一致させます。 検索問合せリクエストに対する問合せおよびAPIレスポンスを読みやすくするために、サンプル・タクソノミのすべてのカテゴリがカテゴリ名と同じAPI名(apiName)を持ちます。 したがって、次の検索問合せ式および集計はすべてapiNameを使用します。 かわりにカテゴリIDを使用できます。
カテゴリが選択されていません
- 検索問合せ:
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType2")&fields=name&links=none&aggs=[{"name":"item_count_per_category","field":"apiname"}]¿ - 集計問合せ(すべてのタクソノミ):
q=<search_query>
{
"hasMore": false,
"offset": 0,
"count": 9
"limit": 9,
"items": [
{
"name": "HP Omen Keyboard",
"links": [],
"id": "COREFE86EA24BAE84D4E87B8A1F992163D6B",
"type": "ContentType2"
},
{
"name": "Razer BlackWidow Keyboard",
"links": [],
"id": "COREF8CEBA1264C04A1A87954C2A4A33D2DB",
"type": "ContentType2"
},
{
"name": "Razer Huntsman Keyboard",
"links": [],
"id": "CORE07C7E1108BFB4A5EAF1761F46251FECD",
"type": "ContentType2"
},
{
"name": "HP Pavillion Keyboard",
"links": [],
"id": "COREAB4987C5FB664007B3B6B4D93CFAC90F",
"type": "ContentType2"
},
{
"name": "HP Elite X2",
"links": [],
"id": "COREF911737800FE406C92183E182C7228CC",
"type": "ContentType2"
},
{
"name": "HP Elite Folio",
"links": [],
"id": "CORE18B3AFABE2814E75AB54CBBF80B3A509",
"type": "ContentType2"
},
{
"name": "HP Elite Dragonfly",
"links": [],
"id": "COREAED2F7C50B404D6FB6547CCE69DD3492",
"type": "ContentType2"
},
{
"name": "Razer Blade Pro",
"links": [],
"id": "CORE66D9CFFF1C2945A7857C6C0B5E4B21BB",
"type": "ContentType2"
},
{
"name": "Razer Blade Stealth",
"links": [],
"id": "CORED009A429B9D04080AE19FF42CE8CC758",
"type": "ContentType2"
}
],
"links": [],
"aggregationResults": [
{
"itemCountPerCategory": [
{
"categoryApiName": "loc-sheraton-mall",
"itemCount": 9
}, {
"categoryApiName": "ele-laptops",
"itemCount": 5 },
{
"categoryApiName": "loc-stoneridge-mall",
"itemCount": 5
}, {
"categoryApiName": "man-hp",
"itemCount": 5 },
{
"categoryApiName": "ele-keyboards",
"itemCount": 4
}, {
"categoryApiName": "man-razer",
"itemCount": 4 }
],
"name": "item_count_per_category"
}
]
}エンドユーザーが「ELE-laptops」を選択
1つのカテゴリが選択された状態で、検索問合せを使用して結果を取得し、カテゴリが選択されていないタクソノミの集計カウントを取得します。 次に、個別の集計問合せを使用して、タクソノミElectronicsの集計数をコンピュートします。 集計問合せはパラメータlimit=0を使用してアイテムを返せません。これは、集計数のみに興味があるためです。
- 検索問合せ:
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType2" AND (taxonomies.categories.nodes.apiName eq “ele-laptops”))&fields=name&links=none&aggs=[{"name":"item_count_per_category","field":"apiname"}]検索問合せレスポンス:{ "hasMore": false, "offset": 0, "count": 5, "limit": 5, "items": [ { "name": "HP Elite X2", "links": [], "id": "COREF911737800FE406C92183E182C7228CC", "type": "ContentType2" }, { "name": "HP Elite Folio", "links": [], "id": "CORE18B3AFABE2814E75AB54CBBF80B3A509", "type": "ContentType2" }, { "name": "HP Elite Dragonfly", "links": [], "id": "COREAED2F7C50B404D6FB6547CCE69DD3492", "type": "ContentType2" }, { "name": "Razer Blade Pro", "links": [], "id": "CORE66D9CFFF1C2945A7857C6C0B5E4B21BB", "type": "ContentType2" }, { "name": "Razer Blade Stealth", "links": [], "id": "CORED009A429B9D04080AE19FF42CE8CC758", "type": "ContentType2" } ], "links": [], "aggregationResults": [ { "itemCountPerCategory": [ { "categoryApiName": "ele-laptops", "itemCount": 5 }, { "categoryApiName": "loc-sheraton-mall", "itemCount": 5 }, { "categoryApiName": "loc-stoneridge-mall", "itemCount": 3 }, { "categoryApiName": "man-hp", "itemCount": 3 }, { "categoryApiName": "man-razer", "itemCount": 2 } ], "name": "item_count_per_category" } ] } - 集計問合せ(電子機器用):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType2")&fields=name&limit=0&links=none &aggs[{"name":"item_count_per_category","field":"apiname"}]集計問合せレスポンス:{ "hasMore": false, "offset": 0, "count": 0, "limit": 0, "items": [], "links": [], "aggregationResults": [ { "itemCountPerCategory": [ { "categoryApiName": "loc-sheraton-mall", "itemCount": 9 }, { "categoryApiName": "ele-laptops", "itemCount": 5 }, { "categoryApiName": "loc-stoneridge-mall", "itemCount": 5 }, { "categoryApiName": "man-hp", "itemCount": 5 }, { "categoryApiName": "ele-keyboards", "itemCount": 4 }, { "categoryApiName": "man-razer", "itemCount": 4 } ], "name": "item_count_per_category" } ] }
エンドユーザーが「ELE-laptops」と「MAN-hp」を選択
- 検索問合せ:
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType2" AND (taxonomies.categories.nodes.apiName eq "ele-laptops") AND (taxonomies.categories.nodes.apiName eq "man-hp"))&fields=name&links=none&aggs=[{"name":"item_count_per_category","field":"apiname"}]問合せレスポンスの検索{ "hasMore": false, "offset": 0, "count": 3, "limit": 3, "items": [ { "name": "HP Elite Dragonfly", "links": [], "id": "CORE02B5199C0C154F9AB29C42F829A47F21", "type": "ContentType2" }, { "name": "HP Elite Folio", "links": [], "id": "COREAAC11256104F4D73AAF599230621A789", "type": "ContentType2" }, { "name": "HP Elite X2", "links": [], "id": "COREDCF70DB8B3CA4479876D759A3B7A39AC", "type": "ContentType2" } ], "links": [], "aggregationResults": [ { "itemCountPerCategory": [ { "categoryApiName": "ele-laptops", "itemCount": 3 }, { "categoryApiName": "loc-sheraton-mall", "itemCount": 3 }, { "categoryApiName": "loc-stoneridge-mall", "itemCount": 3 }, { "categoryApiName": "man-hp", "itemCount": 3 } ], "name": "item_count_per_category" } ] } - 集計問合せ(電子機器用):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType2" AND (taxonomies.categories.nodes.apiName eq "man-hp"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}]集計問合せレスポンス{ "hasMore": false, "offset": 0, "count": 5, "limit": 5, "items": [ { "name": "HP Elite Dragonfly", "links": [], "id": "CORE02B5199C0C154F9AB29C42F829A47F21", "type": "ContentType2" }, { "name": "HP Elite Folio", "links": [], "id": "COREAAC11256104F4D73AAF599230621A789", "type": "ContentType2" }, { "name": "HP Elite X2", "links": [], "id": "COREDCF70DB8B3CA4479876D759A3B7A39AC", "type": "ContentType2" }, { "name": "HP Pavillion Keyboard", "links": [], "id": "COREF0AED9516AED4DC6A0692A696170FD57", "type": "ContentType2" }, { "name": "HP Omen Keyboard", "links": [], "id": "CORE816259C0386D4704AB006B9F40D9F457", "type": "ContentType2" } ], "links": [], "aggregationResults": [ { "itemCountPerCategory": [ { "categoryApiName": "loc-sheraton-mall", "itemCount": 5 }, { "categoryApiName": "loc-stoneridge-mall", "itemCount": 5 }, { "categoryApiName": "man-hp", "itemCount": 5 }, { "categoryApiName": "ele-laptops", "itemCount": 3 }, { "categoryApiName": "ele-keyboards", "itemCount": 2 } ], "name": "item_count_per_category" } ] } - 集計問合せ(製造元の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType2" AND (taxonomies.categories.nodes.apiName eq "ele-laptops"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}]集計問合せレスポンス{ "hasMore": false, "offset": 0, "count": 5, "limit": 5, "items": [ { "name": "HP Elite Dragonfly", "links": [], "id": "CORE02B5199C0C154F9AB29C42F829A47F21", "type": "ContentType2" }, { "name": "HP Elite Folio", "links": [], "id": "COREAAC11256104F4D73AAF599230621A789", "type": "ContentType2" }, { "name": "HP Elite X2", "links": [], "id": "COREDCF70DB8B3CA4479876D759A3B7A39AC", "type": "ContentType2" }, { "name": "Razer Blade Stealth", "links": [], "id": "COREF49CB87945574CC59B2ACAE38A46D529", "type": "ContentType2" }, { "name": "Razer Blade Pro", "links": [], "id": "CORE51A676D1B2FF4DB5B975806AFAF69284", "type": "ContentType2" } ], "links": [], "aggregationResults": [ { "itemCountPerCategory": [ { "categoryApiName": "ele-laptops", "itemCount": 5 }, { "categoryApiName": "loc-sheraton-mall", "itemCount": 5 }, { "categoryApiName": "loc-stoneridge-mall", "itemCount": 3 }, { "categoryApiName": "man-hp", "itemCount": 3 }, { "categoryApiName": "man-razer", "itemCount": 2 } ], "name": "item_count_per_category" } ] }
- 検索問合せ:
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType2" AND (taxonomies.categories.nodes.apiName eq "ele-laptops") AND (taxonomies.categories.nodes.apiName eq "man-hp") AND (taxonomies.categories.nodes.apiName eq "loc-stoneridge-mall"))&fields=name&links=none&aggs=[{"name":"item_count_per_category","field":"apiname"}]問合せレスポンスの検索{ "hasMore": false, "offset": 0, "count": 3, "limit": 3, "items": [ { "name": "HP Elite Dragonfly", "links": [], "id": "CORE02B5199C0C154F9AB29C42F829A47F21", "type": "ContentType2" }, { "name": "HP Elite Folio", "links": [], "id": "COREAAC11256104F4D73AAF599230621A789", "type": "ContentType2" }, { "name": "HP Elite X2", "links": [], "id": "COREDCF70DB8B3CA4479876D759A3B7A39AC", "type": "ContentType2" } ], "links": [], "aggregationResults": [ { "itemCountPerCategory": [ { "categoryApiName": "ele-laptops", "itemCount": 3 }, { "categoryApiName": "loc-sheraton-mall", "itemCount": 3 }, { "categoryApiName": "loc-stoneridge-mall", "itemCount": 3 }, { "categoryApiName": "man-hp", "itemCount": 3 } ], "name": "item_count_per_category" } ] } - 集計問合せ(電子機器用):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType2" AND (taxonomies.categories.nodes.apiName eq "man-hp") AND (taxonomies.categories.nodes.apiName eq "loc-stoneridge-mall"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}]集計問合せレスポンス{ "hasMore": false, "offset": 0, "count": 5, "limit": 5, "items": [ { "name": "HP Elite Dragonfly", "links": [], "id": "CORE02B5199C0C154F9AB29C42F829A47F21", "type": "ContentType2" }, { "name": "HP Elite Folio", "links": [], "id": "COREAAC11256104F4D73AAF599230621A789", "type": "ContentType2" }, { "name": "HP Elite X2", "links": [], "id": "COREDCF70DB8B3CA4479876D759A3B7A39AC", "type": "ContentType2" }, { "name": "HP Pavillion Keyboard", "links": [], "id": "COREF0AED9516AED4DC6A0692A696170FD57", "type": "ContentType2" }, { "name": "HP Omen Keyboard", "links": [], "id": "CORE816259C0386D4704AB006B9F40D9F457", "type": "ContentType2" } ], "links": [], "aggregationResults": [ { "itemCountPerCategory": [ { "categoryApiName": "loc-sheraton-mall", "itemCount": 5 }, { "categoryApiName": "loc-stoneridge-mall", "itemCount": 5 }, { "categoryApiName": "man-hp", "itemCount": 5 }, { "categoryApiName": "ele-laptops", "itemCount": 3 }, { "categoryApiName": "ele-keyboards", "itemCount": 2 } ], "name": "item_count_per_category" } ] } - 集計問合せ(製造元の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType2" AND (taxonomies.categories.nodes.apiName eq "ele-laptops") AND (taxonomies.categories.nodes.apiName eq "loc-stoneridge-mall"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}]集計問合せレスポンス{ "hasMore": false, "offset": 0, "count": 3, "limit": 3, "items": [ { "name": "HP Elite Dragonfly", "links": [], "id": "CORE02B5199C0C154F9AB29C42F829A47F21", "type": "ContentType2" }, { "name": "HP Elite Folio", "links": [], "id": "COREAAC11256104F4D73AAF599230621A789", "type": "ContentType2" }, { "name": "HP Elite X2", "links": [], "id": "COREDCF70DB8B3CA4479876D759A3B7A39AC", "type": "ContentType2" } ], "links": [], "aggregationResults": [ { "itemCountPerCategory": [ { "categoryApiName": "ele-laptops", "itemCount": 3 }, { "categoryApiName": "loc-sheraton-mall", "itemCount": 3 }, { "categoryApiName": "loc-stoneridge-mall", "itemCount": 3 }, { "categoryApiName": "man-hp", "itemCount": 3 } ], "name": "item_count_per_category" } ] } - 集計問合せ(ロケーションの場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType2" AND (taxonomies.categories.nodes.apiName eq "ele-laptops") AND (taxonomies.categories.nodes.apiName eq "man-hp"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}]集計問合せレスポンス{ "hasMore": false, "offset": 0, "count": 3, "limit": 3, "items": [ { "name": "HP Elite Dragonfly", "links": [], "id": "CORE02B5199C0C154F9AB29C42F829A47F21", "type": "ContentType2" }, { "name": "HP Elite Folio", "links": [], "id": "COREAAC11256104F4D73AAF599230621A789", "type": "ContentType2" }, { "name": "HP Elite X2", "links": [], "id": "COREDCF70DB8B3CA4479876D759A3B7A39AC", "type": "ContentType2" } ], "links": [], "aggregationResults": [ { "itemCountPerCategory": [ { "categoryApiName": "ele-laptops", "itemCount": 3 }, { "categoryApiName": "loc-sheraton-mall", "itemCount": 3 }, { "categoryApiName": "loc-stoneridge-mall", "itemCount": 3 }, { "categoryApiName": "man-hp", "itemCount": 3 } ], "name": "item_count_per_category" } ] }
一般的なユースケース
| タクソノミ | アイテムとアイテムの分類 | カテゴリ当たりのアイテム数 |
|---|---|---|
|
次のすべてのアイテムに同じコンテンツ・タイプContentType1があります:
|
|
「eコマースのユース・ケース」と同様に、単純検索問合せを使用して、カテゴリなしのすべてのアセットを照合し、特定のリポジトリ内のタイプ・コンテンツType1のすべてのアセットに一致させます。 検索問合せリクエストに対する問合せおよびAPIレスポンスを読みやすくするために、サンプル・タクソノミのすべてのカテゴリがカテゴリ名と同じAPI名(apiName)を持ちます。 したがって、次の検索問合せ式および集計はすべてapiNameを使用します。 かわりにカテゴリIDを使用できます。
カテゴリが選択されていません
- 検索問合せ:
q=(repositoryId eq "<repo_ID>" AND type eq “ContentType1”)&fields=name&links=none&aggs=[{"name":"item_count_per_category","field":"apiname"} - 集計問合せ:
q=<search_query>
- 検索問合せ:
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND (taxonomies.categories.nodes.apiName eq "ta1-cat_0_1_1" OR taxonomies.categories.nodes.apiName eq “ta1-cat_0_2_1"))&fields=name&links=none&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(TA1の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1"&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"} - 集計問合せ(カテゴリが選択されていないタクソノミ):
q=<search_query>
- 検索問合せ:
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND (taxonomies.categories.nodes.apiName eq "ta2-cat_0_1_1"))&fields=name&links=none&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(TA2の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1"&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"} - 集計問合せ(カテゴリが選択されていないタクソノミ):
q=<search_query>
- 検索問合せ:
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND (taxonomies.categories.nodes.apiName eq "ta3-cat_0_1_1"))&fields=name&links=none&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(TA3の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1"&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"} - 集計問合せ(カテゴリが選択されていないタクソノミ):
q=<search_query>
- 検索問合せ:
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND (taxonomies.categories.nodes.apiName eq "ta1-cat_0_1_1" OR taxonomies.categories.nodes.apiName eq "ta1-cat_0_2_1") AND (taxonomies.categories.nodes.apiName eq “ta2-cat_0_1_1”))&fields=name&links=none&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(TA1の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND(taxonomies.categories.nodes.apiName eq "ta2-cat_0_1_1"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(TA2の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND(taxonomies.categories.nodes.apiName eq "ta1-cat_0_1_1" OR taxonomies.categories.nodes.apiName eq "ta1-cat_0_2_1"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(カテゴリが選択されていないタクソノミ):
q=<search_query>
- 検索問合せ:
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND (taxonomies.categories.nodes.apiName eq "ta2-cat_0_1") AND (taxonomies.categories.nodes.apiName eq “ta3-cat_0_1”))&fields=name&links=none&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(TA2の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND (taxonomies.categories.nodes.apiName eq "ta3-cat_0_1"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(TA3の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND (taxonomies.categories.nodes.apiName eq "ta2-cat_0_1"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(カテゴリが選択されていないタクソノミ):
q=<search_query>
- 検索問合せ:
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND (taxonomies.categories.nodes.apiName eq "ta1-cat_0_1_1" OR taxonomies.categories.nodes.apiName eq "ta1-cat_0_2_1") AND (taxonomies.categories.nodes.apiName eq "ta2-cat_0_1_1") AND (taxonomies.categories.nodes.apiName eq “ta3-cat_0_1_1”))&fields=name&links=none&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(TA1の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND (taxonomies.categories.nodes.apiName eq "ta2-cat_0_1_1") AND (taxonomies.categories.nodes.apiName eq "ta3-cat_0_1_1"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(TA2の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND (taxonomies.categories.nodes.apiName eq "ta1-cat_0_1_1" OR taxonomies.categories.nodes.apiName eq "ta1-cat_0_2_1") AND (taxonomies.categories.nodes.apiName eq "ta3-cat_0_1_1"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(TA3の場合):
q=(repositoryId eq "<repo_ID>" AND type eq "ContentType1" AND (taxonomies.categories.nodes.apiName eq "ta1-cat_0_1_1" OR taxonomies.categories.nodes.apiName eq "ta1-cat_0_2_1") AND (taxonomies.categories.nodes.apiName eq "ta2-cat_0_1_1"))&fields=name&links=none&limit=0&aggs=[{"name":"item_count_per_category","field":"apiname"}] - 集計問合せ(カテゴリが選択されていないタクソノミ):
q=<search_query>
スクロールAPI
スクロールまたはスクロール・リクエストは、膨大な検索結果セットを取得するための推奨方法です。 ブール・パラメータscroll=trueを検索リクエストに追加して起動されます。 最初のスクロール検索リクエストの結果(成功した場合)は、レスポンスでscrollIdを返します。 最初のスクロール・リクエストの後続のすべてのスクロール・リクエストは、戻されるscrollIdをパラメータscrollId=<scrollId value>として指定する必要があります。 scrollIdは後続のスクロール・リクエスト間で変更される可能性があるため、クライアントは、セッション内の前のスクロール・レスポンスによって返されたscrollIdを常に送信する必要があります。 最初のスクロール・リクエストで指定されたqパラメータも、後続の各スクロール・リクエストで指定する必要があります。 スクロール・リクエストが結果0を返すか、レスポンスにscrollIdが設定されていないと、スクロール検索で一致したすべての結果が取得されます。
スクロール検索リクエストのページごとに返される結果の数は、limitパラメータによって決まります。 最初のスクロール・リクエストに指定されたlimitパラメータは、スクロール・セッションの存続期間中有効です。 その他の場合と同様に、検索レスポンスが大きすぎると、HTTPステータス・コード413になります。
スクロールは検索サーバーのコストがかかるため、スクロール・セッションは積極的にクリーンアップされます。 後続のスクロール・リクエスト間でscrollTTLミリ秒を超える経過時間が経過すると、スクロール・セッションがクリーンアップされ、セッションscrollIdをさらに使用するとエラーが発生します。 scrollTTLの最大値(およびデフォルト)は30000ミリ秒(30秒)です。 可能な場合は、scrollTTL値を短くすることをお薦めします。
ノート:
hasMoreパラメータは、スクロール検索に対して常にfalseを返します。 returnMasterパラメータがtrueに設定されている場合、スクロールは使用できません。
/api/v1.1/items?q=(type eq "Employee" AND fields.role eq "Senior Developer")&scroll=true&scrollTTL=5000- scrollIdで最初のスクロール・レスポンスが切り捨てられました:
scrollId=abcdefghij
/api/v1.1/items?q=(type eq "Employee" AND fields.role eq "Senior Developer")&scrollId=abcdefghij&scrollTTL=3000 (note scrollTTL can change)- 後続のスクロール・レスポンスをscrollIdで切り捨てました:
scrollId=pqrstuvw
/api/v1.1/items?q=(type eq "Employee" AND fields.role eq "Senior Developer")&scrollId=pqrstuvw&scrollTTL=3000- 最終スクロール・レスポンスの切捨て:
count=0
カスタム・ランキング・ポリシー
- デジタル・アセットのコンテンツ・アイテムまたは属性に関する検索可能な標準フィールドとカスタム・フィールド
- ランキング・メソッド一致条件への索引付きアイテム
- アイテム関連性スコアへの影響: スコア増減。
- 減衰関数
- グローバル・デフォルト: グローバル・デフォルトとして設定されているランキング・ポリシーは、組込みのランキング・ポリシーをオーバーライドし、検索問合せに一致するアイテムの関連性スコアを計算するためにデフォルトで適用されます。
- チャネル・デフォルト: チャネル・デフォルトとして設定されているランキング・ポリシーは、組込みのランキング・ポリシーまたはグローバル・デフォルトをオーバーライドし、このチャネルの検索問合せに一致するアイテムの関連性スコアを計算するためにデフォルトで適用されます。
- rankByパラメータ値: 検索問合せリクエストの
rankByパラメータの値として設定されたランキング・ポリシーは、デフォルト・ポリシーをオーバーライドし、レスポンスで返されるアイテムの関連性スコアを計算するために適用されます。
組込みランキング・ポリシー
- Elasticsearch関連性スコア: 検索問合せに一致するデフォルトでは、Elasticsearch類似性関連スコア(Okapi BM25アルゴリズム)でランク付けされます。
- 複数条件問合せでの期間頻度: 複数期間検索問合せの場合、Elasticsearch関連性スコア・アルゴリズムでは、タイプ固有検索またはデフォルト(タイプ指定なし)検索に一致するアイテムのスコアを計算するときに、用語頻度(tf)が考慮されます。
- 語幹一致: スコアリング・アルゴリズムは、同じランクを非定型一致および語幹一致に適用します(たとえば、OCIコンピュート・トポロジとOCIコンピュート・トポロジは同等です)。 同じ茎を持つ一致のグループ内で、非ステージ一致のランクは、語幹一致のランクより高くなります。
カスタム・ランキング・ポリシー
- 一致ルール: アセット・タイプの標準またはユーザー定義フィールドで、照合が必要なもの(厳密な用語 - EQまたはフレーズ一致 - MT) 適用するランキング・メソッドの指定された値。
- スコア変更: 一致するデータ・フィールドがアイテムの関連性スコアに与える影響(元のスコアを増やすか、時間の経過とともに減らします)。
使用可能なランキング・メソッドには、ブーストとピン・メソッドの2タイプがあります。 これらの方法では、アイテムの関連性スコアを増やすことができますが、減衰メソッドでは一定期間のスコアが減少します。
- アイテム1: (name: Ferrari, description: Ferrari)
- アイテム2: (name: Bugatti, description: Bugatti)
- 問合せ1:
q=type eq “Automotive” and (description eq “Ferrari” or name eq “Bugatti”) - 問合せ2:
q=type eq “Automotive”
- 問合せ1の結果: アイテム1 (Ferrari)が10に押し上げられ、アイテム2 (Bugatti)が固定されます
- 問合せ2の結果: アイテム1 (Ferrari)が10に押し上げられ、アイテム2 (Bugatti)が固定されます
カスタム・ランキング・ポリシーのライフサイクル
新しいランキング・ポリシーはドラフト・バージョンとして作成され、昇格できます。 ランキング・ポリシーのドラフト・バージョンを昇格すると、プロモートされたバージョンが作成されます。 コンテンツ管理者ロールを持つユーザーは、プロモートされたランキング・ポリシーをグローバル・デフォルトとして設定できます。 公開チャネルのマネージャは、プロモート済バージョンをチャネル・デフォルト・ポリシーとして割り当てることができます。 ローカリゼーション・ポリシーと同様に、チャネルには一度に1つのランキング・ポリシーのみを割り当てることができます。
コンテンツ配信のREST APIでランキング・ポリシーを使用可能にするには、公開済バージョンを作成するために公開する必要があります。 コンテンツ管理者は、ランキング・ポリシー・ページでランキング・ポリシーを公開できます。
| 使用可能なバージョン | 昇格 | チャネル・デフォルトとして設定 | グローバル・デフォルトとして設定 | パブリッシュ | 非公開 | 配信API |
|---|---|---|---|---|---|---|
| Draft | はい | いいえ | いいえ | いいえ | 該当なし | いいえ |
| 昇格済 | 該当なし | はい | はい | はい | 該当なし | いいえ |
| Published | 該当なし | はい | はい | 該当なし | はい | active |
ノート:
- ドラフト、昇格および公開されたバージョンには、ランキング・ポリシーを一意に識別するポリシー記述子が同じです。
- アクティブ・ステータスは、コンテンツ配信のREST APIの検索問合せに一致する結果が、ランキング・ポリシーで定義されたルールに基づいて関連性でランク付けされることを意味します(グローバル・デフォルトとして設定されている場合、チャネル・デフォルトとして割り当てられている場合、またはリクエストURLの
rankByパラメータで指定されている場合)。
サポートされているランキング・メソッド
Oracle Content Managementのカスタム・ランキング・ポリシーはランキング・メソッドのコレクションで、それぞれがアセット・タイプの標準またはユーザー定義のデータ・フィールドと一致するように定義され、一致するアイテムの関連スコアを増減します。 ランキング・ポリシーが適用されると、発行した検索問合せに一致するアイテムが、1つのメソッド、複数のメソッドまたはなしの一致ルールを満たすことができます。 アイテムがどのメソッドとも一致しなかった場合、その関連性スコアは、組込みのランキング・ポリシー(Elasticsearch)によって計算されたものと同じままになります。 アイテムが1つのメソッドに一致する場合、元のスコアには、このメソッドで設定されたパラメータ加重値が乗算されます。 アイテムが複数のランキング・メソッドに一致する場合、その関連性スコア=元のスコア* weight1 * weight2 * ...
カスタム・ランキング・ポリシーを定義するために、Oracle Content Managementでは現在次のランキング・メソッドがサポートされています:
| ランキング方法 | メソッド・パラメータ | データ・フィールド・タイプの互換性 | コメント |
|---|---|---|---|
| ブースト - 同等 |
アセット・タイプ - フィールド {1-n} 値 {1-m} weight |
テキスト、日付、数値 |
選択したデータ・フィールドに複数の値が設定されている場合、または式でブーストするアイテムを照合するために使用されます。 日付タイプの値は、指定された時間間隔内で照合されます。 |
| ブースト - フレーズ一致 |
アセット・タイプ - フィールド {1-n} 値 {1-m} weight |
テキスト |
選択したデータ・フィールドに複数の値が設定されている場合、または式でブーストするアイテムを照合するために使用されます。 フレーズ値は、フィールド・データのどこでも一致します。 たとえば、メソッドで設定された値がイタリアの場合、「イタリアは欧州の国」または「ローマはイタリアの首都」の両方のフレーズと一致します。 |
| ピン - 同等 |
アセット・タイプ - フィールド {1-n} 値 {1-m} |
テキスト、日付、数値 |
重みはサーバー制御の値で、固定されたアイテムが上部にバブルするように十分な大きさです。 選択したフィールドに複数の値が設定されている場合、ピン留め対象のアイテムを照合するために式でORが使用されます。 |
| ピン - フレーズ一致 |
アセット・タイプ - フィールド {1-n} 値 {1-m} |
テキスト |
重みはサーバー制御の値で、固定されたアイテムが上部にバブルするように十分な大きさです。 選択したフィールドに複数の値が設定されている場合、ピン留め対象のアイテムを照合するために式でORが使用されます。 |
| 減衰 - 日付 |
アセット・タイプ - フィールド {1-n} origin offset scale |
日付 |
Standardフィールド: publishedDateフィールドまたはユーザー定義フィールドのみ: 日付タイプの任意のフィールド。 メソッドは、アイテムの既存の関連性スコアを減らします。 |
| 減衰 - 数値 |
アセット・タイプ - フィールド(1-n) origin offset scale |
数値 |
ユーザー定義フィールド: 数値タイプの任意のフィールド。 メソッドは、アイテムの既存の関連性スコアを減らします。 |
ノート:
- 「入力された検索」では、検索問合せ式でアセット・タイプを明示的に指定する検索リクエストの場合、ブースト、ピンまたは減衰のランキング・メソッドは、アセット・タイプで「標準とユーザー定義の両方のデータ・フィールド」を使用して、関連性スコアの強化、固定または減少のアイテムに一致します。
- 「未入力またはデフォルト検索」では、検索問合せ式でアセット・タイプを指定しない検索リクエストの場合、ブースト、ピンまたは減衰のランキング・メソッドは、アセット・タイプで「標準データ・フィールドのみ」を使用して、関連性スコアの強化、固定または減少のアイテムに一致します。
- 複数の一致フィールド: ランキング・メソッドがアセット・タイプの複数のフィールドに一致するように構成されている場合、複数のフィールドまたはすべてのフィールドに一致するアイテムの関連性スコアは、メソッドに設定された重みの倍数になります。 たとえば、重み20のランキング・メソッドの2つのフィールドが一致した場合、アイテム・スコアは20 x 20 = 400になります。
ブースト- 同等メソッド
「ブースト - 同等」メソッドを使用すると、送信された検索リクエストに一致するアイテムの関連性スコアを増やすことができます。アイテムにメソッドで設定されたアセット・タイプがあり、そのフィールドがメソッドで設定された正確な値と一致している(フィールド値の照合にはEQオペレータが適用されます)。 アイテムの元の関連性スコアに、メソッドで定義された重みが乗算されます。
- アイテムは単一フィールドと一致: アイテム・スコア=オリジナル・スコア*重さ
- アイテムが複数のフィールドに一致: アイテム・スコア=オリジナル・スコア*重さ*重さ* ...
ノート:
アセットの日付タイプのフィールド値がブーストに設定された値と一致 - 値から値+オフセットまでの時間間隔内の等しいメソッド。PUT /content/management/api/v1.1/search/rankingPolicies/5A487437500042849B54FE3BA4EC80C2?q=(status%20eq%20%22draft%22)&fields=all
{
"name": "rp1",
"description": "",
"apiName": "rp1",
"entries": [
{
"key": {
"name": "myBoostEquals",
"methodType": "equal",
"weight": 10,
"values": [
{
"type": "text",
"entries": [
"cat"
]
},
{
"type": "numeric",
"entries": []
},
{
"type": "datetime",
"entries": [
{
"origin": "2022-05-10T00:00:00.000-07:00",
"originTimeZone": "America/Los_Angeles",
"offset": "10d"
}
]
}
],
"type": "boostMethod"
},
"value": [
{
"name": "name",
"contentType": "myType1",
"weightMultiplier": 2,
"type": "standardAssetField"
},
{
"name": "published date",
"contentType": "myType1",
"weightMultiplier": 1,
"type": "standardAssetField"
}
]
}
],
"policyId": "B025517B9D47454A9311EDD3D4D92BD6"
}ブースト - フレーズ一致メソッド
「ブースト - フレーズ一致」メソッドを使用すると、送信された検索リクエストに一致するアイテムの関連性スコアを上げることができます。アイテムにメソッドで設定されたアセット・タイプがあり、そのフィールドがメソッドで設定されたフレーズ値と一致している場合(フィールド値の照合にMT演算子が適用されます)。 アイテムの元の関連性スコアに、メソッドで定義された重みが乗算されます。
PUT /content/management/api/v1.1/search/rankingPolicies/5A487437500042849B54FE3BA4EC80C2?q=(status%20eq%20%22draft%22)&fields=all
{
"name": "rp1",
"description": "",
"apiName": "rp1",
"entries": [
{
"key": {
"name": "myBoostMethod1",
"methodType": "phraseMatch",
"weight": 10,
"values": [
{
"type": "text",
"entries": [
"cat"
]
}
],
"type": "boostMethod"
},
"value": [
{
"name": "name",
"contentType": "myType1",
"weightMultiplier": 2,
"type": "standardAssetField"
},
{
"weightMultiplier": 10,
"contentType": "myType1",
"name": "myField1",
"type": "customAssetField",
"id": "2332EA112CD140F7A4D6847451B1355F"
}
]
}
],
"policyId": "B025517B9D47454A9311EDD3D4D92BD6"
}ピン - 同等メソッド
「ピン - 同等」メソッドを使用すると、送信された検索リクエストに一致するアイテムに最上位の関連性を設定できます。ただし、そのアイテムにメソッドで設定されたアセット・タイプがあり、そのフィールドがメソッドで設定された正確な値と一致している場合(フィールド値の照合には、EQオペレータが適用されます)。
アイテムが「ピン - 同等」または「ピン - フレーズ一致」メソッドに定義されている複数のフィールドと一致する場合、その関連性スコアは次のように計算されます:
- アイテムは単一フィールドと一致: アイテム・スコア=オリジナル・スコア* 5000
- アイテムが複数のフィールドに一致: アイテム・スコア=オリジナル・スコア* 5000 * 5000 * ...
ノート:
アセットの日付タイプのフィールド値は、値から値+オフセットまでの時間間隔内の「ピン - 同等」メソッドの値セットに一致します。
PUT /content/management/api/v1.1/search/rankingPolicies/5A487437500042849B54FE3BA4EC80C2?q=(status%20eq%20%22draft%22)&fields=all
{
"name": "rp1",
"description": "",
"apiName": "rp1",
"entries": [
{
"key": {
"values": [
{
"type": "text"
},
{
"type": "numeric"
},
{
"type": "datetime",
"entries": [
{
"origin": "2022-05-10T00:00:00.000-07:00",
"originTimeZone": "America/Los_Angeles",
"offset": "12h"
}
]
}
],
"name": "myPinEquals1",
"type": "pinMethod",
"methodType": "equal"
},
"value": [
{
"contentType": "myType1",
"name": "name",
"type": "standardAssetField"
},
{
"contentType": "myType1",
"name": "published date",
"type": "standardAssetField"
}
]
}
],
"policyId": "B025517B9D47454A9311EDD3D4D92BD6"
}ピン - フレーズ一致メソッド
「ピン - フレーズ一致」メソッドでは、アイテムにメソッドで設定されたアセット・タイプがあり、そのフィールドがメソッドで設定されたフレーズ値と一致しているかぎり、送信済検索リクエストに一致するアイテムの最上位の関連性を設定できます(フィールド値の照合にはMT演算子が適用されます)。
PUT /content/management/api/v1.1/search/rankingPolicies/5A487437500042849B54FE3BA4EC80C2?q=(status%20eq%20%22draft%22)&fields=all
{
"name": "rp1",
"description": "",
"apiName": "rp1",
"entries": [
{
"key": {
"values": [
{
"type": "text",
"entries": [
"cat",
"black"
]
}
],
"name": "myPinPhraseMatch1",
"type": "pinMethod",
"methodType": "phraseMatch"
},
"value": [
{
"contentType": "myType1",
"name": "description",
"type": "standardAssetField"
},
{
"contentType": "myType1",
"name": "name",
"type": "standardAssetField"
},
{
"contentType": "myType1",
"name": "myfield1",
"type": "customAssetField",
"id": "8921A6FDFD1C4C2AB966DE0BA1FDFF3D"
}
]
}
],
"policyId": "B025517B9D47454A9311EDD3D4D92BD6"
}減衰 - 日付メソッド
「減衰 - 日付」メソッドでは、アイテムにメソッドで設定されたアセット・タイプがあるかぎり、送信済検索リクエストに一致するアイテムの関連性を減らすことができます。 このアイテムが基準日に持つ関連性スコアは、アセット・タイプで選択した日付フィールドの値が基準から離れるようになります。
現在の減衰 - 日付または衰退 - Oracle Content Managementの数値メソッドは、Elasticsearchでサポートされているガウス関数、指数関数または線形減衰関数をサポートしていません。 かわりに、Oracle Content Managementを使用してステップ・ダウン減衰関数を定義し、同様の効果を実現できます:
フィールド値の一致オリジン+/-オフセットを持つアイテムの計算された関連性スコアには、減衰メソッドで計算される重みが掛けられます。 一致するアイテムの関連性スコアは、ブースト・ランキング・メソッドによって増加できます。 スケール= 0の場合、フィールド値がオリジン+オフセットを上回る、またはオリジン-オフセットを下回る場合、重みが0に減ります。 それ以外の場合は、スケール値の期間中、減衰値の半分に減少し、0に減ります。
PUT /content/management/api/v1.1/search/rankingPolicies/5A487437500042849B54FE3BA4EC80C2?q=(status%20eq%20%22draft%22)&fields=all
{
"name": "rp1",
"description": "",
"apiName": "rp1",
"entries": [
{
"key": {
"name": "myDecayDate",
"type": "decayMethod",
"origin": "2022-05-10T00:00:00.000-07:00",
"originTimeZone": "America/Los_Angeles",
"offset": "6h",
"scale": "12h",
"decay": "0.1",
"methodType": "date"
},
"value": [
{
"contentType": "myType1",
"name": "published date",
"type": "standardAssetField"
}
]
}
],
"policyId": "B025517B9D47454A9311EDD3D4D92BD6"
}減衰 - 数値メソッド
「減衰 - 数値」メソッドでは、このアイテムにメソッドで設定されたアセット・タイプがあるかぎり、送信済検索リクエストに一致するアイテムの関連性を減らすことができます。 このアイテムが最初に持つ関連性スコアによって、アセット・タイプで選択した数値フィールドの値が元の値から除外されます。
「減衰 - 数値」メソッドは、「減衰 - 日付」メソッドと同じステップ・ダウン減衰関数を使用します
PUT /content/management/api/v1.1/search/rankingPolicies/5A487437500042849B54FE3BA4EC80C2?q=(status%20eq%20%22draft%22)&fields=all
{
"name": "rp1",
"description": "",
"apiName": "rp1",
"entries": [
{
"key": {
"name": "myDecayNumeric",
"type": "decayMethod",
"origin": "10",
"offset": "2",
"scale": "5",
"decay": "0.1",
"methodType": "numeric"
},
"value": [
{
"contentType": "myType1",
"name": "mynumberfield1",
"type": "customAssetField",
"id": "F0C4FA257D5B4C6C81656837D867B29E"
}
]
}
],
"policyId": "B025517B9D47454A9311EDD3D4D92BD6"
}