Craft CMS の検索インデックスを更新する

Craft CMS の管理画面で提供されている検索機能は、テンプレートや GraphQL、独自プラグインからも利用できるようになっています。

Searching | Craft CMS Documentation | 3.x
https://craftcms.com/docs/3.x/searching.html

フィールド単位でキーワード検索の対象にするかどうかを選択できるのですが、設定手順によってうまく検索結果に反映されないことがあります。

そこで、備忘録を兼ねて Craft CMS の検索インデックスをアップデートする方法についてまとめます。
これは Craft CMS Advent Calendar 2021 25日目の記事です。

フィールドを検索対象にするには

検索対象にしたいフィールドの編集画面に移動し、このフィールドの値を検索キーワードとして使用する チェックボックスを ON にします。

フィールド編集画面

検索対象になっているフィールドは、一覧に虫眼鏡アイコンが表示されます。

フィールド一覧のアイコン表示

この状態でセクションやユーザーなど目的のフィールドレイアウトに配置し、データを入力しておけば検索できます。

エントリ編集画面

検索でヒットしないときは

エントリ一覧画面

設定が完了しているにも関わらず、検索にヒットしないことがあります。

検索結果:ヒットなし

その場合、次のいずれかのケースに該当すると思われます。

  • 既にデータが登録されているフィールドの このフィールドの値を検索キーワードとして使用する を ON にした
  • FeedMe で「Import strategy」ブロックの Update search indexes が OFF のフィードを実行した

Craft CMS の検索機能は searchindex テーブルに保存されたテキストから探すため、データを再保存して検索インデックスを更新しておく必要があります。

エントリの検索インデックスを更新する

検索インデックスの更新は、コマンドラインから行います。

./craft resave/entries --section=member --update-search-index=1

サンプルでは、ハンドル名 member のセクションに登録されたエントリを再保存し、検索インデックスを更新します。

検索結果:検索インデックス更新後

処理が完了すると、検索でヒットするようになりました。

対象とするエレメントによって設定可能なオプションが異なるため、公式ドキュメントも確認してみてください。

Console Commands > resave
https://craftcms.com/docs/3.x/console-commands.html#resave

最後に

このページ内のキャプチャー画像に含まれる氏名、ふりがな、ローマ字表記は、User Local さんが提供されている「個人情報テストデータジェネレーター」から取得したダミーデータです。

個人情報テストデータジェネレーター
https://testdata.userlocal.jp/

万一、同姓同名の方がいらっしゃる場合でも、特定の個人とは一切の関係がありませんのであらかじめご了承ください。