Ошибка при поиске индекса MySQL FT со специальным символом и '*' - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь найти в индексе 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, но не смог найти никакого решения здесь.

Буду признателен за ваш совет здесь.

Спасибо, Mike

1 Ответ

0 голосов
/ 11 апреля 2019

Кажется, что это невозможно или слишком сложно.

Я решил опустить специальные символы в поисковом запросе, как описано здесь: https://mariadb.com/kb/en/library/full-text-index-overview/#in-boolean-mode

Спасибо в любом случае!Mike

...