У меня проблема.Mysql Полнотекстовый поиск с знаком плюса
В моем MySql db у меня 40000 строк в таблице продуктов. Таблица имеет столбец T9Text. Один из моих строк T9Text области, как это:
UNISNLS106B UNI.SNLS 106В SNL,-106B M.OT. 12V 2 Delik МОТОР КРАФТ TIPI UNIPOINT 66-205 66205 F02Z-11390-А F02Z11390A E90Z-11390-А E90Z11390A F4DZ-11390-А F4DZ11390A F3VY-11390-А F3VY11390A E90Z-11390-А E90Z11390A FORD ЭСКОРТ Mercury Tracer FORD
Для автоматического завершения процесса, я запустил хранимую процедуру в db. Это так:
SELECT p.Code,
p.Name,
p.`T9Text`,
MATCH (p.T9Text) AGAINST ('+UNI* +SNLS* +106B*' IN BOOLEAN MODE) AS SCORE
FROM product p
WHERE MATCH (p.T9Text) AGAINST ('+UNI* +SNLS* +106B*' IN BOOLEAN MODE) >0
GROUP BY p.Name
ORDER BY SCORE DESC
Как это, он отлично работает и возвращает только одну строку.
Но мне нужно, чтобы написать мой, где состояние, как это:
MATCH (p.T9Text) AGAINST ('+*UNI* +*SNLS* +*106B*' IN BOOLEAN MODE) >0
С выше кода он возвращает строки 1877. Это как знак плюса не работает
MATCH (p.T9Text) AGAINST ('+*UNISNLS106B*' IN BOOLEAN MODE) >0
MATCH (p.T9Text) AGAINST ('+*NISNLS106B*' IN BOOLEAN MODE) >0
С первым запросом возвратите 1 строку, но второй запрос возвращает 0 строку.
Итак, есть мой вопрос: В mysql полнотекстовом поиске я не могу использовать + тест выражение? Если нет, есть ли способ сделать это? (за исключением случаев, когда LIKE)
Вы попробовали экранировать его как '\ +'? –
Я думаю, что проблема заключается в '*' - это можно использовать только в конце слова. – Barmar
@ DannyBeckett 'MATCH (p.T9Text) ПРОТИВ ('\ + * NISNLS106B *' В РЕЖИМЕ BOOLEAN)' ничего не вернул – makcura