Ако имате нужда от Fiat
и 500
навсякъде, където редът няма значение, тогава
SELECT * FROM models MATCH(name) AGAINST('+Fiat +500');
Ако имате нужда от Fiat 500
заедно, след това
SELECT * FROM models MATCH(name) AGAINST('+"Fiat 500"');
Ако имате нужда от Fiat
и нула или повече 500
, след това
SELECT * FROM models MATCH(name) AGAINST('+Fiat 500');
Ако имате нужда от 500
и нула или повече Fiat
, след това
SELECT * FROM models MATCH(name) AGAINST('Fiat +500');
Опитайте !!!
АКТУАЛИЗИРАНЕ 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;
Опитайте !!!