Kouhei Sutou
kou****@clear*****
2011年 10月 21日 (金) 18:36:50 JST
須藤です。 In <CAJckGybqbs1XA=dzLhzBGro1mtDO9HeD5Ds7m7nk_3WsRO****@mail*****> "[groonga-dev,00576] groongaストレージエンジン利用時にクライアントごとで異なる結果が返ってくる" on Fri, 21 Oct 2011 16:01:07 +0900, 西山はじめ <hajim****@gmail*****> wrote: > 以下の環境でJDBC経由で利用し、 > BOOLEAN MODEでクエリを発行すると、クライアントごとで違う結果が帰ってくる場合があります。 たしかにそれはおかしいですね。。。 > Indexの更新にdelete→Insertをしています。 updateではなくdelete->insertということですね。 > 具体的には、次のようなSQLの発行しています。 > select * from testtable where match(freeword) against ('+ソニー' in boolean mode); > > この場合、あるクライアントでは「ソニー」が入っているデータが取得でき、別のクライアントでは取得出来なかったりします。 > 取得できないクライアントでは、ずっと取得できない状態が続きます。 > > reset query cache を流してもなおらなかったりします。 > Indexは作成されていると思いますのでどのクライアントからでも同じ結果が返るようにしたいのですが・・・ > > また、調べる際にはどこを見れば良いのか教えていただけないでしょうか。 まずは以下の2つのログを取得してもらってもよいでしょうか? MySQLのクエリログ: ↓にある方法でMySQLのクエリログが取得できるはずです。 http://dev.mysql.com/doc/refman/5.1/ja/query-log.html groongaのログ: ↓のSQLを実行するとgroongaのログレベルがあがります。 set global groonga_log_level=DUMP; ログのパスは${DATA_DIR}/groonga.logにあるはずです。 あとは、問題が再現するDDLとSQLをもらえるとこちらでも試せるの で助かります。 できる範囲でよいので情報を提供してもらえると助かります! -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)