[groonga-dev,03071] Re: FULLTEXT検索のときに、二重引用をリテラル文字として検索できない

Back to archive index

m-dob****@rozet***** m-dob****@rozet*****
2015年 1月 22日 (木) 18:20:56 JST


林さん


ドブリンです。


> 二重引用をエスケープするには、\\"としてみてください。
それで解決しました。ありがとうございます!


ドブリン




HAYASHI Kentaro <hayas****@clear*****>さん:
> 
> 林です。
> 
> 二重引用をエスケープするには、\\"としてみてください。
> 
> 元のデータを再現できているか怪しいですが、
> 
> mysql> select * from MY_TABLE;
> +----+--------------------------------+
> | id | EN_TEXT                        |
> +----+--------------------------------+
> |  1 | from " redial/dial on phone    |
> |  2 | from  two-sided studio         |
> |  3 | >From  perspective of industry |
> +----+--------------------------------+
> 3 rows in set (0.00 sec)
> 
> mysql> select count(1) as counts from MY_TABLE where match (EN_TEXT) 
against('\\"' in boolean mode);
> +--------+
> | counts |
> +--------+
> |      1 |
> +--------+
> 1 row in set (0.00 sec)
> 
> こんな感じに検索できます。
> 
> エスケープについては、「mroongaで特殊記号を用いた全文検索を行うときの
エスケープ方法」というブログ記事があるので、
> 参考になるかもしれません。
>   http://y-ken.hatenablog.com/entry/mroonga-query-escape-string
> 
> どうしてそうするの?という点については普段意識することのない MySQL <-> 
Mroonga <-> Groongaというレイヤの違いが
> あってというあたりが次の記事に書いてあります。
> 
>   mroongaで記号類を含むクエリのシンタックスエラーを回避する方法
>   http://qiita.com/groonga/items/0ae7f637525c7b5f2cb1
> 
> ざっくりいうと途中でクエリのエスケープの解釈がはいるので、Groongaに意
図したクエリを渡すためには
> \"でなく\\"としないといけませんよ、ということなんです。
> 
> 
> On Wed, 21 Jan 2015 17:41:50 +0900
> m-dob****@rozet***** wrote:
> 
> > ドブリンです。
> > 
> > 
> > FULLTEXT検索を使うときに、二重引用をリテラル文字として検索できないよ
うで
> > す。↓のmysql文を使うときに、
> > 
> > 
> > select count(1) as counts from MY_TABLE where match (EN_TEXT) 
against('"
> > "from " redial/dial""' in boolean mode)
> > 
> > この文章しかヒットしないはずなのに、
> > 
> > from " redial/dial on phone
> > 
> > ↓の文章もヒットしています。
> > 
> > 
> > from  two-sided studio
> > >From  perspective of industry
> > 
> > 
> > テーブルの定義が下記の通りです。
> > 
> > CREATE TABLE `MY_TABLE` (
> >   `id` int(11) NOT NULL AUTO_INCREMENT,
> >   `EN_TEXT` text NOT NULL,
> >    PRIMARY KEY (`id`),
> >    FULLTEXT KEY `key` (`EN_TEXT`)
> > ) ENGINE=mroonga DEFAULT CHARSET=utf8;
> > 
> > 
> > 二重引用をエスケープする方法がありますか?
> > 
> > 
> > よろしくお願いします。
> > ドブリン
> > 
> > _______________________________________________
> > groonga-dev mailing list
> > groon****@lists*****
> > http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
> 
> 
> -- 
> HAYASHI Kentaro <hayas****@clear*****>




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