# 内容検索

| 要件 | 値 |
|----|----|
| ログインの有無 | True |
| エンドポイント | /v1/search |
| メソッド | GET |

## 概要

参照したいファイルやデータの本文全体を対象に、指定したキーワードを検索できる機能、優先度は低め

### 最大検索可能文字数

255文字まで

#### 検索対象文字

検索クエリで入力される文字は、以下のカテゴリに分類される

#### 日本語文字

* ひらがな(あ～ん)
* カタカナ(ア～ン)
* 漢字(CJK Unified Ideographs)

#### 英数字

* A-Z/a-z
* 0-9(全角・半角)

#### 記号

* 一般記号：_ . / @ # & % ? !
* かっこ類：() \[\] {} <>
* 句読点：、 。 ， ．

### 無効文字

以下の文字は検索クエリとして扱わない

* 制御文字(U+0000～U+001F)
* 不可視文字(ゼロ幅スペース)
* 一部の特殊記号(検索エンジンが無視するもの)←具体的なのはないので無視しておｋ

## 必要なデータ

| キー | 値の種類 | 必須 | 説明 |
|------|---------|------|------|
| type | String | True | ベクトル検索=vector / ファイル名=filename / アカウント名=account / OCR=ocr / 内容=content |
| keyword | String | True | 検索キーワード（最大255文字）|

## フロント→バックに必要なデータ

| キー | 値の種類 |
|----|----|
| title | String |

## バック→フロントに必要なデータ

| キー | 値の種類 |
|----|----|
| match_keyword | string |

## 実装要件
- ファイル本文のテキスト抽出・インデックス化
- PostgreSQL 全文検索（tsvector/tsquery）または外部検索エンジン
- 必要コンポーネント: PostgreSQL（FTS）またはElasticsearch等
