Tritonnとは - qwik.jp/tritonn
Tritonnとは - qwik.jp/tritonnLogin
Contents
なぜTritonnが必要なの?どんな機能が不足しているのかどんな実装上の高速化が必要なのか?Tritonnを使うとMySQLはどう変わるの?連絡先

Tritonnとは

TritonnはMySQLから全文検索エンジンSennaを利用可能にするための改造を行うプロジェクトです。 以前はMySQLに当てるパッチを開発するプロジェクトでしたが、現在は1歩進めてMySQLの改造版ソースを開発するプロジェクトとして活動しています。

なぜTritonnが必要なの?

簡単に言うと以下の2点からTritonnプロジェクトが必要と考えています。MySQLには日本語データに対する全文検索を行うための十分な機能が実装されていません。MySQLでは全文検索を行うための実装面での十分な高速化が行われていません。

どんな機能が不足しているのか

現在、MySQLには日本語環境で使用するための十分な全文検索機能が実装されていません。 例えば英語の場合、以下のように全文検索をすることができますが、、、[test] > SET NAMES utf8; Query OK, 0 rows affected (0.00 sec) [test] > CREATE TABLE t1 (c1 TEXT, FULLTEXT INDEX idx (c1)) ENGINE = MyISAM DEFAULT CHARSET utf8; Query OK, 0 rows affected (0.00 sec) [test] > INSERT INTO t1 VALUES ("I have a pen."), ("May I Help You?"), ("Have a nice day."); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 [test] > SELECT * FROM t1 WHERE MATCH(c1) AGAINST("nice"); +------------------+ | c1 | +------------------+ | Have a nice day. | +------------------+ 1 row in set (0.00 sec) 日本語の場合、結果が0件になってしまいます。[test] > drop table t1; Query OK, 0 rows affected (0.00 sec) [test] > CREATE TABLE t1 (c1 TEXT, FULLTEXT INDEX idx (c1)) ENGINE = MyISAM DEFAULT CHARSET utf8; Query OK, 0 rows affected (0.00 sec) [test] > INSERT INTO t1 VALUES("私はペンを持っています。"), ("いらっしゃいませ〜"), ("良い一日を。"); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 [test] > SELECT * FROM t1 WHERE MATCH(c1) AGAINST("良い"); Empty set (0.00 sec) なぜこのようなことが起きるかというと、これはMySQLのFULLTEXTインデックスのキーワード抽出を行うパーサが「半角スペースで区切られているものをキーワードとして認識する」という実装になっているためです。欧米の言語は通常、単語と単語の間は半角スペースで区切られていますので十分機能しますが、日本語の場合はそうではないためキーワードの抽出を行えません。 例えば、「私はペンを持っています。」を例にすると、あらかじめ「私 は ペン を 持って いま す 。」のように半角スペースで区切っておけば(分かち書きと言います)現在のMySQLでも日本語全文検索を行うことができます。しかしMySQLに入力するデータをあらかじめ分かち書きするのは、その分処理が増えるのでできれば避けたいですし、オリジナルのデータと別に分かち書きしたデータを用意しなければならないのは効率が良くありません。 こうした問題があることから、FULLTEXTインデックスを使った全文検索ではなく、LIKE演算子を使った部分
Next Page
Full Browser

ja.abc-yoga.podzone.org | Contact