Kouhei Sutou
kou****@clear*****
2013年 8月 9日 (金) 19:31:55 JST
須藤です。 In <20130****@clear*****> "[groonga-dev,01578] Re: 特殊記号混じりの前方一致検索について" on Wed, 07 Aug 2013 10:52:29 +0900 (JST), Kouhei Sutou <kou****@clear*****> wrote: >> あと、エスケープ関数やmroonga_strip_special_characters関数を使う作りになるならば、第二引数に有効にする特殊文字(あるいは無効にする特殊文字)を指定できるような使い方ができると、使い手に判断を任せることができるので、良さそうです。 >> >> 頻度は使い手によるとは思うのですが、「()<>~」が使われるのはかなり稀で、それに比べて「+-*」はin boolean modeを使う場合は、かなり頻繁に使われるかと思います。 >> >> 「+-*」のみが有効ならば、これらの特殊文字が並ばない限りはエラーが出ないようなので、「()<>~」を無効化できれば、だいたいの用途では希望する動作になるのではないかと考えています。 > > おぉ、それはよさそうな気がします。そしたらmroonga_escape()だ > けあればいいですね。 > > その方向で実装するようにします! 実装しました! mroonga_escape('(仮)*', '()<>~') としたら \(仮\)* となり、「*」はそのまま生き残ります。 mroonga_escape('(仮)*') なら、すべての特殊文字をエスケープして、 \(仮\)\* となります。 参考までに以下のようなテストをしています。 * https://github.com/mroonga/mroonga/blob/a6aefc4a85ddaced6eda6fd9ceaef07ab24da34c/test/sql/suite/mroonga/storage/function/escape/r/all.result * https://github.com/mroonga/mroonga/blob/a6aefc4a85ddaced6eda6fd9ceaef07ab24da34c/test/sql/suite/mroonga/storage/function/escape/r/custom.result -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/ コミットへのコメントサービスはじめました: http://www.clear-code.com/services/commit-comment.html