PHP + mySQL - соответствует точное слово - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть несколько текстов в базе данных mysql, и я использую этот запрос, чтобы попытаться сопоставить точное слово в запросе с php:

$palavra = "aquecimento";

$query = "SELECT * FROM webqda_fontesInt_text WHERE plainText REGEXP '[[:<:]]" . $palavra . "[[:>:]]' AND projectoId='$projectoId' AND reciclagem='0' AND id='$id' GROUP BY id";

Может кто-нибудь объяснить, почему это возвращает записи, как: "aquecimento", "aquecimentos", "desaquecimentos"?

Я только хотел вернуть точное совпадение, но оно не работает так, как должно.

Заранее спасибо!


Дополнительная информация

Также у меня могут быть такие слова, как «aquecimento», которые я хочу вернуть, или «aquecimento!»

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

Окончательное обновление

Хорошо, я смог посмотреть и запустить несколько тестов. В конце концов получил это на работу:

WHERE plainText RLIKE '[ ]".$palavra."[?!.,]?[ ]'

Просто добавьте больше знаков препинания в [] и помните о том, что вам нужно избегать тех предметов, которые нужно убежать.

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


Обновление

Хорошо, прочитав это должно быть тем, что вы ищете:

ГДЕ обычный текст REGEXP '\ s ". $ Palavra." [!.] {1} \ s'

Я не на 100% в регулярном выражении, и, возможно, потребуется настроить. Для информации я использовал MySQL Manual для REGEXP . Если я получу шанс протестировать / настроить это, я это сделаю. Удачи.


Старый ответ: Почему бы просто не использовать LIKE вместо регулярных выражений?

WHERE plainText LIKE '% ".$palavra." %'

Должен сделать это, просто добавьте пробелы до и после слова.

0 голосов
/ 13 апреля 2011

Почему бы вам не попробовать

"REGEXP '\s".$palavra."\s'"

Я не понимаю вашего регулярного выражения, поэтому извините, но я не могу ответить, почему вы соответствуете "aquecimentos"

Также у меня могут быть такие слова, как "" aquecimento. ", Которые я хочу вернуть, или" aquecimento! "

В этом случае REGEXP будет выглядеть так:

REGEXP '\s[\"\\']+".$palavra."(!)?[\"\\']+\s'

Это означает, что «и» разрешены до и после $ palavra.Это также нормально, если!Право после палавры.

Я не проверял, но думаю, что это будет работать.

...