2015-02-02 3 views
3

Я установил ft_min_word_len = 1 и работает show variables like 'ft%'; также показывает то же самое. Также были обновлены индексы Fulltext путем их сброса и повторного создания.MySql Fulltext search with 2 character word

Но когда я запускаю SELECT OriginalProductName FROM products WHERE MATCH (ProductName) AGAINST ('+samsung +tv' IN BOOLEAN MODE); против строки, которая имеет «Samsung Hg55nc890xf 3d 1080p Led lcd Tv Hdtv» в качестве значения, он возвращает 0 результатов.

Это работает, как ожидается, когда я исполняю SELECT OriginalProductName FROM products WHERE MATCH (ProductName) AGAINST ('+samsung +led' IN BOOLEAN MODE);

Я использую MySQL 5.6.22. Innodb - это движок стола.

Как сделать MySql Полный текст поиска для поиска 2 символьных слов, таких как tv, 32, US etc ...?

+2

У меня также есть 5.6.22 и меньше, чем 3 значения ft_min_word_len не работают. Я имею в виду, что я также вижу, что значение установлено равным 2 в отображаемых переменных, и я перестраиваю индекс, но он не вступает в силу. Самая короткая строка, которую я могу найти с полным текстом, по-прежнему занимает 3 символа. – bpgergo

+0

Самое близкое решение, которое я нашел: 'SELECT ProductName FROM products WHERE ProductName LIKE '% tv%' AND MATCH (ProductName) AGAINST ('+ samsung' IN BOOLEAN MODE);' –

ответ

2

Я нашел, что эта проблема была специфической для двигателя хранения innodb. Я решил проблему, добавив [mysqld] innodb_ft_min_token_size =2; в /etc/my.cnf