検索

ガイド 検索

検索

Box APIを使用すると、全文検索クエリを使用してBox内のコンテンツを見つけることができます。Box検索APIは、サポート対象のすべてのSDKとCLIで使用できます。

cURL
curl -i -X GET "https://api.box.com/2.0/search?query=sales" \
     -H "Authorization: Bearer <ACCESS_TOKEN>"
.NET
// Search for PDF or Word documents matching "Meeting Notes"
BoxCollection<BoxItem> results = await client.SearchManager
    .QueryAsync("Meeting Notes", fileExtensions: new { "pdf", "docx" });
Java
// Find the first 10 files matching "taxes"
long offsetValue = 0;
long limitValue = 10;
BoxSearch boxSearch = new BoxSearch(api);
BoxSearchParameters searchParams = new BoxSearchParameters();
searchParams.setQuery("taxes");
searchParams.setType("file");
PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams);
Python
items = client.search().query(query='TEST QUERY', limit=100, file_extensions=['pdf', 'doc'])
for item in items:
    print('The item ID is {0} and the item name is {1}'.format(item.id, item.name))
Node
// Search for PDF or Word documents matching "Mobile"
client.search.query(
	'Mobile',
	{
		fields: 'name,modified_at,size,extension,permissions,sync_state',
		file_extensions: 'pdf,doc',
		limit: 200,
		offset: 0
	})
	.then(results => {
		/* results -> {
			total_count: 1,
			entries: 
			[ { type: 'file',
				id: '11111',
				sequence_id: '1',
				etag: '1',
				sha1: 'f89d97c5eea0a68e2cec911s932eca34a52355d2',
				name: 'Box for Sales - Empowering Your Mobile Worker White paper 2pg (External).pdf',
				description: '',
				size: 408979,
				path_collection: 
					{ total_count: 2,
					entries: 
					[ { type: 'folder',
						id: '0',
						sequence_id: null,
						etag: null,
						name: 'All Files' },
						{ type: 'folder',
						id: '22222',
						sequence_id: '1',
						etag: '1',
						name: 'Marketing Active Work' } ] },
				created_at: '2014-05-17T12:59:45-07:00',
				modified_at: '2014-05-17T13:00:20-07:00',
				trashed_at: null,
				purged_at: null,
				content_created_at: '2014-05-17T12:58:58-07:00',
				content_modified_at: '2014-05-17T12:58:58-07:00',
				created_by: 
					{ type: 'user',
					id: '33333',
					name: 'Example User',
					login: 'user@example.com' },
				modified_by: 
					{ type: 'user',
					id: '33333',
					name: 'Example User',
					login: 'user@example.com' },
				owned_by: 
					{ type: 'user',
					id: '33333',
					name: 'Example User',
					login: 'user@example.com' },
				shared_link: null,
				parent: 
					{ type: 'folder',
					id: '22222',
					sequence_id: '1',
					etag: '1',
					name: 'Marketing Active Work' },
				item_status: 'active' } ],
			limit: 200,
			offset: 0 }
		*/
	});
iOS
client.search.query(query: "Quarterly Business Review") { results in
    switch results {
    case let .success(iterator):
        for i in 1 ... 10 {
            iterator.next { result in
                switch result {
                case let .success(item):
                    switch item {
                    case let .file(file):
                        print("- File \(file.name) (ID: \(file.id))")
                    case let .folder(folder):
                        print("- Folder \(file.name) (ID: \(file.id))")
                    case let .webLink(webLink):
                        print("- Web Link \(file.name) (ID: \(file.id))")
                    }
                case let .failure(error):
                    print(error)
                }
            }
        }
    case let .failure(error):
        print(error)
    }
}

検索APIで使用できる各種機能の詳細については、リファレンスドキュメントを参照してください。

クエリ演算子

検索APIは、ANDORNOT""など、いくつかの検索演算子をサポートします。これらの演算子を使用すると、より複雑な組み合わせの検索用語に一致する項目のみが返されるように検索結果を絞り込むことができます。

