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を含む列 、単語がどこにあるかに関係なく。