Использование MySQL LIKE для сопоставления всей строки - PullRequest
0 голосов
/ 26 сентября 2011

Я немного искал вокруг StackOverflow и Interweb, и мне не повезло.

У меня есть URL, который выглядит следующим образом ...

nr/online-marketing/week-in-review-mobile-google-and-facebook-grab-headlines

Я получаю название статьи из URL и заменяю '-' на ', чтобы дать мне:

week in review mobile google and facebook grab headlines

На данный момент это вся информация, которая у меня есть по статье, поэтому мне нужно использоватьэто для запроса базы данных, чтобы получить остальную информацию о статье, проблема возникает, но эта строка не соответствует фактическому заголовку статьи, в данном случае фактический заголовок:

Week in review: Mobile, Google+ and Facebook grab headlines

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

Надеюсь, что кто-то может помочь, стандарт SELECT * FROM table WHERE field LIKE $name не работает, я надеюсь найти способделать это без разделения каждого отдельного слова, но если это то, к чему оно сводится, то пусть будет так!

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2011

Попробуйте полнотекстовый поиск движка MySQL MyISAM.В вашем случае запрос будет:

SELECT * FROM table
WHERE MATCH (title) AGAINST ('week in review mobile google and facebook grab headlines');

Это потребует от вас преобразования таблицы в MyISAM.Также, в зависимости от размера таблицы, проверьте производительность запроса.

См. Дополнительную информацию в: http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

0 голосов
/ 26 сентября 2011

Это действительно больше похоже на проблему проектирования базы данных ... Если вы используете большие тексты с разными полями в качестве форм первичных ключей, это может привести к дублированию или проблемам с синхронизацией.

Одним из возможных решений является присвоение каждой записи уникального идентификатора (возможно, поля int или uniqueidentifier, если MSQL поддерживает это), и использование этого поля для сопоставления фактического значения healdine с URL.

еще одно потенциальное решение - создать таблицу, которая свяжет каждый заголовок с его URL-адресом, и использовать эту таблицу для поиска. Это потребует дополнительных затрат, но гарантирует, что специальные символы в заголовке никогда не повлияют на процесс поиска.

Что касается способа сделать это с вашим текущим дизайном, вы можете выполнить какой-либо поиск по регулярному выражению путем токенизации каждого слова по отдельности, а затем поиска записи, которая включает все токены, но я вполне уверен, что MSQL не предоставляет эту функциональность в базовой команде.

...