我正在尝试在MySQL FT索引中搜索以开头'Ford'的字符串,以便能够找到'Ford','Ford1','Ford3','FordFord'等字符串...(这就是为什么我使用“ *”)的原因:
SELECT DISTINCT CARS.car
FROM CARS_FT_INDEX CARS_IDX
WHERE ( MATCH ( CAR_NAME ) AGAINST ( "/+FORD*/" IN BOOLEAN MODE) )
但是,搜索词可能包含'@'或其他特殊字符(“ / + FORD @ * /”),这些错误将通过错误消息进行解析:
SQL Erorr(1064):语法错误,意外的'@',期望$ end
建议我用'
('“ / + FORD @ * /”')来包围该词。
但是搜索词:AGAINST ( '"/+FORD@*/"' IN BOOLEAN MODE)
(带有'@'和'')现在不充当“开始于” (仅完全匹配),我是无法搜索多个单词('“ / + FORD1 + FIAT * /”')。
我尝试了许多变体(包括CONCAT),并尝试在google中搜索,但在这里找不到任何解决方案。
在此感谢您的建议。
谢谢, 迈克
答案 0 :(得分:0)
似乎不可能或太复杂。
我决定从搜索字词中省略特殊字符,如下所示: https://mariadb.com/kb/en/library/full-text-index-overview/#in-boolean-mode
谢谢! 迈克