2014-11-05 3 views
0

У меня есть локальная версия веб-сайта, на которой я кодирую функцию поиска и запускаю проблему, когда результат, который я получаю на своем ПК, отличается от сервер. Проблема заключается в том, что в данных имеется косая черта. Например, поле содержит что-то вродеMySQL Match Против предоставления двух разных результатов на 2 серверах

Amazing Product Name/Exp 

И, выполнив следующий запрос на обоих серверах:

SELECT name, MATCH(name) AGAINST('amazing,name,exp' IN BOOLEAN MODE) AS relevance 
FROM `product_description` 
WHERE MATCH(name) AGAINST('amazing,name,exp' IN BOOLEAN MODE) 

На моем компьютере поле уместность показывает 2, в то время как на сервере, он показывает 3, как это должно быть. Данные на моем ПК как дамп с сервера. Оба используют одни и те же наборы символов. Варианты MySQL разные, хотя, PC: 5.5.39, Server: 5.1.73-1-log, но я бы не подумал, что это изменило бы ситуацию?

Я сравнивал xml-файлы charset на каждом, и они одинаковы. Я не верю, что исходный код сервера был изменен и перекомпилирован вообще. это основано на том, что я здесь читал: http://dev.mysql.com/doc/refman/5.5/en/fulltext-fine-tuning.html

Я бы подумал, что поведение по умолчанию для этого будет состоять в том, что косая черта будет рассматриваться как символ пробела или разделителя слов или что-то еще.

Кто-нибудь пролил свет на то, почему они могут отличаться?

ответ

0

Я нашел причину, я сосредоточился на проблеме слэш, но реальной причиной была системная переменная ft_min_word_len mysql. По умолчанию 4, но сервер был 3. Я редактировал my.ini файл на моем компьютере, и добавил

ft_min_word_len = 3 

перезапуске MySQL и переиндексирован данные, и теперь он показывает те же результаты, что и сервер.