Quantcast
Channel: Planet MySQL
Viewing all articles
Browse latest Browse all 1081

mroongaで特殊記号を用いた検索を行うときのエスケープ方法

$
0
0

行いたいこと

ダブルクォートを含んだ「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

Viewing all articles
Browse latest Browse all 1081

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>