Full-Text Search プラグイン

日本語対応の全文検索プラグインです。

説明

WordPress のサイト検索 (検索ページなどのワード検索) を、LIKE 検索から日本語全文検索 (MySQL + Ngram パーサーまたは Mroonga エンジン + TokenMecab パーサー) に置き換えます。これにより検索のパフォーマンスが大幅に向上します。

また、HTML タグを除いた純粋な文字列 (プレーンテキスト) で検索します。これにより HTML タグが検索されるようなことがなくなります。

検索用のデータ (インデックス) は、専用のテーブルに保存されます。既存のテーブル構造や投稿データ (posts テーブル) を書き換えることはありません。

PDF、Word (doc、docx)、Excel (xlsx) および PowerPoint (pptx) ファイルのテキストを検索します。

検索対象テキストを設定するフィールド (投稿は「full_text_search_search_text」カスタムフィールド、メディアは「検索テキスト」項目) を使用できます。

WordPress マルチサイトに対応しています。

外部サービスを一切使用していません。PDF ファイルなどを外部のサーバーへ送信することはありません。

使い方

プラグインを有効化するだけで、標準のワード検索が全文検索になります。設定画面で全文検索の無効化、検索ページのみ有効化などが設定できます。

全文検索メンテナンス (管理画面メニューより [設定]-[全文検索]-[メンテナンス] タブ) より、全文検索インデックスをメンテナンスすることができます。通常の運用では操作することはありません。データベースの投稿データを直接変更した場合に、投稿データとインデックスの不整合が起きた場合に操作します。

「full_text_search_search_text」カスタムフィールドの値 (テキスト) は検索対象となります。

全文検索設定

全文検索の設定を行います。

全文検索設定画面

設定項目

設定項目説明
全文検索全文検索の有効または無効を設定します。
「有効」はすべてのワード検索 (管理画面や WP_Query、get_posts() を含む) で全文検索が有効になります。「検索ページのみ有効」は検索ページのみで全文検索が有効になります。
暗黙のブール論理検索ワードの AND または OR を設定します。
添付ファイルの検索添付ファイルの検索の有効または無効を設定します。
自動テキスト抽出PDF および Word ファイルを追加時に自動でテキストを抽出するかどうかを設定します。

全文検索情報

データベース情報などが表示されます。

全文検索情報画面

表示項目

表示項目説明
データベースインデックスを作成しているデータベース (MySQL または MariaDB) を表示します。
データベースエンジンインデックスを作成しているデータベースエンジン (InnoDB または Mroonga) を表示します。
ngram_token_sizengram_token_size システム変数値を表示します。
※ InnoDB エンジンの場合のみ表示されます。

全文検索メンテナンス

全文検索のインデックスの再同期や再生成を行います。

全文検索メンテナンス画面

添付ファイルの詳細

検索対象のテキストを編集します。

添付ファイルの詳細画面

自動テキスト抽出を有効にしている場合、「検索テキスト」項目に抽出したテキストが格納されます。このテキストを変更した場合、インデックスの再生成で更新されることはありません。空の場合のみ再抽出されます。

インストール

  1. WordPress 管理画面->[プラグイン]->[新規追加] メニューより、[プラグインを追加] ページを開きます。
  2. 検索ボックスに、”Full-text Search” と入力し検索します。
  3. Full-text Search が見つかったら、[今すぐインストール] をクリックします。
  4. インストールが完了したら “プラグインを有効化” をクリックします。

データベース設定

InnoDB エンジンの場合、データベースの ngram_token_size システム変数の値を1に設定することをおすすめします。デフォルトとは2で、この場合1文字での検索は効きません。現在値は、設定画面で確認することができます。

動作環境

  • WordPress 4.9以上
  • PHP 7.0以上
  • MySQL 5.6以上または Mroonga エンジン

注意事項

  • Mroonga エンジンを強く推奨します。InnoDB エンジンはデータ量が多いとパフォーマンスが大幅に低下する場合があります。
  • Mroonga エンジンが利用可能な場合は、InnoDB エンジンよりも Mroonga エンジンを優先して使用します。
  • 投稿データを WordPress 経由ではなくデータベースを直に変更した場合は、再同期 (全文検索ツールより [再同期] ボタンを押下) する必要があります。投稿データの更新日を更新しないように書き換えた場合は、再生成 (全文検索ツールより [再生成] ボタンを押下) する必要があります。
  • サイトをデータベース (データベースエンジン) が異なる環境へ移行した場合は、移行先でプラグインを再有効化する必要があります。
  • 保護された PDF ファイルのテキスト自動抽出には対応していません。

カスタマイズ

全文検索は標準のワード検索を置き換えます。そのため基本的には標準の WordPress のカスタマイズが有効です。

検索ページにおける添付ファイルでの絞り込み検索

下記コードをテーマの functions.php に追加すると、 検索ページが添付ファイルのみにフィルターされます。

function search_filter( $query ) {
	if ( ! is_admin() && $query->is_main_query() ) {
		if ( $query->is_search ) {
			$query->set( 'post_type', 'attachment' );
		}
	}
}
add_action( 'pre_get_posts', 'search_filter' );

公式ディレクトリ

更新履歴

バージョン説明
1.0.0最初のリリース。
1.1.0WordPress マルチサイトにおける、アンインストールのバグを修正しました。
full_text_search_limit フィルターフックを追加しました。
1.2.0InnoDB の場合に、正しく検索されない不具合を修正しました。
1.3.0全文検索を有効化、無効化するオプションを追加しました。
1.4.0添付ファイルに対応しました。
1.4.1投稿タイプの exclude_from_search パラメーターに従うように変更しました。
1.6.0PDF ファイルの検索に対応しました。
1.6.2UI (用語など) を微調整しました。
1.6.3テキストが正しく翻訳されないバグを修正しました。
1.7.0メディア一覧に PDF のテキストの文字数を表示するようにしました。
PDF ファイルの読み込みに失敗した場合の処理を変更しました。
1.8.0メディアファイルに検索テキスト (PDF テキスト) 項目を追加しました。
全文検索用のカスタムフィールド(full_text_search_search_text)を追加しました。
1.8.2非公開投稿が検索できない場合がある不具合を修正しました。
PDF 自動生成したテキストを検索テキスト項目に表示するように変更しました。
1.9.0添付ファイルで PDF のみを検索するオプションを追加しました。
1.9.1PDF のみの検索が有効にならない不具合を修正しました。
2.0.0Word (doc、docx) ファイルの検索に対応しました。
2.1.0Excel および PowerPoint ファイルの検索 に対応しました。
2.2.0設定ページをリニューアルしました。
2.2.1翻訳テキストの漏れを修正しました。
2.2.3SQL を最適化しました。
2.2.4PDF Parser ライブラリを1.1.0に更新しました。
2.2.5空の検索結果画面の警告を修正しました。
2.2.6PDF Parser ライブラリを2.0.1に更新しました。
2.2.7添付ファイルのみの検索の不具合を修正しました。
2.2.8PDF Parser ライブラリを2.1.0に更新しました。
2.2.9PDF Parser ライブラリを2.2.0に更新しました。
2.2.10PDF Parser ライブラリを2.2.1に更新しました。