[groonga-dev,01568] Re: 特殊記号混じりの前方一致検索について

Back to archive index

mail_babir****@yahoo***** mail_babir****@yahoo*****
2013年 8月 1日 (木) 19:10:30 JST


田辺です。

> > 場合によっては複数回エスケープ関数を使うことがありそうなので、関数名はe()くらい短くできるといいですね。
> 
> おぉ。。。それはやり過ぎな気持ちになりました。。。
> MySQL全体でのエスケープ関数ならe()でもよさそうな気がしますが、
> mroonga固有のエスケープ関数なのでe()はやり過ぎな気がする、と
> 感じました。

やりすぎと言われると、確かにそうかもしれません。


> MyISAMで「(仮)*」が正確に検索できているように
> みえるのは実はそうではなく、単に「仮」で検索しているだけで、
> 「(仮)*」だと誤ヒットがありうるのではないかと考えられます。

これは検証された内容の通りみたいですね。
調査不足で恐縮です。


> InnoDBの挙動を確認したかは忘れてしまったのですが、InnoDBはロ
> グにエラーを出していたのでシンタックスエラーの場合はヒットし
> ないと思います。なので、ストレージエンジンによって挙動が違う
> というのが現状じゃないかという気がしています。。。

ここは重要ですね。
オートインクリメントの最新値の件のときも、ここが判断基準になっていましたし。


> ただ、MyISAMで全文検索をしてきた人がどのくらいいる
> のかわからないので、なんとも言えないなぁという気持ちがまだあ
> ります。だれか、そのあたりの事情を教えてくれるとうれしいので
> すが。。。

他に使っている人の意見があるといいのですが。

どうしても一対一になってしまうと、
「自分の好みを押し付けてしまう1ユーザ VS 需要が不明なものは実装したくない運営」の構図になってしまうと思うので。

現状だと、「不正確な検索を放置する」か「不正確な検索になる可能性があればエラーを出して処理を止める」かのどちらかという感じなわけですね。



> > 自動エスケープというよりは、特殊文字の解析方法をmyisamに合わせることができれば、より自然でいいかと思います。
> > 
> > myisamの実装を見て、似た実装ができそうなら引き続き検討頂けると有り難いです。
> 
> とすると、エラーの扱いまで含めたMyISAM完全互換のクエリー構文
> パーサーを作ることになりますねぇ。構文エラーのときにエラー扱
> いにできないと、パーサーを作るためのツールと相性が悪いので作
> りづらいんですよね。。。うーん。。。
> 

他の部分との連携が難しいんですね。
下手するとバグの原因になるかもしれない、とも感じました。


> > mroonga_escape()については、あれば確実に便利な関数だと思うので、myisamの挙動の件とは別に実装して頂けると嬉しいです。
> > (ユーザに特殊文字を使わせたくない場合に、予めその関数でラッピングしておくという使い方もできるので)
> 
> はい、ちょっと検討してみます。


ありがとうございます。
今のところ、これが一番問題が少ない気がしますね。


> > しつこく蒸し返して恐縮ですが、特殊文字の解析挙動が合えば、mroongaの導入にあたっての障壁がより低くなることは間違いないと思う(どうやってエスケープしようという点で悩まなくて済むし、後になってエスケープが必要なことを知って慌てることもない)ので、実現可能であれば、ぜひお願いしたいと思います。
> 
> は、はい。。。
> うーん、私は、ユーザーとしては「特殊文字が勝手に無視されてエ
> ラーにならずに動いているけど期待した挙動じゃないこともある
> (今のMyISAMの挙動)」よりは、「エラーになってすぐに問題がわ
> かる(InnoDBのログをみる場合や今のmroongaの挙動)」というタ
> イプなので、なかなか踏ん切りがつかないんですよねぇ。。。

やっぱり好みの問題に行き着いてしまいそうですね。

私の場合、動いたらそれでいい派なので、myisamの動きをみても、さほど不自然に感じないんですよね。

不自然というよりは、元々myisamを使っていたので、挙動としてはそれで当然のような認識になっていたりします。

このあたりは使い手によるところなんでしょうか。

そうなると、他の使い手にとっては正直「どっちでもいい」ような問題を議論してしまっているのかも知れないので、なおさら恐縮ですが・・・。


田辺公平




groonga-dev メーリングリストの案内
Back to archive index