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

Back to archive index

須藤裕嗣 sudo4****@gmail*****
2013年 4月 25日 (木) 18:03:18 JST


ご回答いただき、ありがとうございます。
エスケープをもう一つ増やしたら解決いたしました。


2013年4月25日 17:08 Kouhei Sutou <kou****@clear*****>:

> 須藤です。
>
> 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 mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
>



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