Проблема в IN BOOLEAN MODE
полнотекстовом поиске. Символ -
в строке поиска (наряду с , несколько других ) имеет особое значение (исключая слово из поиска). Я думаю, что ваша ошибка связана с тем, что у вас есть символ -
, перед которым стоит сразу слово, без пробела.
В любом случае, -
не будет частью поиска в любом случае, как и другие операторы, поэтому самый простой подход - удалить его вместе с другими операторами.
$name = str_replace(['-', '+', '<', '>', '(', ')', '~', '*', '\'', '"'], ' ', $name);
Включайте эти символы только в том случае, если вы действительно хотите, чтобы они имели конкретное значение в этом контексте.