この度スタジオ・ウミでは Drupal 7 用の日本語検索モジュール「 MeCab Search 」を作成し公開いたしました。
そのコードが現在公式の Drupal.org 上でサンドボックスとして公開されています。 ぜひ多くの方に使っていただきたいモジュールですので、今後標準的なレビュー手続きを経てコントリビュートモジュール化していきたいと考えています。
今回はこのモジュールの紹介をさせていただきます。
ちなみに、英語ではありますがこのモジュールのサンドボックスのページやモジュールの README ファイルに簡易的な説明を書いてありますので、サッと把握したい方はそちらをご覧いただくのが早いかもしれません。
モジュールの README ファイルを見るには、 git が入っていれば以下のコマンドでモジュールをダウンロードしてみてください。 ダウンロードされたディレクトリの中をのぞくと README が入っているのがご確認いただけるかと思います。
$ git clone --branch 7.x-1.x http://git.drupal.org/sandbox/gh640/2240267.git mecabsearch
$ cd mecabsearch
今回こちらでは日本語での説明をさせていただきます。 まずは概要的な部分から。
MeCab Search モジュールとは
MeCab Search モジュールは Drupal 7 用に作られたカスタムモジュールです。 Drupal 7 のプロジェクトであれば、後述の必要条件さえ満たせば特に利用手続きなどは必要とせずどのようなプロジェクトでもご利用いただくことができます。
機能的には、 Drupal のデフォルトの検索機能に「 MeCab 」という日本語形態素解析のロジックをはさみこむものです。 このモジュールを使うことで検索のインデクシング処理が日本語にふさわしい形で行われるようになるため、 Drupal のデフォルトの検索精度( Search モジュールの機能)が大幅に向上します。
ちなみに、「形態素解析」というのは「文章を名詞や動詞などの品詞(形態素)に分解する文章解析」のことです。 ふだんその方面の仕事をしていなければあまり耳馴染みのないことばですが、日本語の文章を計算機上で効果的に処理するうえでは欠かせない技術となっているようです。 詳しくは Wikipedia の形態素解析のページをご覧ください。
MeCab Search モジュール作成の目的
上述のとおり、 MeCab Search は Drupal デフォルトの検索機能の精度向上を目的としています。
背景には、 Drupal デフォルトの検索機能の品質の問題があります。 Drupal デフォルトの検索機能でも日本語の文章を検索することはできるにはできるのですが、これはあくまでも英語の文章解析用のものがベースとなっている感じで、精度や容量上のパフォーマンスがいまひとつでした。
検索用データを作るときに「テキストを数文字ずつに区切ったものを使う」というシンプルなロジックが使われているため
- 検索用のデータが肥大化する
- 検索精度がいまいち
という問題が発生しやすい状況でした。
データの肥大化を防ぎながら同時に検索精度も実用レベルのものにするためには何らかの形態素解析のロジックを取り込む必要がある、ということで今回 MeCab を使わせていただきました。 その他のオプションと比較して、品質はもちろん、導入の手間やコストの点でも魅力が高かったため MeCab を採用いたしました。
お世話になった方々
MeCab Search を作成する上でさまざまな方にお世話になりました。
このモジュールは言ってしまえば「 MeCab を Drupal の検索モジュールにつなげているだけ」なので、特に、このモジュールの有用性は形態素解析エンジン MeCab と、 MeCab を PHP から利用できるライブラリ php-mecab に負うところが大きいです。 以下、 MeCab と php-mecab の作者の方です。
- 工藤拓氏 オープンソースの日本語形態素解析エンジン MaCab (和布蕪)の作者の方
- rsky氏 MeCab を PHP から使えるライブラリの作者の方
引き続き、モジュールの利用方法の解説をしていきます。 長くなってきますので、別の投稿に分けさせていただきます。
募集しています
スタジオ・ウミは「Drupal」に特化したサービスを提供する Drupal のエキスパートチーム。
フルリモート&フレックス制だから、働く場所を選ばず時間の使い方も自由です。
そんなワークライフバランスの整った環境で、当ブログに書かれているような
様々な技術を共に学びながら、Drupalサイト開発に携わってみたい方を募集しています。
まずはお話だけでも大歓迎!ぜひお気軽にご連絡ください。