搜索带有特殊字符和'*'的MySQL FT索引时出错

时间:2019-04-04 10:47:26

标签: mysql full-text-search full-text-indexing

我正在尝试在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中搜索,但在这里找不到任何解决方案。

在此感谢您的建议。

谢谢, 迈克

1 个答案:

答案 0 :(得分:0)

似乎不可能或太复杂。

我决定从搜索字词中省略特殊字符,如下所示: https://mariadb.com/kb/en/library/full-text-index-overview/#in-boolean-mode

谢谢! 迈克