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

アーカイブの一覧に戻る

HAYASHI Kentaro hayas****@clear*****
2015年 1月 21日 (水) 18:46:45 JST


林です。

二重引用をエスケープするには、\\"としてみてください。

元のデータを再現できているか怪しいですが、

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 メーリングリストの案内
アーカイブの一覧に戻る