Tasuku SUENAGA
a****@razil*****
2008年 1月 29日 (火) 18:36:55 JST
末永です。 一番最初に指定された「-」は無視されるというのが 現在の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*****>