アセットの検索

概要

Frame.io の API は、アカウント全体のアセットの詳細なファセット検索をサポートしており、web アプリケーションの機能をミラーリングします。最も一般的で便利なフィルターはチーム、プロジェクト、およびステータスですが、フィルターと並べ替えを独自の方法で組み合わせて、非常に具体的な API 主導型セットを生成できます。一般に、account_idq(クエリ)、および sort を除くすべてのフィルターは、同じ構造に従い、以下で説明されています。

search-filters.png

リクエストされたページサイズと返されたページサイズが一致しない

2022年3月現在、検索 API のページング機能に影響を与える既知のバグがあります。このバグが解決されるまで、検索 API を使用して結果の複数ページ(例:100 を超えるアセット)を反復処理することはお勧めしません。リクエストされたページサイズが実際に返されたアセット数に対応していない可能性があるからです。

デフォルト

検索をトリガーする API リクエストは、常に同じです。

常に同じリクエストです

https://api.frame.io/v2/search/library への POST

明示的に指定しなかった場合、検索チューニングのデフォルト値は、次のとおりです。

属性デフォルト値説明
page_size101 ページあたり 10 個のアセットが返されます。
page1このクエリは、応答の最初のページを返します。
sortrelevance「relevance」は、特別にチューニングされた属性セットに基づいてアセットを並べ替えようとします。クエリがない場合、relevance は、アップロードの最新性に向けて大きく偏っています。

このガイドについて

このガイドでは、次の条件に一致する検索クエリを構築するプロセスについて説明します。

  • アカウント内のアセット
  • クエリ "moon" と一致
  • 特定のプロジェクトにある
  • 2020 年 4 月 1 日から 30 日までの間にアップロードされた
  • かつ、「承認済み」になった

検索の本文は、次のようになります。

1{
2 "account_id": "<account_id>",
3 "q": "moon",
4 "sort": "name",
5 "filter": {
6 "inserted_at": [
7 {
8 "op": "gte",
9 "value": "2020-04-01T04:00:00.000Z"
10 },
11 {
12 "op": "lte",
13 "value": "2020-04-30T03:59:59.999Z"
14 }
15 ],
16 "project_id": {
17 "op": "eq",
18 "value": "<project_id>"
19 },
20 "label": {
21 "op": "eq",
22 "value": "approved"
23 }
24 },
25 "page_size": 10,
26 "page": 1
27}

アカウント、クエリおよび並べ替え

アカウント(account_id)、クエリ(q)、および sort は 、検索クエリの filter 属性の外側に存在する最も基本的な 3 つの構成要素です。

アカウントコンテキスト

技術的には、検索を実行するのに必要な唯一の属性は account_id です。これにより、アカウント上のすべてのアセット(フォルダーを含む)が、デフォルトのページネーション値(1 ページから、ページあたり 10 アセット)で取り込まれます。

1{
2 "account_id": "<account_id>"
3}

検索クエリ

次に最も一般的な含めるべき属性は、クエリ自体です。メモ:Frame.io の API 検索は null クエリを受け入れるので、ワイルドカード(*)クエリは必要ありません。何かを検索するか、アカウント内のすべてのアセット(フィルタリングされている可能性がある)の種類をリクエストします。

ここでは、用語「moon」を検索します。

1{
2 "account_id": "<account_id>",
3 "q": "moon"
4}

並べ替え

sort.png

Frame.io は、様々な並べ替えオプションをサポートしています。並べ替え順序の構文は、オプションにわたって同様です。

  • デフォルトの並べ替え方向があります
  • その方向を逆にするには、並べ替え値に、マイナス - の接頭辞を付けます

例えば、アルファベットの逆の順序(Z から A)で並べ替えるには、"sort": "-name" を宣言します。

デフォルトの並べ替え操作は「関連性」です。したがって、これは宣言する必要はなく、sort 属性が指定されていない場合、宣言されたと見なされます。

並べ替えオプション属性デフォルトの方向
関連性該当なし該当なし
アップロード日inserted_at古い順
名前nameA から Z
サイズfilesize小さい順
アップロード者creator.nameA から Z

したがって、クエリを構築するときは、namesort で A から Z を追加できるようになりました。

1{
2 "account_id": "<account_id>",
3 "q": "moon",
4 "sort": "name"
5}

フィルターとページネーション

フィルターは、Frame.io のアセット検索で最も難しく、最も強力な機能です。フィルターは、1 個の filter オブジェクト内に書き込まれ、すべて同じパターンの演算(op)および value に従います。フィルターでは、次の一般的な略語が使用され、「等しい」以外の等価オプションは日付およびサイズクエリ用に予約されています。

  • eq —等しい
  • lt —より小さい
  • gt —より大きい
  • lte —より小さいか等しい
  • gte —以上
  • match —完全一致。アップロード者フィルターおよび Filetype フィルターにのみ使用されます

例えば、既知の project_id で一致する filter は、次のように構成します。

1{
2 "filter": {
3 "project_id": {
4 "op": "eq",
5 "value": "<project_id>"
6 }
7 }
8}

オプションと演算

次の表では、各フィルタータイプに関連するオプションおよび演算について説明します。

フィルターオプション属性サポートされている演算サポートされている値
アーカイブ済みarchivedeqtruefalse
アップロード日inserted_ateqltgtltegte<datetime>(ISO-8601、UTC)
削除済みdeletedeqtruefalse
ファイルタイプfiletypematch<MIME type>
プライベートprivateeqtruefalse
プロジェクトproject_ideq<project_id>
サイズfilesizeeqltgtltegtesize(バイト数)
ステータスlabeleqnonein_progressneeds_reviewapproved
チームteam_ideq<team_id>
タイプasset_typeeqaudiodocumentfolderimageotherstreamvideo
アップロード者creator.namematch<name>
インデックスを入力するには、アップロード者がアクティブなアカウントメンバーである必要があります

アカウントのメンバーではなくなったクリエイターの検索は機能しません。そのユーザーがユーザー検索インデックスに存在しないからです。

クエリの構築を続行するために、次のようなアセットのフィルターを追加できるようになりました。

  • 特定のプロジェクトにある
  • 2020 年 4 月 1 日から 30 日までの間にアップロード済み
  • 「承認済み」としてマーク済み
1{
2 "account_id": "<account_id>",
3 "q": "moon",
4 "sort": "name",
5 "filter": {
6 "inserted_at": [
7 {
8 "op": "gte",
9 "value": "2020-04-01T04:00:00.000Z"
10 },
11 {
12 "op": "lte",
13 "value": "2020-04-28T03:59:59.999Z"
14 }
15 ],
16 "project_id": {
17 "op": "eq",
18 "value": "<project_id>"
19 },
20 "label": {
21 "op": "eq",
22 "value": "approved"
23 }
24 }
25}
ページネーション

検索エンドポイントは、リクエスト本文の最も外側のレイヤーにある page_size 属性と page 属性を使用して、他のエンドポイントとまったく同じようにページネーションされます。ページネーションの詳細については、こちらの別ガイドを参照してください。