スポンサードリンク


WordPressに辞書検索機能を拡張する裏技を公開!Igoの形態解析でキーワードを品詞分解する!

    WordPressには標準でサイト内検索ができる機能がありますよね。

    テンプレートフォルダ内のsearch.phpとsearchform.phpを使えば
    簡単に実装することができると思います。

    検索キーワードを詳細に設定する場合、
    AND条件OR条件を考慮し、最適な検索方法を検討すると思います。

    主にfunctions.php内を編集し、作りこまないといけないですよね。

    意外と検索ロジックを作成するだけで大変だったりします。

    WoodPress 辞書検索

    そこで、WordPressで辞書ツールなど利用し、高度な検索機能を実装できないか調べましたが、
    プラグインどころか全く情報がありませんでした。

    そこで、PHPに対応した辞書プラグインを独自に組み込み、強力な検索機能を実装しました。

     

    WordPressに辞書検索アルゴリズムを実装する

    意外とありそうでなかったWordPressの辞書検索機能

    今回私が利用した辞書ツールは「Igo」というものです。

     

    Igoって何?

    IgoとはJavaで開発された形態素解析エンジンのことです。


    例えば、以下の文字列があった場合、

    Igoを利用することで、

    という具合に形態素解析によって品詞分解することができます。


    JavaはJVMという閉鎖空間で動作するため、他の言語やアプリとの連携時の安定性がいまいち。

    特に形態素解析を行う際、Java製のものを利用するケースが多く
    この「Igo」も選択肢のひとつです。

    IgoはJava言語に主に利用される辞書ライブラリです。

    また、IgoはJavaのjarファイル1個で動作するという利便性があります。

     

    IgoをPHPで利用する方法

    IgoはJava専用の辞書ツールですが、php用に変換することもできます。
    igo-phpという便利なものがあり、phpで利用できるファイルに構築が可能です。

    主に必要なものは、以下の通りです。

    Igoをphp専用に変換する作業がやや面倒なので、慎重に行なって下さい。

    次のページから実装をしていきます。

     

    Igoをphp形式に変換する方法!

    WordPressに辞書検索機能を実装する前に、Igoをphp専用に変換します。

    変換にはJava Development Kit(JDK)と呼ばれるJavaプログラムが必要なので、
    インストールされていない方は、こちらからインストールお願いします。

     

    igo-phpでMeCab辞書を利用する

    igo-phpには辞書ファイルが付属されていないので、辞書機能を使用するにはMeCabという辞書を利用します。
    こちらから辞書ファイルをダウンロードします。

    ダウンロードしたら、ファイルを解凍します。

    Cドライブ直下にigoというフォルダを作成し、その中に解凍したファイルを移動させます。

     

    Igoをコンソールからphp形式に変換する

    次にIgo本体プログラムを利用し、コンソール上でphp専用ファイルに変換します。
    Igo本体をこちら(現時点ではigo-0.4.5.jar)からをダウンロードします。

    jarファイルのみをダウンロードして下さいね。

    ダウンロードが完了したら、先ほど作成したCドライブ直下のigoフォルダに移動させます。

    コマンドプロンプトを実行し、以下のコマンドを実行して下さい。

    このコマンドを実行することで、phpファイルへの変換が開始されます。
    しばらく時間がかかるので気長に待ちましょう。

    尚、javaコマンドを利用するには「JDK」が必要です。
    コマンドが利用できない場合は「JDK」のインストールができていないか、その設定に不備があると思います。

     

    スポンサードリンク

     

    WordPressに辞書検索機能を実装する

    phpへの変換が完了すると、Cドライブ直下のigoフォルダ内に、
    「ipadic」というフォルダが出来上がっていると思います。

    このフォルダが辞書ツール本体になります。

     

    ipadicとigo-phpをWordPress内に配置する

    それではipadicを運用しているWordPressサイトのディレクトリにコピーします。

    移動させる場所ですが、「wp-content」フォルダがあるフォルダ階層に配置させます。

    WordPressのルートディレクトリで大丈夫だと思います。

     

    次にigo-phpをこちらからダウンロードしましょう。
    ダウンロードが完了したら、ファイルを解凍します。

    その中に入っているlibフォルダをまるごと、WordPressで利用しているテーマの
    ディレクトリに移動させましょう。

    上記のようなパスに配置します。

     

    サイト内検索に辞書検索機能を付与する

    次にfunctuions.phpに以下を追記して下さい。

    上記を追記することで辞書検索機能を付加できます。

    仕組み的には、1つ目のソースは、
    検索フォームでスペース区切りでキーワード検索時に、OR条件を有効化するものです。

    2つ目のソースは、
    igo-phpを実行し、検索キーワードを単語ごとに品詞分解します。
    品詞分解された単語は配列で返ってきます。
    最後にスペース区切りで1つの文字として連結させてあげて、
    その文字列を検索ワードとして設定するプログラムです。

     

    igoが正常に動作しない時は

    fopenエラーが出る場合は、ソースコードの以下の部分を調整して下さい。

    getcwd() . “/ipadic”の部分は辞書ツールが配置されているフォルダパスになります。
    WordPressサイトの環境によっては、読み込みがうまくできない場合があるので、
    環境に合わせて、パスの記述を変更するか、辞書ツールの配置を変えるか対応して下さい。

    あとはプラグインで「WP Multibyte Patch」を有効してないなと、正しく動作しない場合があります。

     

    プログラム使用上の注意

    この記事の手順で実装したプログラムで万一不具合が発生するなどの問題が
    起きてもサイト運営者はその責任を負わないこととします。

    すべて自己責任でご利用下さい。

      The following two tabs change content below.
      よっき プロフィール画像
      パソコンが大好きな青年。職業はプログラマ/SE。 フリーランスとしてウェブサイトの構築・保守の業務に従事。専門学校とパソコンスクールで講師も担当。幼少期からパソコンが大好きで、趣味がそのまま仕事に転じた。自作PCの魅力に惹かれたのは学生時代の頃。自作PC専門ブログで、お得な情報を紹介しています。

      スポンサードリンク


      コメントを残す




      CAPTCHA


      このページの先頭へ