2011-06-20 20 views
0

私が検索する場合:ブール検索が私のために動作しません

SELECT * FROM db.test 
WHERE 
MATCH(story)AGAINST('(+bananas -banana*)'IN BOOLEAN MODE) 

私は行が返され得るが、私は

SELECT * FROM db.test 
WHERE 
MATCH(story)AGAINST('(+bananas -bananas)'IN BOOLEAN MODE) 

または

SELECT * FROM db.test 
WHERE 
MATCH(story)AGAINST('(+bananas -bananas*)'IN BOOLEAN MODE) 
を検索するとき

結果が得られません。私にはマイナス記号と一緒に使うことはできないようです。 誰かがそれを知っているかどうか、またはその設定がMySqlであるかどうか。

種類は オルレ

表がMYISAMであると私はコラムの話にインデックスを持っていると考えています。

答えて

0

解決方法は、かっこをスキップすることです。私が '+ bananas -banana *'の代わりに '+ bananas -banana *'を検索すると、それは動作します。あなたを理解するまでにはしばらく時間がかかりました。

乾杯

+0

うーん、私はそれらの括弧に気づいたが、私はそれらがクエリに違いをもたらすとは思わなかった。私は自分自身を試して、クエリは、かっこの有無にかかわらず同じ結果を返しました)後に - バナナ*は何も意味しません。 – Abhay

1

最後の2つのクエリは、矛盾する条件が含まれているため、結果が得られません。ストーリーは「バナナ」という単語を持つ必要があり、「バナナ」という単語を持つことはできません。これは可能ではないため、結果はありません。

ただし、最初のクエリでは「バナナ」は存在する必要がありますが、「バナナ」は存在しないことを意味します。

また、マイナス演算子で*を使用することもできます。

これが役に立ちます。

+0

私は*私はバナナないバナナを検索するので、最初の行は、任意の行のいずれかを返すべきではないと信じています。バナナ*はバナナ、バナナレアバナナボートなどと一致します。そして、私の問題は、除外語を* – Olle

+0

で切り捨てたときに行が得られることです。@Olle:aha right、最初のクエリで ' - バナナ*'のような - (マイナス)演算子が使用されたことに気付かなかったと思います。私が理解しているところから、あなたの最初のクエリは結果を返してはいけません。たとえ '+ bananas -b *'を実行しても、結果は返されません。デベロッパーでテストを試してみましたが、(+ philippines)の検索結果は返されましたが、(philippines -ph *)は返されませんでした。 – Abhay

関連する問題