Как заставить MySQL обрабатывать подчеркивание как разделитель слов для полнотекстового поиска? - PullRequest
3 голосов
/ 12 февраля 2010

Я использую полный текст MySQL и PHP (codeigniter) для поиска в базе данных, содержащей элементы RSS. Проблема в том, что некоторые из названий этих элементов используют подчеркивания вместо пробелов. Поскольку MySQL рассматривает подчеркивания как часть слова, эти элементы никогда не будут сопоставляться при поиске, если пользователь не введет точный заголовок, включая подчеркивания.

Сервер является общим, поэтому у меня нет доступа к системным переменным MySQL Server.

Можно ли изменить это поведение другим способом? Может быть, это можно сделать через сам поисковый запрос?

Я знаю, что мог бы просто заменить все вхождения подчеркивания в БД пробелами, но это могло бы подорвать первоначальную целостность этих заголовков. Просто интересно, есть ли другой способ сделать это.

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

Я знаю, что мог бы просто заменить все вхождения подчеркивания в БД пробелами, но это могло бы подорвать первоначальную целостность этих заголовков. Просто интересно, есть ли другой способ сделать это.

Вы можете вместо замены подчеркивания в исходном поле заголовка использовать отдельное поле, предназначенное для полнотекстового поиска.

Это позволяет заменить подчеркивание и объединить ключевые слова в это поле (названия категорий, авторов, теги и т. Д.), Чтобы повысить релевантность результатов поиска. Мы много раз с успехом использовали это для избавления от тегов HTML в содержании, выводимом с помощью поиска

1 голос
/ 12 февраля 2010

Не думаю, что это можно сделать без доступа к серверу. Единственный способ, которым я когда-либо видел, это сделать первый комментарий к этой странице руководства mySQL («Как я добавил» - «в список символов слова»). Требуется остановить сервер и изменить внутреннюю конфигурацию.

Ваша лучшая ставка, вероятно, заключается в создании второго столбца с удаленными подчеркиваниями и его поиске.

...