日本時間5月16日のContent Cloud Summitで、カスタムアプリにBox AI APIを活用する方法を紹介します。

詳細を表示

検索結果に対するフィルタ

ガイド 検索 検索結果に対するフィルタ

検索結果に対するフィルタ

GET /search APIでは、APIによって返された結果にフィルタをかけるためのさまざまな方法がサポートされています。

コンテンツタイプによるフィルタ

デフォルトでは、名前、説明、ファイルコンテンツ、タグ、またはコメントが指定されたクエリと一致する項目が返されます。content_typesパラメータを設定すると、定義したコンテンツタイプのクエリに一致する項目のみに検索を絞り込むことができます。

cURL
curl -i -X GET "https://api.box.com/2.0/search?query=sales&content_types=name,tags" \
     -H "Authorization: Bearer <ACCESS_TOKEN>"
Java
long offsetValue = 0;
long limitValue = 10;

BoxSearch boxSearch = new BoxSearch(api);
BoxSearchParameters searchParams = new BoxSearchParameters();
searchParams.setQuery("sales");

final List<String> contentTypes = new ArrayList<String>();
contentTypes.add("name");
contentTypes.add("tags");
searchParams.setContentTypes(contentTypes)

PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams);
.NET
var contentTypes = new List<string>();
contentTypes.Add("name");
contentTypes.Add("tags");

BoxCollection<BoxItem> results = await client.SearchManager
    .QueryAsync("sales", contentTypes: contentTypes);
Python
client.search().query("sales", content_types=["name", "tags"])
Node
client.search.query(
  'sales',
  {
    content_types:  [
      "name",
      "tags"
    ]
  })
  .then(results => {
    // ...
  });
コンテンツタイプ
namenameフィールドで定義されている、項目の名前。
descriptiondescriptionフィールドで定義されている、項目の説明。
file_contentファイルの実際のコンテンツ。
commentsファイルまたはフォルダに対するコメントのコンテンツ。
tagstagsフィールドで定義されている、項目に適用されるタグ。

日付によるフィルタ

デフォルトでは、指定した日付に作成されたファイルと指定した日付に更新されたファイルが返されます。ファイルまたはフォルダが最後に更新された日付でも、ファイルまたはフォルダが作成された日付でも結果にフィルタをかけることができます。

cURL
curl -i -X GET "https://api.box.com/2.0/search?query=sales&created_at_range=2014-05-15T13:35:01Z,2015-05-15T13:35:01&updated_at_range=2014-05-15T13:35:01," \
     -H "Authorization: Bearer <ACCESS_TOKEN>"
Java
long offsetValue = 0;
long limitValue = 10;

BoxSearch boxSearch = new BoxSearch(api);
BoxSearchParameters searchParams = new BoxSearchParameters();
searchParams.setQuery("sales");

String createdFromDateString = "2014-05-15T13:35:01Z";
String createdToDateString = "2015-05-15T13:35:01Z";
Date createdFromDate = sdf.parse(createdFromDateString);
Date createdToDate = sdf.parse(createdToDateString);
DateRange createdRange = new DateRange(createdFromDate, createdToDate);
searchParams.setCreatedRange(createdRange)

String updatedFromDateString = "2014-05-15T13:35:01Z";
Date updatedFromDate = sdf.parse(updatedFromDateString);
DateRange updatedRange = new DateRange(updatedFromDate, null);
searchParams.setUpdatedRange(updatedRange)

PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams);
.NET
var createdAtRangeFromDate = new DateTime(1988, 11, 18, 9, 30, 0, DateTimeKind.Utc);
var createdAtRangeToDate = new DateTime(2018, 11, 18, 9, 30, 0, DateTimeKind.Utc);
var updatedAtRangeFromDate = new DateTime(1988, 11, 18, 9, 30, 0, DateTimeKind.Utc);

BoxCollection<BoxItem> results = await client.SearchManager
    .QueryAsync("sales", contentTypes: contentTypes, createdAtRangeFromDate: createdAtRangeFromDate, createdAtRangeToDate: createdAtRangeToDate, updatedAtRangeFromDate: updatedAtRangeFromDate);
Python
client.search().query("sales", created_at_range=["2014-05-15T13:35:01Z", "2015-05-15T13:35:01Z"], updated_at_range=["2014-05-15T13:35:01Z", null])
Node
client.search.query(
  'sales',
  {
    created_at_range: "2014-05-15T13:35:01Z,2015-05-15T13:35:01Z",
    updated_at_range: "2014-05-15T13:35:01Z,"
  })
  .then(results => {
    // ...
  });
クエリパラメータ
created_at_range結果を返すcreated_atの日付の範囲を定義します。上限または下限を空にすると、範囲を期限なしにすることができます。
updated_at_range結果を返すupdated_atの日付の範囲を定義します。上限または下限を空にすると、範囲を期限なしにすることができます。

ファイル拡張子によるフィルタ

デフォルトでは、さまざまな種類のファイル拡張子の項目が返されます。file_extensionsクエリパラメータを使用すると、指定した1つ以上のファイル拡張子のファイルのみが返されるよう、検索結果にフィルタをかけることができます。

cURL
curl -i -X GET "https://api.box.com/2.0/search?query=sales&file_extensions=pdf,txt" \
     -H "Authorization: Bearer <ACCESS_TOKEN>"
Java
long offsetValue = 0;
long limitValue = 10;

BoxSearch boxSearch = new BoxSearch(api);
BoxSearchParameters searchParams = new BoxSearchParameters();
searchParams.setQuery("sales");

