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

Sveta Prokopeva

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

В базе есть тексты, например:
"Постарайтесь наиболее четко описать суть вопроса."
Нужно выбрать все тексты, содержащие заданное слово целиком. Но вот проблема запрос
select * from `index` where `value` regexp '*^наиболее$*' - не работает
Выдается ошибка "Got error 'repetition-operator operand invalid' from regexp"
А вот этот запрос
select * from `index` where `value` regexp '^постарайтесь$*' - работает
Но, к сожалению, начальное слово не всегда первое в строке. Возможно, ли составить запрос, который бы удовлетворял требованиям?
Помогите, пожалуйста, советом.
 

Sveta Prokopeva

Новичок
В этом случае выберутся тексты содержащие, например, "более" или "вопрос" и так далее.
 

Фанат

oncle terrible
Команда форума
гм. а мускулевских регэкспах крышка и доллар означают начало и конец слова?
 

Dovg

Продвинутый новичок
Если они помимо этого содержат "слово", то выберутся
а что? не должны?
можно реальный пример?
 

Sveta Prokopeva

Новичок
manual MySQL
Найти все имена, начинающиеся с 'b', можно при помощи символа '^', привязывающего шаблон к началу имени:
mysql> SELECT * FROM pet WHERE name REGEXP "^b";
Найти все имена, заканчивающиеся на 'fy', можно при помощи символа '$', привязывающего шаблон к концу имени:
mysql> SELECT * FROM pet WHERE name REGEXP "fy$";
Это я в мануальке вычитала.
Про звездочки в другом месте где-то, не могу уже сейчас что-то найти.

-~{}~ 03.04.07 11:27:

Dovg, ну пример достаточно реальный. Разницы нет если я приведу другое предложение.
Нужно только что бы выбиралось со словом целиком.
 

Фанат

oncle terrible
Команда форума
Найти все имена, начинающиеся с 'b',
при чём здесь "слово"?
В этом случае выберутся тексты содержащие, например, "более" или "вопрос" и так далее
ты хорошо подумала?
А, может, стоит попробовать сначала, а потом писать?
 

Фанат

oncle terrible
Команда форума
Dovg
так и "в не настоящем" тоже о словах ничего не говорится.
просто имя поля переведено на русский язык =)
 

Sender

Новичок
Sveta Prokopeva
SELECT 'слово1 слово2 слово3' REGEXP '([[:blank:]]|^)слово1([[:blank:]]|$)'
 

Sveta Prokopeva

Новичок
при чём здесь "слово"?
Под слово я стала переделывать.
ты хорошо подумала?
А, может, стоит попробовать сначала, а потом писать?
Ну само собой это был первый вариант который у меня отсеялся. Этот текст выберется даже если слово будет "стар", а нужно только что бы когда слово было введено целиком, то есть "постарайтесь".
 

Фанат

oncle terrible
Команда форума
в русском языке нет слова "стар".
зато слово "постарайтесь" имеет очень много других форм. которые не будут найдены.

поэтому я бы попросил привести описание задачи, для которой это понадобилось
 

Sveta Prokopeva

Новичок
Дед стар. Так что есть.
Это необходимо, что бы сделать примитивный поиск без поддержки русской морфологии. В таблице с текстами нужно выбирать те строки где в тексте содержится слово целиком.
Sender, что-то для меня это совсем не понятно. Там ведь даже таблички нет, и поля... Куда это сувать?

-~{}~ 03.04.07 11:51:

Dovg, спасибо за линк.
Вот это то что надо
mysql> SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]';
 

Sender

Новичок
Фанат
вроде бы не входят


[[:<:]]
[[:>:]]
действительно правильнее
 

Sveta Prokopeva

Новичок
alpine, наверное уже нет, Ведь я нашла решение )

Sender, мануал у меня шипко древний.
 

Dovg

Продвинутый новичок
Sveta Prokopeva
На том же сайте есть актуальный и более-менее русский
 
Сверху