Kurocoのキーワード検索の種類
Kurocoには3つの異なるタイプのキーワード検索機能があり、それぞれに特徴とユースケースがあります。このリファレンスでは、各タイプの特性、仕様、使用パターンについて説明します。
検索タイプの概要
検索タイプ | 説明 | ユースケース |
---|---|---|
topics_keyword | 特別な設定不要で各項目を自動的に検索 | 基本的なキーワード検索の迅速な実装 |
full_text_search | テンプレートから生成された文字列を高パフォーマンスで検索 | カスタム検索コンテンツによる複数カラム検索 |
Filter検索 | 複雑な条件を持つフィルタークエリを使用 | 複数の条件と演算子を使用した高度な検索 |
topics_keyword
topics_keyword
検索は、コンテンツ内の各項目を自動的に検索します。
特徴
- コンテンツ内の各項目を自動的に検索
- スペースで区切られたキーワードはデフォルトでAND検索を実行
- パラメータでAND検索をOR検索に変更可能
- 英数字の大文字小文字は区別しない(4月正式版から)
- 検索するカラムを指定可能
- 最小限の設定で簡単に実装可能
検索可能な項目タイプ
topics_keyword
は以下の項目タイプを自動的に検索します:
標準フィールド:
subject
- コンテンツのタイトル/件名フィールドcontents
- メインコンテンツのテキストフィールドtopics_id
- コンテンツID(キーワードが数字の場合)slug
- コンテンツのSlugcontents_type
- コンテンツタイプ/カテゴリ(カテゴリ名で検索します。)
拡張カラムタイプ:
- テキスト
- テキスト(オートコンプリート)
- テキストエリア
- WYSIWYG
- HTML
- 単一選択:key, label の両方を検索
- 複数選択可:key, label の両方を検索
- 日付フォーマット
- マスタ形式:key, label の両方を検索
- マスタ(チェックボックス):key, label の両方を検索
- 関連情報選択:module_id, module_type を使用して検索
- 真偽値フィールド:true/false を文字列として検索
- 画像(KurocoFilesにアップロード):desc を使用して検索
- ファイル(KurocoFilesにアップロード):desc を使用して検索
- ファイル(ファイルマネージャーから): ファイルパスを検索
- APIフィールド
- カウンター: 文字列として検索
- リンク:url, tilte の両方を検索
- 数値: 文字列として検索
- 表組(テーブル)
- 地図: gmap_x, gmap_y, gmap_type, gmap_zoom を検索 (gmap_place_idは未確認)
- ブロックエディタ: html, type, text, textAlign 等で検索
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検索の使用を検討してください
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を使用するには以下の設定が必要です。
- コンテンツ定義設定で「キーワード検索にテンプレートを利用する」を有効にする
- Smarty構文を使用してテンプレートを設定する
使用例
/rcms-api/1/content?full_text_search=例&full_text_search_cond=AND
注意点
- 検索可能な文字列はコンテンツごとに100MBに制限されています
- 検索可能な文字列内の半角英字は自動的に小文字に変換されます
- 実装の詳細については、キーワード検索用文字列を用意するを参照してください
Filter検索
Filter検索は、フィルタークエリ機能を使用して、様々な条件と演算子による複雑な検索を実行します。
特徴
- フィルタークエリで
contains
のオペレータを使用すると指定の項目に対して部分一致で検索が可能(キーワード検索) - フィルタークエリで
search_keyword
パラメータを使用すると複数の項目に対する検索が可能 - 複数の演算子による複雑な検索条件をサポート
- AND/ORを使用して他のフィルター条件と組み合わせ可能
- 大文字小文字を区別する検索と区別しない検索オプションを提供
- 特定のカラムにわたって検索可能
containsで検索可能なフィールド
Filter検索のcontains
, icontains
, ncontains
, nicontains
で文字列の部分一致を元に検索可能なカラムには以下があります:
標準フィールド:
subject
- コンテンツのタイトル/件名フィールドslug
- コンテンツのSlugcontents
- メインコンテンツのテキストフィールド
拡張カラムタイプ:
- テキスト
- テキスト(オートコンプリート)
- テキストエリア
- 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は未確認)
- ブロックエディタ: html, type, text, textAlign 等で検索
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 "例"
注意点
- 繰り返しフィールドの場合、検索は項目全体に適用されます
- Filter検索はキーワード以外の検索にも利用可能です。詳細は以下を参照してください。
関連ドキュメント
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。