mail_babir****@yahoo*****
mail_babir****@yahoo*****
2013年 7月 3日 (水) 08:52:30 JST
田辺です。 > ダブルクォートで囲んだ場合はフレーズ検索になる仕様については田辺さんの認識で合っています。 とのこと、現時点で問題にはなりにくいとは思うのですが、エスケープが必要な場合に強制的にフレーズ検索になってしまうという仕様だと、期待した検索結果が得られないことがあるかもしれないですね。 やはり、mroonga側でエスケープ処理ができるような仕組みにして頂く方が、問題が少ないかと思います。 > > mroongaが構文エラーと見なした段階で、mroonga側でエスケープ処理をして再度クエリを実行するといったオプション等があると便利なのですが。 > > > > 可能でしたらご検討頂けますと幸いです。 > > > > このあたりのエスケープ処理については田辺さんの提案も踏まえて検討してみます! ご検討ありがとうございます。 他のストレージエンジンと比べてデメリットとなる面は極力なくなるようにできるといいですね。 あと、以前ご報告していたオートインクリメント値の重複の件、他のストレージと動作を合わせて頂いたようで、ありがとうございます。 それでは、引き続きよろしくお願いします。 田辺公平 --- On Tue, 2013/7/2, HAYASHI Kentaro <hayas****@clear*****> wrote: > > 林です。 > > On Mon, 1 Jul 2013 14:00:08 +0900 (JST) > <mail_babir****@yahoo*****> wrote: > > > mroongaを利用させて頂いています。 > > 田辺です。 > > > > 表題の件についてですが、mroongaの場合、 > > http://y-ken.hatenablog.com/entry/mroonga-query-escape-string > > こちらのブログで紹介されているように、半角特殊記号を用いた検索の場合、ダブルクオートでのエスケープが必要というのが現状かと思います。 > > > > ただ、ダブルクオートでのエスケープを行うと、前方一致演算子の「*」を使用できないようです。 > > 特殊記号が含まれている場合にも前方一致を適用する方法はあるでしょうか? > > > > おっしゃるとおり、この場合前方一致検索の「*」は使用できません。 > 田辺さんの「特殊記号をマルチバイト文字に変換してから検索する」というのが > (utf8_unicode_ciが中で同一視するので)現実的に取れる対処方法だと思います。 > > > > > > ちなみに、myisamにて同じ検索を行ったところ、クオートせずに期待する検索結果を得ることができました。 > > > > また、myisamの場合はダブルクオートで囲んだ内容はフレーズ検索になる仕様ですが、mroongaの場合もそうなっているように思います。 > > この場合、単にエスケープする用途であっても、連動してフレーズ検索になってしまうように思うのですが、このあたり、動作の認識は合っているでしょうか? > > > > ダブルクォートで囲んだ場合はフレーズ検索になる仕様については田辺さんの認識で合っています。 > > > > 現状では特殊記号をマルチバイト文字に変換してから検索することで、エラーが出ない状態となるため、その方法で調整しています。 > > > > 先に述べたように、これがうまいやり方だと思います。 > > > > > > また、myisamではエラーとなっていなかった検索クエリが、mroongaを使うことでエラーとなるため、mroonga専用のエスケープ処理をアプリケーションに盛り込まなければならないこととなり、多少手間を感じております。 > > > > mroongaが構文エラーと見なした段階で、mroonga側でエスケープ処理をして再度クエリを実行するといったオプション等があると便利なのですが。 > > > > 可能でしたらご検討頂けますと幸いです。 > > > > このあたりのエスケープ処理については田辺さんの提案も踏まえて検討してみます! > > > -- > HAYASHI Kentaro <hayas****@clear*****> > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/groonga-dev >