curl -i -X GET "https://api.box.com/2.0/search?query=box%20AND%20sales" \
     -H "Authorization: Bearer <ACCESS_TOKEN>"

論理演算子の使用の詳細を確認する

検索インデックス作成

Boxは、Boxに格納されているファイルまたはフォルダの検索インデックスを保持します。ファイルまたはフォルダが変更されるたびに、これらの単語がインデックスに追加されます。検索が実行されると、APIは、検索インデックスで、クエリに一致するファイルやフォルダを探します。Box内でコンテンツが追加、更新、または削除されると、それに応じて検索インデックスが更新されます。

Boxの検索インデックスの詳細を確認する

10分経過してもインデックスが更新されない場合もあります。このような場合は、Boxサポートに問い合わせて問題を解決することをお勧めします。

メタデータクエリとの比較

一見、検索クエリAPIはメタデータクエリAPIとよく似ていますが、動作には重要な違いがいくつかあります。大まかに言うと、メタデータクエリは正確さとスループットの向上のために最適化されているのに対し、通常の検索は、人間のユーザーとの関連性のために最適化されています。

メタデータクエリAPI検索API
インデックスの作成対象このAPIでは、検索対象のメタデータテンプレートの値に基づいてファイル/フォルダのみが返されます。このAPIでは、項目名、説明、コンテンツ (最初の10,000バイトまで) の値のほか、関連付けられたメタデータテンプレートインスタンスに基づいてファイル、フォルダ、およびウェブリンクが返されます。
インデックス作成時間このAPIでは、ファイルまたはフォルダのメタデータが追加、削除、更新されるとすぐに正確な結果が返されます。このAPIは、検索インデックスの作成が遅延すると、その影響を受けます。この遅延は通常10分ですが、場合によっては長くなることがあります。つまり、メタデータが更新されてから10分を経過しても項目が返されない場合があります。
一致このAPIでは、SQLの規則に基づいて完全一致が使用されます。結果は、指定した並べ替え順を基に返されます。このAPIでは、あいまい一致が使用されるため、文字列のトークン化、特殊文字の削除、およびその他の検索コンセプトに基づいて異なる結果が返される場合があります。結果の順序は、項目の関連性または更新日に基づいています。
条件付きロジックこのAPIは、比較演算子を使用するマルチパートブール式をサポートします。このAPIでは、メタデータによるクエリのサポートが限定的です。サポートされるのは、一度に1つのメタデータテンプレートに対するクエリのみで、単純なクエリ操作のみが可能です。
応答タイプこのAPIでは、一致したファイル/フォルダと、クエリによって一致した関連するメタデータの両方が返されます。このAPIで返されるのは、一致した項目のみです。各項目のメタデータを返すには、後続のAPI呼び出しが必要です。
スループットこのAPIには現在、ユーザーごとのレート制限のほか、会社あたりリクエスト数が10件/秒という制限があります。このAPIでは、1ユーザーあたり検索数は6件/秒、会社あたりの検索数は最大60件/分および12件/秒がサポートされています。
規模このAPIには、指定したメタデータテンプレートを使用して返される項目数に制限はありません。ただし、10,000個を超えるテンプレートインスタンスを含むクエリには、適切なインデックスを作成する必要があります。一致する結果が2,000件以下になるクエリのみを送信することをお勧めします。このAPIには、指定したメタデータテンプレートを使用して返される項目数に制限はありません。ただし、検索に一致する項目数が増えるにつれ、応答時間が大幅に増大します。このAPIでは、1つのクエリに対する結果は1,000万件までという制限があります。一致する結果が50,000件以下になるクエリのみを送信することをお勧めします。
スコープこのAPIは常に、ユーザーがアクセスできるコンテンツに制限されています。このAPIは、ユーザーがアクセスできるコンテンツ(​user_content​)または社内のすべてのコンテンツ(​enterprise_content​)のいずれかに制限される場合があります。

メタデータクエリAPIの詳細を確認する