У меня есть таблица и прикладной комбинированный полнотекстовый указатель на (prenom, nom) поля. Ниже приведены данные в этой таблице.Полнотекстовый поиск не работает должным образом
persID prenom nom (pers table)
--------------------------------
116 te te
117 te test test te
Теперь я попытался принести выше записи с помощью MATCH и ПРОТИВ. Ниже мой запрос.
SELECT `Pers`.`persID`, Pers.prenom, Pers.nom
FROM `bdrplus`.`pers` AS `Pers`
LEFT JOIN `bdrplus`.`pers_detail` AS `PersDetail`
ON (`PersDetail`.`persID` = `Pers`.`persID`)
WHERE `Pers`.`etat` =1
AND `Pers`.`persID` !=55
AND MATCH(`Pers`.`prenom`, `Pers`.`nom`) AGAINST('te*' IN BOOLEAN MODE)
Result
------------------------
persID prenom nom
117 te test test te
Теперь я попытался с помощью MySQL LIKE (% ..%) оператора. Ниже приведен запрос, который я попробовал.
SELECT `Pers`.`persID`
FROM `bdrplus`.`pers` AS `Pers`
LEFT JOIN `bdrplus`.`pers_detail` AS `PersDetail`
ON (`PersDetail`.`persID` = `Pers`.`persID`)
WHERE `Pers`.`etat` =1
AND `Pers`.`persID` !=55
AND (Pers.prenom LIKE 'te%' OR Pers.nom LIKE 'te%')
Result
-----------------------
persID prenom nom (pers table)
116 te te
117 te test test te
Я не понимаю, почему я не получаю обе записи, используя МАТЧ ПРОТИВ оператора полнотекстового индекса запроса?
Привет, я попытался выше решения, но до сих пор не работаю – Jimit
Что было ваш рано 'ft_min_word_len', вы перезапустить MySQL после изменения? Также после изменения вам нужно сбросить индекс и заново создать его. Или нужно отремонтировать стол. Также обратите внимание, что в полнотекстовом поиске mysql есть список стоп-слов http://dev.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html –
Я использую окна, поэтому я проверил в my.ini. ft_min_word_len там недоступно. Я добавил его и назначил ему 2, а затем перезапустил mysql и reindex fulltext index – Jimit