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の設定なのか誰かが知っていますか。

よろしくお願いしますOlle

テーブルはMYISAMで、コラムストーリーのインデックスがあります。

4

2 に答える 2

1

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

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

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

お役に立てれば。

于 2011-06-20T11:19:01.333 に答える
0

解決策は、括弧をスキップすることです。'(+ bananas -banana *)'の代わりに'+ bananas -banana *'を検索すると、機能します。あなたを理解するのに少し時間がかかりました。

乾杯

于 2011-06-21T07:16:36.340 に答える