PHP MySQL, как запрос и пунктуация - PullRequest
0 голосов
/ 29 ноября 2018

Я ищу в базе данных названия школ.Одна из школ здесь называется EO Green.У меня проблема в том, что если кто-то напишет «EO Green», он, естественно, получит школу в списке результатов.Однако, если кто-то печатает «EO Green», оно не отображается, но оно должно быть.

Вот запрос:

SELECT DISTINCT name 
FROM donations 
WHERE name LIKE '%$query%' 
ORDER BY CASE WHEN name LIKE '$query%' THEN 1 
          WHEN name LIKE '%$query' THEN 3 
          ELSE 2 END 
LIMIT 8

Есть ли решение, которое я просто пропускаю?

Это не вопрос удаления пунктуации в PHP, это вопрос игнорирования пунктуации в базе данных в запросе MySQL.

[EDIT] Решение, очевидно, заключается в заменена MySQL Query

WHERE REPLACE($field, '.', '') LIKE '%$query%'

, а затем также уберите пунктуацию из пользовательского ввода

$query = str_replace(".", "", $query);

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

1 Ответ

0 голосов
/ 29 ноября 2018

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

Существует синтаксический анализатор естественного языка, который будет обслуживать поиски, содержащие разделители (например, запятая, пробел ипериод).Обязательно проверьте версию MySQL, так как некоторые старые версии не поддерживают полнотекстовый поиск InnoDB.

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