---
title: Kurocoのキーワード検索の種類
description: このドキュメントでは、Kurocoで利用可能な3種類のキーワード検索（topics_keyword、full_text_search、Filter検索）について、その特徴、仕様、利用パターンを説明します。
---

# Kurocoのキーワード検索の種類

Kurocoには3つの異なるタイプのキーワード検索機能があり、それぞれに特徴とユースケースがあります。このリファレンスでは、各タイプの特性、仕様、使用パターンについて説明します。

## 検索タイプの概要

| 検索タイプ | 説明 | ユースケース |
|:------------|:------------|:--------------|
| [topics_keyword](#topics_keyword) | 特別な設定不要で各項目を自動的に検索 | 基本的なキーワード検索の迅速な実装 |
| [full_text_search](#full_text_search) | テンプレートから生成された文字列を高パフォーマンスで検索 | カスタム検索コンテンツによる複数カラム検索 |
| [Filter検索](#filter検索) | 複雑な条件を持つフィルタークエリを使用 | 複数の条件と演算子を使用した高度な検索 |

## topics_keyword

`topics_keyword`検索は、コンテンツ内の各項目を自動的に検索します。

:::caution
この機能は一部のサイトではすでに使えなくなっているため、[Filter検索](#filter検索)のご利用をお勧めいたします。
:::

### 特徴

- コンテンツ内の各項目を自動的に検索
- スペースで区切られたキーワードはデフォルトでAND検索を実行
- パラメータでAND検索をOR検索に変更可能
- 英数字の大文字小文字は区別しない
- 検索するカラムを指定可能
- 最小限の設定で簡単に実装可能

### 検索可能な項目タイプ

`topics_keyword`は以下の項目タイプを自動的に検索します：

**標準フィールド：**
- `subject` - コンテンツのタイトル/件名フィールド
- `contents` - メインコンテンツのテキストフィールド
- `topics_id` - コンテンツID（キーワードが数字の場合）
- `slug` - コンテンツのSlug
- `contents_type` - コンテンツタイプ/カテゴリ(カテゴリ名で検索します。)

**拡張フィールド：**
- テキスト
- テキスト(オートコンプリート)
- テキストエリア
- WYSIWYG
- HTML
- 単一選択：key, label の両方を検索
- 複数選択可：key, label の両方を検索
- 日付フォーマット
- マスタ形式：key, label の両方を検索
- マスタ(チェックボックス)：key, label の両方を検索
- 関連情報選択：module_id, module_type を使用して検索
- 真偽値フィールド：true/false を文字列として検索
- 画像（KurocoFilesにアップロード）：desc を使用して検索
- ファイル（KurocoFilesにアップロード）：desc を使用して検索
- ファイル（ファイルマネージャーから）: ファイルパスを検索
- APIフィールド
- カウンター: 文字列として検索
- リンク:url, tilte の両方を検索
- 数値: 文字列として検索
- 表組(テーブル)
- 地図

:::tip
`target_col_for_keyword`パラメータを使用して、特定のフィールドに検索を制限してご利用ください。
:::

### パラメータ

| パラメータ | 型 | 説明 | デフォルト |
|:----------|:-----|:------------|:--------|
| topics_keyword | string | 検索するキーワード | - |
| topics_keyword_cond | string | 複数キーワードの条件："AND"または"OR" | "AND" |
| target_col_for_keyword | string/array | 検索対象のカラム（例："subject"、"contents", "ext_1"）| すべての検索可能なカラム |
| use_target_col_for_keyword_from_request | boolean | クエリでtarget_col_for_keywordの指定を許可 | false |

### 多言語サポート

- 副言語で検索するには、`_lang`パラメータを使用（例：`?_lang=en`）
- 検索は指定された言語で自動的に機能します

### 使用例

```
/rcms-api/1/content?topics_keyword=例&topics_keyword_cond=OR
```

### 注意点

- 実装は簡単ですが、複雑な条件はサポートしていません
- より高度な検索には、[Filter検索](#filter検索)の使用を検討してください

## full_text_search

`full_text_search`は、テンプレートを使用して検索可能なテキスト文字列を生成し、複数のカラムにわたる高性能な検索を提供します。

### 特徴

- テンプレートで生成された文字列を検索
- 複数カラム検索に対する高パフォーマンス
- スペースで区切られたキーワードはデフォルトでAND検索を実行
- パラメータでAND検索をOR検索に変更可能
- コンテンツ定義でのキーワードテンプレート設定が必要
- 関連コンテンツやメンバー情報を検索テキストに含めることが可能

### パラメータ

| パラメータ | 型 | 説明 | デフォルト |
|:----------|:-----|:------------|:--------|
| full_text_search | string | 検索するキーワード | - |
| full_text_search_cond | string | 複数キーワードの条件："AND"または"OR" | "AND" |

### 多言語サポート

- 副言語で検索するには、`_lang`パラメータを使用（例：`?_lang=en`）
- 検索は指定された言語で自動的に機能します

### テンプレート設定

full_text_searchを使用するには以下の設定が必要です。  

1. コンテンツ定義設定で「キーワード検索にテンプレートを利用する」を有効にする
2. Smarty構文を使用してテンプレートを設定する


### 使用例

```
/rcms-api/1/content?full_text_search=例&full_text_search_cond=AND
```

### 注意点

- 検索可能な文字列はコンテンツごとに100MBに制限されています
- 検索可能な文字列内の半角英字は自動的に小文字に変換されます
- 実装の詳細については、[キーワード検索用文字列を用意する](/ja/docs/tutorials/how-to-implement-cutom-body-search/)を参照してください

## Filter検索

Filter検索は、フィルタークエリ機能を使用して、様々な条件と演算子による複雑な検索を実行します。

### 特徴

- フィルタークエリで`contains`のオペレータを使用すると指定の項目に対して部分一致で検索が可能(キーワード検索)
- フィルタークエリで`search_keyword`パラメータを使用すると複数の項目に対する検索が可能
- 複数の演算子による複雑な検索条件をサポート
- AND/ORを使用して他のフィルター条件と組み合わせ可能
- 大文字小文字を区別する検索と区別しない検索オプションを提供
- 特定のカラムにわたって検索可能

### containsで検索可能なフィールド

Filter検索の`contains`, `icontains`, `ncontains`, `nicontains`で文字列の部分一致を元に検索可能なカラムには以下があります：

**標準フィールド：**
- `subject` - コンテンツのタイトル/件名フィールド
- `slug` - コンテンツのSlug
- `contents` - メインコンテンツのテキストフィールド

<!--
topics_id は動作しない
contents_type_nm は動作しない
contents_type_ext_col_XX も動作しない
contents_type_list は文字列の部分一致ではなく、指定のIDが配列に含まれるか否かなので除外
-->

**拡張フィールド：**
- テキスト
- テキスト(オートコンプリート)
- テキストエリア
- WYSIWYG
- HTML
- 単一選択：keyに対する検索
- 複数選択可：keyに対する検索
- 日付フォーマット
- マスタ形式：keyに対する検索
- マスタ(チェックボックス)：keyに対する検索
- 真偽値フィールド：true/false を文字列として検索
- 画像（KurocoFilesにアップロード）：desc を使用して検索
- ファイル（KurocoFilesにアップロード）：desc を使用して検索
- ファイル（ファイルマネージャーから）: ファイルパスを検索
- APIフィールド
- リンク:url, tilte の両方を検索
- 表組(テーブル)

<!--
以下は検索できない
- 関連情報選択
- カウンター
- 数値
- 地図はgmap_x, gmap_y, gmap_type, gmap_zoom を検索(gmap_place_idは未確認)するが、:D()の検索が想定されるので除外
-->

:::info
Filter検索の対象とする項目はエンドポイントの`filter_request_allow_list`パラメータで許可されている必要があります。
:::

### search_keywordによる複数項目検索

`search_keyword contains "KEYWORD"`の形式で指定すると、事前に指定した複数のコンテンツに対して contains による絞込みができます。  
項目は`filter_request_allow_list`に`search_keyword:[subject,ext_1]`のように指定します。

### 多言語サポート

- 副言語で検索するには、`filter_lang`パラメータを使用（例：`?filter_lang=en`）
- フィルター検索では、検索対象とする言語(`filter_lang`)とレスポンスの言語(`_lang`)を別に設定できます

### 使用例

特定の項目に対するキーワード検索：
```
?filter=ext_1 contains "例"
```

複数の項目を指定したキーワード検索：
```
?filter=ext_1 contains "例" OR ext_2 contains "例2"
```

大文字小文字を区別しない検索：
```
?filter=ext_1 icontains "例"
```

Not検索：
```
?filter=ext_1 ncontains "除外ワード"
```

他の条件との組み合わせ：
```
?filter=ext_1 contains "例" AND inst_ymdhi > "2023-01-01"
```

search_keywordによる複数項目検索
```
// 事前にエンドポイントに filter_request_allow_list keyword:[subject,ext_1] を設定
?filter=search_keyword contains "例"
```

### 注意点

- 繰り返しフィールドの場合、検索は項目全体に適用されます
- 一部のサイトでは`search_keyword`ではなく`keyword`での検索となります。
- Filter検索はキーワード以外の検索にも利用可能です。詳細は以下を参照してください。
  - [検索機能を実装する](/ja/docs/tutorials/implement-a-search-function/)
  - [Filter検索のパラメータ](/ja/docs/reference/filter-query/)
  - [関連しているデータを条件にしたfilter機能](/ja/docs/reference/r-filter/)

## 関連ドキュメント

- [検索機能を実装する](/ja/docs/tutorials/implement-a-search-function/)
- [Filter検索のパラメータ](/ja/docs/reference/filter-query/)
- [関連しているデータを条件にしたfilter機能](/ja/docs/reference/r-filter/)
- [キーワード検索用文字列を用意する](/ja/docs/tutorials/how-to-implement-cutom-body-search/)
- [Kuroco管理画面の検索機能について](/ja/docs/reference/search-function-on-kuroco-admin-panel/)
