[groonga-dev,01328] Re: mroongaで記号のエスケープしていますがエラーになってしまいます

Back to archive index

Kouhei Sutou kou****@clear*****
2013年 4月 25日 (木) 17:08:01 JST


須藤です。

In <CAFO8****@mail*****>
  "[groonga-dev,01327] mroongaで記号のエスケープしていますがエラーになってしまいます" on Thu, 25 Apr 2013 16:55:19 +0900,
  須藤裕嗣 <sudo4****@gmail*****> wrote:

> mroongaの3.0.1を利用しています。
> 以下のSQLを流すとエラーになってしまうのですが、どのように対応すればいいのでしょうか
> 
> select [フィールド名] from [テーブル名] where MATCH(`message`) AGAINST('+"aa\">aa"' IN
> BOOLEAN MODE);
> 
> '+"aa\">aa"'
> ここの箇所なのですが、↓の場合はエラーになりません
> '+"aa\"aa"'

やりたいことは「aa">aa」という文字列を検索する、ということで
よいでしょうか?

もうひとつ「\」を増やして

  '+"aa\\">aa"'

とするとよいと思います。

たぶん、MySQLが「'...'」を解釈するときに「'...'」の中の「\」
を処理してしまっていて、groongaに渡るときには

  「'...\"...'」

が

  「'..."...'」

になっているのだと思います。なので、MySQLが解釈するときのた
めにもうひとつ「\」でエスケープして

  「'...\\"...'」

とすると、groongaに渡るときには

  「'...\"...'」

となり、最終的に

  「..."...」

と解釈されると思います。

-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)

groongaサポート:
  http://groonga.org/ja/support/
パッチ採用はじめました:
  http://www.clear-code.com/recruitment/
コミットへのコメントサービスはじめました:
  http://www.clear-code.com/services/commit-comment.html




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