MySql REGEXP поиск нескольких слов, включая конкретные слова - PullRequest
0 голосов
/ 03 мая 2018

У меня есть база данных с ключевым словом coloumn

Необходим поиск в базе данных на основе запроса, выполненного пользователем.

В конце каждого ключевого слова есть слово "outlet", но пользователь будет искать только "gul ahmad", а не "gul ahmad outlet". Для этого я использовал следующий запрос, и все работало нормально, чтобы получить результаты, и нашел полный результат "Gul Ahmad Outlet"

$sql = "SELECT keywords FROM table WHERE keywords REGEXP '([[:blank:][:punct:]]|^)$keyword([[:blank:][:punct:]]|$)'";

Теперь у меня 2 вопроса 1. Если слово «розетка находится между словами запроса, то оно не находит слово. Например, если пользователь выполняет поиск« kohistan lahore », в базе данных есть розетка« kohistan outlet lahore », но он не находит ключевое слово в базе данных и возвращает пустое. Как указать базе данных включить «выход» между, в начале или в конце, чтобы найти и сопоставить результат.

  1. если какая-либо пользовательская база данных "nabeel's outlet" имеет ее, но из-за "'" этот запрос возвращает пустой результат без результата.

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Гораздо проще: [[:<:]]$keyword[[:>:]] - проверяется «граница слова» вместо пробела, пунктуации или начала / конца строки. И $keyword = "nabeel's" не должно быть проблемой.

Разве вы не хотите всегда придерживаться "розетки"?

REGEXP "[[:<:]]$keyword[[:>:]] outlet"

И, да, вы должны избегать определенных вещей, таких как кавычки, которые будут использоваться для цитирования строки регулярного выражения. PHP addslashes() является одним из способов.

0 голосов
/ 03 мая 2018

То, что вы можете сделать, это то, что вы можете сопоставить значения вашего столбца только с первым словом вашего поискового выражения (т. е. розетка Набиэль). Я верю, что таким образом вы сможете охватить все свои сценарии.

select 
      * 
from `outlets` 
    where REPLACE(`name`,'\'','') regexp SUBSTRING_INDEX('nabeels outlet', ' ', 1)

Посмотрите на эту скрипку и проверьте себя: http://sqlfiddle.com/#!9/b3000/21

Надеюсь, это поможет.

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