メインコンテンツまでスキップ

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 - コンテンツの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 の両方を検索
  • 数値: 文字列として検索
  • 表組(テーブル)
  • 地図: gmap_x, gmap_y, gmap_type, gmap_zoom を検索 (gmap_place_idは未確認)
  • ブロックエディタ: html, type, text, textAlign 等で検索
ヒント

target_col_for_keywordパラメータを使用して、特定のフィールドに検索を制限できます。

パラメータ

パラメータ説明デフォルト
topics_keywordstring検索するキーワード-
topics_keyword_condstring複数キーワードの条件:"AND"または"OR""AND"
target_col_for_keywordstring/array検索対象のカラム(例:"subject"、"contents", "ext_1")
※真偽値は設定できません
すべての検索可能なカラム
use_target_col_for_keyword_from_requestbooleanクエリでtarget_col_for_keywordの指定を許可false

多言語サポート

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

使用例

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

注意点

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

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

特徴

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

パラメータ

パラメータ説明デフォルト
full_text_searchstring検索するキーワード-
full_text_search_condstring複数キーワードの条件:"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に制限されています
  • 検索可能な文字列内の半角英字は自動的に小文字に変換されます
  • 実装の詳細については、キーワード検索用文字列を用意するを参照してください

Filter検索

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

特徴

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

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

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

標準フィールド:

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

拡張カラムタイプ:

  • テキスト
  • テキスト(オートコンプリート)
  • テキストエリア
  • 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_listsearch_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 "例"

注意点

関連ドキュメント


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。