проблема со строкой '-' и '&' в mysql - PullRequest
4 голосов
/ 15 января 2010

У меня есть поисковая система на PHP. При поиске нормально все нормально. Текст для поиска - «компания», а в базе данных есть «компания» в поле ...

Проблема в том, что текст поиска - &company или -company, а данные - &company или -company. почему?

проблема со строкой - и & ...

Ответы [ 2 ]

2 голосов
/ 15 января 2010

Попробуйте поставить условия поиска в кавычках. Это должно помочь MySQL знать, что вы имеете в виду эти символы буквально в полнотекстовом поиске:

SELECT * FROM tablename MATCH (company) AGAINST ('"&company"' IN BOOLEAN MODE)

SELECT * FROM tablename MATCH (company) AGAINST ('"-company"' IN BOOLEAN MODE)
1 голос
/ 15 января 2010

Если вы используете полнотекстовый поиск, то символы & и - являются зарезервированными символами. Я не мог найти хорошее решение этой проблемы. Я просто удалил специальный символ и запустил полнотекстовый поиск. Например, если они ищут At & t, я запускаю поиск "AT", "T", но если у вас есть шумовые слова At и A, и вы не получите никаких результатов.

Другое решение состоит в том, чтобы определить, когда они запрашивают специальный символ, и выполнить поиск LIKE '% & Company%' вместо полнотекстового поиска, но это повлияет на производительность запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...