search_api_dbの警告
Drupalの管理画面には便利な機能がいくつか搭載されています。その中で良く見るのがレポート/admin/reports機能でサイトの状態や最近のログなどを見る事が出来ます。この最近のログを見ると以下の警告が出ています。
Since database search servers currently cannot index words of more than 50 characters, the word was truncated for indexing. If this should not be a single word, make sure the "Tokenizer" processor is enabled and configured correctly for index Content.
データベース検索サーバーは現在、50文字以上の単語をインデックス化できないため、インデックス化のために単語が切り捨てられました。これが単一単語であってはならない場合は、「Tokenizer」プロセッサが有効になっており、インデックス・コンテンツ用に正しく設定されていることを確認してください。
閲覧したすべてのWEBサイトのページにこの警告が出ています。。。
なんのエラーかを調べて見ると、search_apiの設定がされていないようです。そもそもsearch_apiが何故必要かの理由に、私が使用しているCivic Themeの検索にこのsearch_apiが使用されています。Civic Themeインストールの際、このsearch_apiがインストールされていませんとエラーが出た理由がこの時初めて理解出来ました。
そもそもこのsearch_apiとは何かが理解出来ていないので調べてみます。Drupalには標準でSerchモジュールという検索機能を実装しているのですが、機能を拡張するためにsearch_apiというモジュールが用意されています。標準の検索に比べて、設定や利用法の幅が広く色々な検索を利用できます。
今回の警告はこのsearch_apiの設定にある「Tokenizer」の設定がされていない為に出ている警告です。search_apiのDBにサイト内の記事などの情報をインデックス化(DBへの登録)する際、記事がそのままインデックス化されてしまう為出ている警告で、この「Tokenizer」は記事を単語にバラしてインデックス化する機能になっています。
search-apiの設定/admin/config/search/search-api
はデータベースとインデックスの設定をする必要があります。
- データベースのビュー
状態 enabled (disable)
Backend class データベース
Search indexes Content
データベース default > default
Minimum word length 3
Partial matching Match whole words only
Phrase indexing Bigram
Autocomplete suggestions Suggest word endings; Suggest additional words
- インデックスのビュー
状態 enabled (disable)
データソース コンテンツ (36/36 indexed)
トラッカー デフォルト
サーバー Database
サーバーのインデックス状況 サーバーではこのインデックス用に 36 個のアイテムがインデックスされています。(詳しい情報)
Cron batch size During cron runs, 50 items will be indexed per batch.
今回警告を解除することが目的なので
インデックスのプロセッサーの設定にある。
Tokenizer
Splits text into individual words for searching.
にチェックを入れます。
設定を保存します。
これで設定は完了しますのでログを確認します。ログの確認の際、WEBサイトのページをいくつか閲覧してみます。すべてページ閲覧のログが表示されます。
今回の警告は消えたのですが、別のメッセージが出ています。
メッセージ search_api_cron()の実行を開始、search_cron()の実行には61.82msかかりました。
Below is a list of indexes grouped by the server they are associated with. A server is the definition of the actual indexing, querying and storage engine (for example, an Apache Solr server, the database, …). An index defines the indexed content (for example, all content and all comments on "Article" posts).
The default Drupal core Search module is still enabled. If you are using Search API, you probably want to uninstall the Search module for performance reasons. For more information see the Search API handbook.
以下は、インデックスが関連付けられているサーバごとにグループ化されたインデックス一覧です。サーバとは、実際のインデックス作成、クエリ、保存エンジン(例えば、Apache Solrサーバ、データベースなど)の定義です。インデックスはインデックスされるコンテンツを定義します(例えば、「記事 」投稿のすべてのコンテンツとすべてのコメント)。
デフォルトのDrupalコアSearchモジュールは有効のままです。Search API を使用している場合、パフォーマンス上の理由から Search モジュールをアンインストールした方が良いでしょう。詳しくはSearch APIハンドブックを参照してください。
Search API を使用する場合DrupalコアSearchモジュールをアンインストールした方が良いとのメッセージが出ていたので、アンインストールします。
機能拡張のアンインストール /admin/modules/uninstallからSearchモジュールをアンインストールします。ログを確認すると、先ほどの警告が消えました。
Searchを使ってみる
今回、Search APIの設定をしてみたので、Search機能を使ってみます。本来Search APIのページの設定やViewsの設定を行うのですが、Civic ThemeがデフォルトでSearch機能を持っていますのでこれをそのまま使います。
一番簡単な使い方ですが、メニューに"Search"を追加してURLの設定を"/search"にします。これでSearch機能が使えるようになります。
実際に検索をかけると、機能は優秀でしっかりタイトルや記事から検索項目を拾い表示してくれます。検索自体はシングルワードで、ANDやORの機能はついていませんが、簡単なワードで該当するページを検索して表示してくれますので結構便利な機能になっています。
私の小規模なWEBサイトなので、サイト内検索は当面必要ないかなと考え、検索機能について深く考えていなかったのですが、記事が多くなってきた時に閲覧された方が記事を探すのに有効な機能ですので今後もう少し機能を調べ設定していけたらと考えています。
Drupalの記事
関連するDrupalでWEBサイトを構築する為の環境構築の記事やDrupalについて書いた記事になります。
記事は全てナンバリングしています。Drupalを初めて使う為の準備から始まる最初の記事から読む事もできます。
最新の記事
Drupalについて書いた最新の記事になります。
#D30 Civic Theme 1.9.0 UpDate
#D29 Drupal Core Update
Life Styleの記事
Drupalとは関係ないのですがLife Styleの記事も書いていますのでよろしければ購読ください。