Kouhei Sutou
kou****@clear*****
2015年 10月 1日 (木) 23:07:41 JST
須藤です。 In <20151****@syste*****> "[groonga-dev,03534] Wondows 環境での同義語検索について" on Thu, 1 Oct 2015 16:59:29 +0900, 石橋卓見 <ishib****@syste*****> wrote: > Mroongaには過去何度かお世話になっております。 > すばらしいソフトウェアを利用させていただき、ありがとうございます。 ありがとうございます! > 今回、mariadb-10.0.21-with-mroongaを使用してWindows環境にて > Mroongaによる同義語検索(queryexpandertsv)機能を使用したいと > 考えているのですが、動作報告などはございますでしょうか。 残念ながらありません。。。 試しにやってみたのですが、私の環境では.tsvを読み込むところで クラッシュしました。。。 http://packages.groonga.org/windows/groonga/ にあるGroongaのみのパッケージだと正常に動作したので、Mroonga 組み込みのGroongaだと動かないみたいです。 ビルドの仕方が違うのが原因かもしれません。 GroongaのみバージョンはMinGWを使ってクロスコンパイルで、 Mroonga組み込みのGroongaはVisual Studioでビルドしています。 ということで、すみませんが、Windows用のMroongaでは QueryExpanderTSVは使えないです。 使えたとしてもmroonga_commandで直接Groongaのselectを使わない といけないのが使いづらいんですよねぇ。 MariaDBに↓の機能(複数の列を返すUDFを使える機能)が実装され ればもっと使いやすい形で提供できるんですが。。。 https://mariadb.atlassian.net/browse/MDEV-5199 あ、mroonga_query_expand()というUDFを追加して、 SELECT * FROM xxx WHERE MATCH(aaa) AGAINST(mroonga_query_expand('QueryExpanderTSV', '+fine') IN BOOLEAN MODE); と書けるようにするとよい気がしてきました。これならGroongaの selectを使わずに済みます。 で、別案なんですが、カラム名を指定する同義語検索の使い方はど うでしょうか?ポイントはsynonymsテーブルで、主キーに展開対象 の語を指定し、別のカラムに展開後のクエリーを指定します。 --query_expander(--query_expansionは非推奨で代わり に--query_expanderを使うようになりました)で 「${テーブル名}.${カラム名}」と指定します。↓の例なら 「synonyms.query」です。 参考: http://groonga.org/ja/docs/reference/commands/select.html#select-query-expander -- CREATE TABLE synonyms ( word varchar(256) PRIMARY KEY, query text ) ENGINE=Mroonga DEFAULT CHARSET utf8; CREATE TABLE storage ( id INT PRIMARY KEY AUTO_INCREMENT, content VARCHAR(255), FULLTEXT INDEX (content) ) ENGINE = Mroonga DEFAULT CHARSET utf8; INSERT INTO synonyms (word, query) VALUES ("fine", "(rain OR wheather OR fine)"); INSERT INTO storage (content) VALUES ("It'll be fine tomorrow."); INSERT INTO storage (content) VALUES ("It'll rain tomorrow"); INSERT INTO storage (content) VALUES ("It's fine today, but It'll be rain tomorrow."); select mroonga_command('select --table storage --query content:@fine --query_expander synonyms.query'); -- ところで、だれか、Windows上でQueryExpanderTSVがクラッシュす る問題をデバッグしてくれる人はいないでしょうか。。。 Mroonga入りMariaDBをデバッグビルド(*)して石橋さんが示してくれた 手順をやって再現させて、デバッガで追えばわかる気がします。 (*) http://mroonga.org/ja/docs/install/windows.html#build-from-source-with-mariadb にあるソースを取得して https://mariadb.com/kb/en/mariadb/Building_MariaDB_on_Windows/ を読めばビルドできるはず。ビルドするときは「Debug builds」の 方法でビルドする。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/ パッチ採用 - プログラミングが楽しい人向けの採用プロセス: http://www.clear-code.com/recruitment/ コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ: http://www.clear-code.com/services/code-reader/