<html><body><div style="color:; background-color:; font-family:MS PGothic, sans-serif;font-size:12pt"><div>須藤 様</div><div><br></div><div>お世話になっております。</div><div>佐瀬です。</div><div><br></div><div>下記、ご回答有難う御座いました。</div><div><br></div><div>知識不足で恥ずかしい限りですが、</div><div>理解はさせて頂きました。</div><div>誠に有難う御座います。</div><div><br></div><div>以上、宜しくお願い致します。<br></div><div><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; margin-top: 5px; padding-left: 5px;"> <div style="font-family: MS PGothic, sans-serif; font-size: 12pt;"> <div style="font-family: MS PGothic, sans-serif; font-size: 12pt;"> <div dir="ltr"> <font size="2" face="Arial"> ----- Original Message -----<br> <b><span
style="font-weight:bold;">From:</span></b> Kouhei Sutou <kou****@clear*****><br> <b><span style="font-weight: bold;">To:</span></b> groon****@lists***** <br> <b><span style="font-weight: bold;">Date:</span></b> 2015/12/18, Fri 00:15<br> <b><span style="font-weight: bold;">Subject:</span></b> [groonga-dev,03786] Re: エスケープ文字に関して<br> </font> </div> <br>須藤です。<br><br>In <<a ymailto="mailto:55734****@web30*****" href="mailto:55734****@web30*****" target="_self">55734****@web30*****</a>><br> "[groonga-dev,03777] Re: エスケープ文字に関して" on Thu, 17 Dec 2015 10:07:19 +0900 (JST),<br> <a ymailto="mailto:takah****@yahoo*****" href="mailto:takah****@yahoo*****" target="_self">takah****@yahoo*****</a>
wrote:<br><br>>> すみません、具体的なINSERTとSELECTとその結果を見せてもらえま<br>>> せんか?<br><br>提供ありがとうございます。<br><br>> select mroonga_command('select --table mail --output_columns No,Subject,ToAdd,FromAdd,Cc,Bcc,Date,AttachedFile --query \' Subject:@\\\\\\\\ \' --limit 1 --cache no');<br>> <br>> '[[[1],[["No","Float"],["Subject","ShortText"],["ToAdd","ShortText"],["FromAdd","ShortText"],["Cc","ShortText"],["Bcc","ShortText"],["Date","Time"],["AttachedFile","Int8"]],[1.0,"\\","","","","",0.0,0]]]'<br>> <br>> \ひとつしか入力していないのに「"\\"」重複して結果が取得出来ます。<br><br>これはJSONでは「\」は「\\」とエスケープして出力する必要があ<br>るからです。↑の文字列をJSONとしてパースすると「\」になりま<br>す。<br><br>> select mroonga_command('select --table mail --output_columns
No,Subject,ToAdd,FromAdd,Cc,Bcc,Date,AttachedFile --query \' Subject:@"\" \' --limit 1 --cache no');<br>> <br>> '[[[0],[["No","Float"],["Subject","ShortText"],["ToAdd","ShortText"],["FromAdd","ShortText"],["Cc","ShortText"],["Bcc","ShortText"],["Date","Time"],["AttachedFile","Int8"]]]]'<br>> <br>> "\"は何も取得出来ない。<br><br> \' Subject:@"\" \'<br><br>はMySQLが解釈するときに<br><br> ' Subject:@"" '<br><br>になります。つまり、空文字列にマッチするかという条件になりま<br>す。<br><br>しかし、Groongaは空文字列をインデックスを使って検索すること<br>はできないのでヒットするレコードはありません。<br><br>> select mroonga_command('select --table mail --output_columns No,Subject,ToAdd,FromAdd,Cc,Bcc,Date,AttachedFile --query \' Subject:@"(" \' --limit 1 --cache no');<br>> <br>>
'[[[1],[["No","Float"],["Subject","ShortText"],["ToAdd","ShortText"],["FromAdd","ShortText"],["Cc","ShortText"],["Bcc","ShortText"],["Date","Time"],["AttachedFile","Int8"]],[2.0,"(","","","","",0.0,0]]]'<br>> <br>> "("は取得出来る。<br><br> \' Subject:@"(" \'<br><br>はMySQLが解釈するときに<br><br> ' Subject:@"(" '<br><br>と解釈します。<br><br> "("<br><br>はGroongaが解釈して「(」を検索ワードとして扱います。よってヒッ<br>トします。<br><br>> このあたりの仕様の差がわからずエスケープを使用する文字に関してエスケープの場合とダブルコーテーションの<br>> パターンでどういった形が仕様なのかご教示頂ければ幸いで御座います。<br><br>ここの「エスケープの場合とダブルコーテーションのパターン」と<br>いうのは<br><br> <a
href="http://groonga.org/ja/docs/reference/grn_expr/query_syntax.html#escape" target="_blank">http://groonga.org/ja/docs/reference/grn_expr/query_syntax.html#escape</a><br><br>の<br><br> \ (バックスラッシュ)以外はエスケープする代わりにクォートすることもできます。<br><br>のことを言っているんですよね?<br><br>プログラムでエスケープする場合は「バックスラッシュでエスケー<br>プ」すればよいです。ダブルコーテーションを使う必要はありませ<br>ん。<br><br>たとえば<br><br> \' Subject:@"(" \'<br><br>は<br><br> \' Subject:@\\\\( \'<br><br>にすればいいです。<br><br>ダブルコーテーションは「フレーズ検索」という意味もあるので単<br>に検索キーワードに特殊文字を使いたいだけならエスケープする方<br>が適切です。<br><br> <a
href="http://groonga.org/ja/docs/reference/grn_expr/query_syntax.html#phrase-search-condition-with-explicit-match-column" target="_blank">http://groonga.org/ja/docs/reference/grn_expr/query_syntax.html#phrase-search-condition-with-explicit-match-column</a><br><br><br>-- <br>須藤 功平 <<a ymailto="mailto:kou****@clear*****" href="mailto:kou****@clear*****" target="_self">kou****@clear*****</a>><br>株式会社クリアコード <<a href="http://www.clear-code.com/" target="_blank">http://www.clear-code.com/</a>><br><br>Groongaベースの全文検索システムを総合サポート:<br> <a href="http://groonga.org/ja/support/" target="_blank">http://groonga.org/ja/support/</a><br>パッチ採用 - プログラミングが楽しい人向けの採用プロセス:<br> <a href="http://www.clear-code.com/recruitment/"
target="_blank">http://www.clear-code.com/recruitment/</a><br>リーダブルコードワークショップ:<br> <a href="http://www.clear-code.com/services/code-reader/readable-code-workshop.html" target="_blank">http://www.clear-code.com/services/code-reader/readable-code-workshop.html</a><br><br>_______________________________________________<br>groonga-dev mailing list<br><a ymailto="mailto:groon****@lists*****" href="mailto:groon****@lists*****" target="_self">groon****@lists*****</a><br><a href="http://lists.osdn.me/mailman/listinfo/groonga-dev" target="_blank">http://lists.osdn.me/mailman/listinfo/groonga-dev</a><br><br><br> </div> </div> </blockquote></div> </div></body></html>