Fiat
が必要な場合 および500
順序が重要でない場所ならどこでも
SELECT * FROM models MATCH(name) AGAINST('+Fiat +500');
Fiat 500
が必要な場合 一緒に、そして
SELECT * FROM models MATCH(name) AGAINST('+"Fiat 500"');
Fiat
が必要な場合 および0個以上の500
、次に
SELECT * FROM models MATCH(name) AGAINST('+Fiat 500');
500
が必要な場合 および0個以上のFiat
、次に
SELECT * FROM models MATCH(name) AGAINST('Fiat +500');
試してみてください!!!
UPDATE 2013-01-28 18:28 EDT
フルテキスト検索のデフォルト設定は次のとおりです
mysql> show variables like 'ft%';
+--------------------------+----------------+
| Variable_name | Value |
+--------------------------+----------------+
| ft_boolean_syntax | + -><()~*:""&| |
| ft_max_word_len | 84 |
| ft_min_word_len | 4 |
| ft_query_expansion_limit | 20 |
| ft_stopword_file | (built-in) |
+--------------------------+----------------+
5 rows in set (0.00 sec)
mysql>
ft_min_word_len > デフォルトでは4です。トークン500の長さは3であるため、インデックスは作成されません。あなたは3つのことをしなければならないでしょう:
ステップ01:小さい文字列トークン用に構成する
これを/etc/my.cnf
に追加します
[mysqld]
ft_min_word_len = 1
ステップ02:mysqlを再起動します
service mysql restart
ステップ03:models
のすべてのインデックスのインデックスを再作成します テーブル
FULLTEXTインデックスを削除して追加するだけです
または段階的に実行して、事前にどれだけ大きくなるかを確認します
CREATE TABLE models_new LIKE models;
ALTER TABLE models_new DROP INDEX name;
ALTER TABLE models_new ADD FULLTEXT name (name);
ALTER TABLE models_new DISABLE KEYS;
INSERT INTO models_new SELECT * FROM models;
ALTER TABLE models_new ENABLE KEYS;
ALTER TABLE models RENAME models_old;
ALTER TABLE models_new RENAME models;
これがうまくいったことに満足したら、実行します
DROP TABLE models_old;
試してみてください!!!