[groonga-dev,03537] Re: Wondows 環境での同義語検索について

Back to archive index

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/




groonga-dev メーリングリストの案内
Back to archive index