final List<String> fileExtensions = new ArrayList<String>();
fileExtensions.add("pdf");
fileExtensions.add("txt");
searchParams.setFileExtensions(fileExtensions)

PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams);
.NET
var fileExtensions = new List<string>();
fileExtensions.Add("pdf");
fileExtensions.Add("txt");

BoxCollection<BoxItem> results = await client.SearchManager
    .QueryAsync("sales", fileExtensions: fileExtensions);
Python
client.search().query("sales", file_extensions=["pdf", "txt"])
Node
client.search.query(
  'sales',
  {
    file_extensions:  [
      "pdf",
      "txt"
    ]
  })
  .then(results => {
    // ...
  });

ファイルサイズによるフィルタ

デフォルトでは、さまざまなファイルサイズの項目が返されます。size_rangeクエリパラメータを使用すると、指定したファイルサイズを超えないファイルのみが返されるよう、検索結果にフィルタをかけることができます。

cURL
curl -i -X GET "https://api.box.com/2.0/search?query=sales&size_range=10000,20000" \
     -H "Authorization: Bearer <ACCESS_TOKEN>"
Java
long offsetValue = 0;
long limitValue = 10;

BoxSearch boxSearch = new BoxSearch(api);
BoxSearchParameters searchParams = new BoxSearchParameters();
searchParams.setQuery("sales");

SizeRange sizeRange = new SizeRange(10000, 20000);
searchParams.setSizeRange(sizeRange);

PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams);
.NET
BoxCollection<BoxItem> results = await client.SearchManager
    .QueryAsync("sales", sizeRangeLowerBoundBytes: 10000, sizeRangeUpperBoundBytes: 20000);
Python
client.search().query("sales", size_range=[10000,20000])
Node
client.search.query(
  'sales',
  {
    size_range: '10000,20000'
  })
  .then(results => {
    // ...
  });

ファイルタイプによるフィルタ

デフォルトでは、ファイル、フォルダ、およびウェブリンクがすべて返されます。結果をそのうちの1つだけに絞り込むには、typeクエリパラメータをfilefolderweb_linkのいずれかに設定します。

cURL
curl -i -X GET "https://api.box.com/2.0/search?query=sales&type=file" \
     -H "Authorization: Bearer <ACCESS_TOKEN>"
Java
long offsetValue = 0;
long limitValue = 10;

BoxSearch boxSearch = new BoxSearch(api);
BoxSearchParameters searchParams = new BoxSearchParameters();
searchParams.setQuery("sales");
searchParams.setType("file");

PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams);
.NET
BoxCollection<BoxItem> results = await client.SearchManager
    .QueryAsync("sales", type: "file");
Python
client.search().query("sales", type="file")
Node
client.search.query(
  'sales',
  {
    type: "file"
  })
  .then(results => {
    // ...
  });

メタデータによるフィルタ

関連付けられたメタデータを使用して検索結果にフィルタをかけることも、メタデータのみに基づいてすべての検索を実行することもできます。どちらの場合もmdfiltersクエリパラメータを使用します。

メタデータフィルタの詳細を確認する

所有者によるフィルタ

デフォルトでは、項目の所有者に関係なく、認証済みユーザーがアクセスできるすべての項目が返されます。特定のユーザーが所有する項目のみに絞り込むには、owner_user_idsクエリパラメータを使用します。

cURL
curl -i -X GET "https://api.box.com/2.0/search?query=sales&owner_user_ids=34446362,462281242" \
     -H "Authorization: Bearer <ACCESS_TOKEN>"
Java
long offsetValue = 0;
long limitValue = 10;

BoxSearch boxSearch = new BoxSearch(api);
BoxSearchParameters searchParams = new BoxSearchParameters();
searchParams.setQuery("sales");

final List<String> userIds = new ArrayList<String>();
userIds.add("34446362");
userIds.add("462281242");
searchParams.setOwnerUserIds(userIds)

PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams);
.NET
var userIds = new List<string>();
userIds.Add("34446362");
userIds.Add("462281242");

BoxCollection<BoxItem> results = await client.SearchManager
    .QueryAsync("sales", ownerUserIds: userIds);
Python
client.search().query("sales", owner_user_ids=["34446362", "462281242"])
Node
client.search.query(
  'sales',
  {
    owner_user_ids: "34446362,462281242"
  })
  .then(results => {
    // ...
  });

親フォルダによるフィルタ

デフォルトでは、ユーザーがアクセスできる任意のフォルダ内のすべての項目が返されます。特定のフォルダ内の項目のみに結果を絞り込むには、ancestor_folder_idsクエリパラメータを使用します。

cURL
curl -i -X GET "https://api.box.com/2.0/search?query=sales&ancestor_folder_ids=45235463,73445321" \
     -H "Authorization: Bearer <ACCESS_TOKEN>"
Java
long offsetValue = 0;
long limitValue = 10;

BoxSearch boxSearch = new BoxSearch(api);
BoxSearchParameters searchParams = new BoxSearchParameters();
searchParams.setQuery("sales");

final List<String> folderIds = new ArrayList<String>();
folderIds.add("45235463");
folderIds.add("73445321");
searchParams.setAncestorFolderIds(folderIds)

PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams);
.NET
var folderIds = new List<string>();
folderIds.Add("45235463");
folderIds.Add("73445321");

BoxCollection<BoxItem> results = await client.SearchManager
    .QueryAsync("sales", ancestorFolderIds: folderIds);
Python
client.search().query("sales", ancestor_folder_ids=["45235463", "73445321"])
Node
client.search.query(
  'sales',
  {
    ancestor_folder_ids: "45235463,73445321"
  })
  .then(results => {
    // ...
  });