Я использую MySQL fulltext и PHP (codeigniter) для поиска базы данных, содержащей элементы RSS. Проблема заключается в том, что некоторые из названий этих предметов используют символы подчеркивания вместо пробелов. Поскольку MySQL учитывает подчеркивания как часть слова, эти элементы никогда не будут сопоставлены в поиске, если только пользователь не набирает точный заголовок, включая символы подчеркивания.
Сервер является общим, поэтому у меня нет доступа к системным переменным MySQL Server.
Можно ли изменить это поведение каким-то другим способом? Возможно, это может быть сделано с помощью самого поискового запроса?
Я знаю, что я мог бы просто заменить все символы подчеркивания в БД пробелами, но это могло бы поставить под угрозу первоначальную целостность этих названий. Просто интересно, есть ли другой способ сделать это.
Я знаю, что я мог бы просто заменить все символы подчеркивания в БД пробелами, но это могло бы поставить под угрозу первоначальную целостность этих названий. Просто интересно, есть ли другой способ сделать это.
Вместо того, чтобы заменять символы подчеркивания в исходном поле заголовка, вы можете использовать отдельное поле для полнотекстового поиска.
Это позволяет заменить символы подчеркивания, а также заполнить ключевые слова в этом поле (имена категорий, авторы, теги и т. Д.), Чтобы повысить релевантность результатов поиска. Мы использовали это много раз с успехом для избавления от HTML-тегов в содержании, выводящем поиск
Я не думаю, что это можно сделать без доступа к серверу. Единственный способ, которым я когда-либо видел это, – это первый комментарий на этой странице руководства mySQL («Как я добавил» – «в список символов слова»). Это требует остановки сервера и изменения внутренней конфигурации.
Лучше всего создать второй столбец с удаленными символами подчеркивания и искать его.