Как найти независимое слово в поиске mySQL? - PullRequest
0 голосов
/ 27 июля 2011

Я пытаюсь найти слово fox в предложении The foxy brown fox jumped over the lazy dog. В настоящее время я ищу с использованием следующего SQL:

SELECT * 
  FROM sentences 
 WHERE sentence LIKE '%fox%'

Это находит предложение из-за присутствия лисицы, а не только лисы. Как мне найти fox самостоятельно?

Я реализую этот поиск в Ruby on Rails, поэтому синтаксис для приведенного выше SQL будет переведен следующим образом:

query = 'fox'
result = Sentence.where("sentence LIKE :search_term", {:search_term => "%#{query}%"})

1 Ответ

3 голосов
/ 27 июля 2011

Вам необходимо использовать средство REGEXP вместе с выражениями «границы слова». [[:<:]] и [[:>:]]. Например

SELECT * FROM sentences WHERE sentence REGEXP '[[:<:]]fox[[:>:]]'

Это будет обрабатывать случаи, когда перед 'fox' стоит запятая, начало / конец строки или другие несловарные символы. Символ слова определяется как [_A-Za-z0-9]. Вот ссылка на документ: http://dev.mysql.com/doc/refman/5.1/en/regexp.html

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