Получение слов с 3 или менее символами в MySQL - PullRequest
0 голосов
/ 27 декабря 2010

У меня есть таблица с полем, которое содержит несколько названий окрестностей. Некоторые из этих окрестностей имеют имена с 2 или более словами. Как я могу получить список слов, которые состоят из 3 или менее символов и встречаются в середине имени с 3 или более словами?

Например:

Озеро = Ничего не делать, только 1 слово
Золотое озеро = Ничего не делать, только 2 слова
Озера золота = Экстракт "из"

По сути, я хочу составить список «мусорных» слов для удаления при построении предложений метафонов.

Ответы [ 2 ]

3 голосов
/ 27 декабря 2010
SELECT  'Lake of gold' RLIKE '[[:<:]].+[[:>:]].+[[:<:]].{1,3}[[:>:]].+[[:<:]].+[[:>:]]'

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

0 голосов
/ 27 декабря 2010
SELECT * FROM mytable WHERE mycolumn REGEXP "[[:alnum:]]+[[:space:]]+[[:alnum:]]{1,3}[[:space:]]+[[:alnum:]]+";

найдет все записи, которые содержат как минимум одно слово длиной до 3 символов между двумя другими словами.

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

...