MySQLドキュメント から
-
+
先頭のプラス記号は、この単語が返される各行に存在する必要があることを示します。 -
*コード> アスタリスクは、切り捨て(またはワイルドカード)演算子として機能します。他の演算子とは異なり、影響を受ける単語にアスタリスクを追加する必要があります。 *演算子の前の単語で始まる単語は一致します。
単語が切り捨て演算子で指定されている場合、その単語が短すぎる(ft_min_word_len設定から決定される)またはストップワードであっても、ブールクエリから削除されません。これは、単語が短すぎるまたはストップワードと見なされないために発生しますが、プレフィックスとしてドキュメントに存在する必要があり、プレフィックスで始まる単語の形式である必要があります 。
状況に応じて:
MATCH(...)AGAINST(...)
MATCH(name)AGAINST('+ ski *'IN BOOLEAN MODE)
name
内の単語が含まれる行を検索していることを意味します 列が含まれている必要があります スキー
、および開始する必要があります ski
という言葉で 。
投稿したセットから、 Dartmouth Skiway
唯一のname
これらの要件に準拠しています。ski
という単語が含まれています。 、接頭辞として ski
という単語が付いています 。
他のname
列、ただし最初のルールに一致します: ski
が含まれている必要があります 、接頭辞はありません スキー
、あなたのルールで規定されているように。ブール検索によって返される行は、 name
を持つ唯一の行です。 両方が含む単語を含む列 スキー
接頭辞という単語です ski
による 。
ajrealが提案しているように、 ft_min_len_word_setting
を減らしてみてください my.cnf
で 。デフォルト設定のため、検索で期待する結果が得られない可能性があります。 3に減らしてみてください。
%text%のような列の場所
WHERE name LIKE "%ski%"
name
の行を検索します ski
を含む列 、単語がどこにあるかに関係なく。