[Senna-dev 770] Re: NOT検索のみを行うとAND検索になってしまう件について

Back to archive index

morit****@razil***** morit****@razil*****
2008年 2月 6日 (水) 01:58:48 JST


石川さん。はじめまして。森と申します。

ご指摘ありがとうございます!

Sennaも「-を単独で使用した場合は空の結果を返す」という仕様に修正します。
近々リリース予定のSenna1.1.1に反映したいと思います。



>>> Tasuku SUENAGA さんは書きました:
> 末永です。
> 
> なるほど、ユーザからの入力としてクエリが発生する可能性がある、
> ということですね。
> 0件ヒット、検討してみます。
> 
> 一応補足&蛇足ですが、
> > NOT MATCH (cols) AGAINST ('*D+ ××× ○○○' IN BOOLEAN MODE)
> > と書くことで同等の効果を得ることはできると思います。
> って、
> > MATCH (cols) AGAINST ('*D+ -××× -○○○' IN BOOLEAN MODE)
> と同等になっていないですね。
> NOT MATCH (cols) AGAINST ('××× ○○○' IN BOOLEAN MODE)
> だと同等になりますね。
> 
> Ikumi Ishikawa さんは書きました:
> > 石川です。
> > 返信ありがとうございます!
> > 
> >> 純粋な興味なんですが、
> >> MATCH (cols) AGAINST ('*D+ -××× -○○○' IN BOOLEAN MODE)
> >> のようなクエリを発行する用途ってどういったものなんでしょうか。
> > 現象として確認しているのみですので、特にシステムとして上記のようなクエリが発生する確率は低そうです。
> > 
> >> 一応、
> >> NOT MATCH (cols) AGAINST ('*D+ ××× ○○○' IN BOOLEAN MODE)
> >> と書くことで同等の効果を得ることはできると思います。
> > 説明が足りず、すいません。あと、ありがとうございます。
> > NOT検索のみ指定したばあいは、0件で帰ってきて欲しかったんです。。。
> > NOT検索のみですと、クエリが遅くなるとおもいますので。
> > 
> > 今は、アプリケーションでNOT検索のみの場合は結果を強制的に0件にするように
> > しているのですが、やっぱり気になっていましたので、質問させていただきました。
> > 
> > 
> > 
> > 08/01/29 に Tasuku SUENAGA<a****@razil*****> さんは書きました:
> >> 末永です。
> >>
> >> 一番最初に指定された「-」は無視されるというのが
> >> 現在のSennaの仕様です。
> >> MySQLオリジナルのMATCH AGAINSTの仕様とはズレているようですね。
> >>
> >> 純粋な興味なんですが、
> >> MATCH (cols) AGAINST ('*D+ -××× -○○○' IN BOOLEAN MODE)
> >> のようなクエリを発行する用途ってどういったものなんでしょうか。
> >> 最終的にどういうクエリを発行するのかの情報があれば、
> >> もっと突っ込んだアドバイスが出来るかもしれません。
> >>
> >> 一応、
> >> NOT MATCH (cols) AGAINST ('*D+ ××× ○○○' IN BOOLEAN MODE)
> >> と書くことで同等の効果を得ることはできると思います。
> >>
> >> Ikumi Ishikawa さんは書きました:
> >>> はじめまして。石川と申します。
> >>>
> >>> 過去ログをいろいろと拝見させていただいたのですが、該当のものがなかったため、
> >>> 質問させていただきます。
> >>>
> >>> [環境1]
> >>> MySQL-5.0.41
> >>> tritonn-1.0.3
> >>> senna-1.0.7
> >>> [環境2]
> >>> MySQL-5.0.51
> >>> tritonn-1.0.8
> >>> senna-1.0.9
> >>> 環境1,2ともに現象が発生します
> >>>
> >>> [現象]
> >>> SELECT COUNT(foo) FROM bar WHERE MATCH(○○○) AGAINST('*D+ -×××' IN BOOLEAN MODE);
> >>>
> >>> 上記のようなNOT検索のみを指定したSQLを発行すると、「-」の演算子が無視されて、
> >>> (この場合だと「*D+」のプラグマがあるので、)AND検索になってしまいます。
> >>>
> >>> また、('*D+ -××× -○○○' IN BOOLEAN MODE)という形でSQLを発行すると、
> >>> 先頭の「-」演算子のみが無視されてしまい、×××の結果から○○○を除いた結果が検索されます。
> >>>
> >>> MySQLのBOOLEAN MODEの仕様を調べたところ、
> >>> http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html
> >>> (-の項のNOTE:の部分です。)
> >>> なんとなく「単独で使用した場合は空の結果を返す」というようなことが書いてあるような気がします。(すいません曖昧で。。。)
> >>>
> >>> 現象はSennaの仕様なのでしょうか?
> >>> ご教授いただけたらと思います。
> >>>
> >>> よろしくお願いいたします。
> >>>
> >>> _______________________________________________
> >>> Senna-dev mailing list
> >>> Senna****@lists*****
> >>> http://lists.sourceforge.jp/mailman/listinfo/senna-dev
> >>> バグ報告方法:http://qwik.jp/senna/bug_report.html
> >> ---
> >> Tasuku SUENAGA <a****@razil*****>
> ---
> Tasuku SUENAGA <a****@razil*****>
> 
> _______________________________________________
> Senna-dev mailing list
> Senna****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/senna-dev
> バグ報告方法:http://qwik.jp/senna/bug_report.html
> 
--
morita




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