私はboolean mode
MySQL のfulltext
検索をいじっていますが、時々得られる結果を理解していません。
たとえば、ここにいくつかのデータ行があります..
auction_id,'name'
100543,'2011-12 Fleer Retro patch auto'
100544,'2011-12 Fleer Retro patch auto jordan'
100545,'2011-12 Fleer Retro autograph'
100546,'2011-12 Fleer Retro autographed'
100547,'2011-12 Fleer Retro auto'
100549,'1999 jordan auto'
100550,'1999 auto jordan'
100551,'1999 autograph jordan'
100552,'1999 autographed jordan patch'
100553,'1999 jordan non auto'
クエリを実行すると、次のようになります。
SELECT auction_id,NAME,description FROM auctions WHERE MATCH(`name`) AGAINST('+jordan +auto' IN BOOLEAN MODE);
行100544,100549,100550,100553
が返されますが、これは正しいです。ただし、このクエリを実行すると:
SELECT auction_id,NAME,description FROM auctions WHERE MATCH(`name`) AGAINST('+jordan +auto -non' IN BOOLEAN MODE);
同じ結果が返されます。?100553
に「non」が含まれているため、消えてはいけません。name
さらに、次のように変更すると:
SELECT auction_id,NAME,description FROM auctions WHERE MATCH(`name`) AGAINST('+jordan +auto -"non auto"' IN BOOLEAN MODE);
結果が返されません。を除いてすべて取得する必要があり100553
ますか?