All posts by Yoshiaki Yamasaki

InnoDB 全文検索 : MeCab Parser

(この記事は InnoDB Full-Text: MeCab ParserYoshiaki Yamasaki が翻訳したものです)

このブログ記事で紹介した一般的なCJK(中国語、日本語、韓国語)のサポートに加えて、私達はMeCabパーサーも追加しました。MeCabは日本語の形態素解析エンジンで、私達は今MeCabをベースにした全文検索プラグインパーサーを持っています!

使用方法

  1. mecab_rc_fileオプションを設定する — mecab_rc_fileはMeCabパーサーに関連する読み取り専用のシステム変数です。mecab_rc_fileが指すmecabrcファイルはMeCabが必要とする設定ファイルです。そして、MeCabに辞書をどこからロードすればいいかを伝えるために、 dicdir=/path/to/ipadicというエントリが必要です。MySQLがインストールされると、デフォルトでバンドルされているmecabrcファイルは /path/to/mysql/install/lib/mecab/etc/mecabrcにあります。また、ipadic_euc-jp, ipadic_sjis, ipadic_utf-8という3つの辞書が /path/to/mysql/install/lib/mecab/dicディレクトリにあります。私たちはこれら3つの内から使用したい辞書を1つ指定するために、mecabrcファイルを修正する必要があります。
    注意:あなたが独自の辞書を持っている場合は、代わりにその辞書を使用できます。mecabrcファイル内で指定できる多くの追加オプションも有ります。設定ファイルの詳細に関しては、こちらのマニュアルを参照して下さい。ここではテスト目的で、以下の手順でipadic_utf-8をロードしてみましょう。(以下の例では、MySQL 5.7.7は/usr/local/mysqlにインストールされています)

InnoDB 全文検索 : N-gram Parser

(この記事は InnoDB Full-Text : N-gram ParserYoshiaki Yamasaki が翻訳したものです)

デフォルトのInnoDB全文検索パーサー(構文解析プログラム)は、空白がトークン(語句)もしくは単語の区切りとなっているラテン語ベースの言語に対して理想的です。しかし、個々の単語の区切り文字が存在せず、それぞれの単語は複数の文字で構成できる中国語・日本語・韓国語(CJK)のような言語には向いていません。そこで、私たちは異なった方法で単語/トークンを識別する方法を必要とします。
私は今MySQL 5.7.6で、CJKで使用できるn-gramパーサーを提供するために、新しいプラガブル全文検索パーサーをサポートすることをとても嬉しく思っています!

N-gramとは?

全文検索において、n-gramとは与えられた文字列中のn文字の連続した文字列です。例えば、n-gramで”abcd”という文字列をトークナイズすると以下のようになります。

どのようにしてN-gramパーサーをInnoDBで使うか?

新しいn-gramパーサーはデフォルトで有効になっているため、関連するDDL文にWITH PARSER句を追加するだけで使用できます。例えば、以下のDDL文はMySQL 5.7.6