行いたいこと
ダブルクォートを含んだ「aa">aa
」という文字列を検索する
サンプルクエリ
以下のように、2重でエスケープする必要があります。
理由としては、MySQLで解釈された後にgroongaへ渡されるという2回の処理が行われるためです。
動かない
"
のエスケープを\
で行いました。
SELECT COUNT(*) FROM test_table WHERE MATCH(body) AGAINST('+"aa\">aa"' IN BOOLEAN MODE);
動く
「\
」をもう一つ追加しました。
SELECT COUNT(*) FROM test_table WHERE MATCH(body) AGAINST('+"aa\\">aa"' IN BOOLEAN MODE);
補足
()~:+><-*
などの記号を検索する時は、上記例のように、ダブルクォートで囲いましょう。
参考記事
http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-April/001328.html http://sourceforge.jp/projects/groonga/lists/archive/dev/2011-January/000441.html
PlanetMySQL Voting: Vote UP / Vote DOWN