0

私はboolean modeMySQL の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ますか?

4

1 に答える 1

1

Boolean Full-Text Searches に記載されているとおり:

ブール全文検索には、次の特徴があります。

デレティア

Natural Language Full-Text Searches に記載されているとおり:

一部の単語は全文検索で無視されます。

  • 短すぎる単語は無視されます。全文検索で検出される単語の既定の最小長は、InnoDB検索インデックスの場合は 3 文字、 の場合は 4 文字ですMyISAM。インデックスを作成する前に構成オプションを設定することで、カットオフを制御できます。検索インデックスのinnodb_ft_min_token_size構成オプション、または.InnoDBft_min_word_lenMyISAM
于 2013-06-10T10:38:44.903 に答える