> ## Documentation Index
> Fetch the complete documentation index at: https://developer.box.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 検索

export const Link = ({href, children, className, ...props}) => {
  const localizedHref = localizeLink(href);
  return <a href={localizedHref} className={className} {...props}>
      {children}
    </a>;
};

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

<CodeGroup>
  ```sh cURL theme={null}
  curl -i -X GET "https://api.box.com/2.0/search?query=sales" \
       -H "authorization: Bearer <ACCESS_TOKEN>"
  ```

  ```typescript Node/TypeScript v10 theme={null}
  await client.search.searchForContent({
    ancestorFolderIds: ['0'],
    mdfilters: [
      {
        filters: searchFilters,
        scope: 'enterprise' as MetadataFilterScopeField,
        templateKey: templateKey,
      } satisfies MetadataFilter,
    ],
  } satisfies SearchForContentQueryParams);
  ```

  ```python Python v10 theme={null}
  client.search.search_for_content(
      ancestor_folder_ids=["0"],
      mdfilters=[
          MetadataFilter(
              filters=search_filters,
              scope=MetadataFilterScopeField.ENTERPRISE,
              template_key=template_key,
          )
      ],
  )
  ```

  ```java Java v10 theme={null}
  client.getSearch().searchForContent(new SearchForContentQueryParams.Builder().ancestorFolderIds(Arrays.asList("0")).mdfilters(Arrays.asList(new MetadataFilter.Builder().scope(MetadataFilterScopeField.ENTERPRISE).templateKey(templateKey).filters(searchFilters).build())).build())
  ```

  ```java Java v5 theme={null}
  // 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 Python v4 theme={null}
  items = client.search().query(query='TEST QUERY', limit=100, file_extensions=['pdf', 'doc'])
  for item in items:
      print(f'The item ID is {item.id} and the item name is {item.name}')
  ```

  ```cs .NET v6 theme={null}
  // Search for PDF or Word documents matching "Meeting Notes"
  BoxCollection<BoxItem> results = await client.SearchManager
      .QueryAsync("Meeting Notes", fileExtensions: new { "pdf", "docx" });
  ```

  ```javascript Node v4 theme={null}
  // 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 }
  		*/
  	});
  ```
</CodeGroup>

<Note>
  検索APIで使用できる各種機能の詳細については、<Link href="/reference/get-search">リファレンスドキュメント</Link>を参照してください。
</Note>

## クエリ演算子

検索APIは、`AND`、`OR`、`NOT`、`""`など、いくつかの<Link href="/guides/search/query-operators">検索演算子</Link>をサポートします。これらの演算子を使用すると、より複雑な組み合わせの検索語句に一致する項目のみが返されるように検索結果を絞り込むことができます。

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

<Card href={localizeLink("/guides/search/query-operators")} arrow title="論理演算子の使用の詳細を確認する" />

## 検索インデックス作成

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

<Card href={localizeLink("/guides/search/indexing")} arrow title="Boxの検索インデックスの詳細を確認する" />

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

<Warning>
  ファイルコンテンツ検索が無効になっている企業 (たとえば、[KeySafe][keysafe]をご利用のお客様) の場合、ドキュメント内の文字を検索できません。ファイルコンテンツ検索が無効の状態でドキュメントを調べる必要がある場合は、アカウントチームまでお問い合わせください。
</Warning>

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

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

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

<Card href={localizeLink("/guides/metadata/queries/comparison")} arrow title="メタデータクエリAPIの詳細を確認する" />

[support]: /support

[keysafe]: https://www.box.com/security/keysafe
