MySQL совпадает с косой чертой

У меня возникли некоторые проблемы с поиском продуктов, которые содержат косую черту (например, ac/dc) с соответствием mysql.

Кажется, на это влияют определенные параметры. На моем Windows XAMMP с настройками по умолчанию каждый из этих прекрасно работает:

MATCH (content) AGAINST ('+ac/dc*' IN BOOLEAN MODE)

а также

MATCH (content) AGAINST ("+ac/dc*" IN BOOLEAN MODE)

а также

MATCH (content) AGAINST ('"+ac/dc*"' IN BOOLEAN MODE)

а также

MATCH (content) AGAINST ("'+ac/dc*'" IN BOOLEAN MODE)

а также

MATCH (content) AGAINST ('+ac\/dc*' IN BOOLEAN MODE)

Но ни один из них не работает на нашем производственном сервере, который находится в системе Linux (я не знаю, какой дистрибутив, но он находится под plesk).

И что я имею в виду под "не работать". Запрос возвращает 0 строк. Производственный сервер имеет значение ft_min_word как 2.

2 ответа

Решение

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

У меня есть таблица поиска, в которой я храню слова поиска, там я удаляю косые черты, чтобы AC/DC становился ACDC, и при поиске я изменяю запрос, чтобы снова удалить косую черту, чтобы он пытался сопоставить ACDC и находить правильную строку.

Посмотрите на механизм хранения в XAMP и на производственном сервере. Существуют ограничения на полнотекстовый поиск http://dev.mysql.com/doc/refman/5.1/en/fulltext-restrictions.html. Кроме того, определения таблицы должны совпадать для полнотекстового поиска.

Косая черта не является специальным символом, хотя двойные кавычки есть. Так, +ac/dc* должен дать другой набор результатов, чем "+ac/dc*" например.

Кроме того, единственное различие, о котором я могу думать, было бы различным содержанием таблицы.

Другие вопросы по тегам