Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: MySQL: поиск в тексте части слова
 
 автор: Владимир22   (02.06.2011 в 19:47)   письмо автору
 
 

Полдня мучаюсь с поиском - не выходит. Помогите кто знает.
Есть таблица в ней поле (fulltext) , в которой большой многотысячный текст (список слов) в таком исполнении:
"арбуз=17 луна=12 дерево=82 слон=64...."
Как найти в этом огромной тексте по запросу "луна" подстроку "луна=12" ?
Пробовал по-разному:
#$rew=mysql_query("select table from base where table RLIKE '^луна'");
$rew=mysql_query("select table from base where MATCH (base) AGAINST ('луна*' IN BOOLEAN MODE)"); 
$res=mysql_result($rew, 0, 'res'); echo  $res;
Или выводит весь текст, или не выводит ничего... :(
Что не так сделал?

  Ответить  
 
 автор: cheops   (02.06.2011 в 19:55)   письмо автору
 
   для: Владимир22   (02.06.2011 в 19:47)
 

Вы хотите заставить MySQL выводить только часть строки? Проще вытащить строку и вырезать нужную последовательность средствами клиентского языка. СУБД плохо работают с ненормализованными данными, для таких поисков средствами MySQL следовало бы разбить эти строки и организовать несколько таблиц вместо одной большой.

>$rew=mysql_query("select table from base where table RLIKE '^луна'");
^ - это привязка к началу строки, чтобы искать в середине, нужно убрать.

  Ответить  
 
 автор: Владимир22   (02.06.2011 в 19:59)   письмо автору
 
   для: cheops   (02.06.2011 в 19:55)
 

Так что, лучше вырезать весь огромный список и обрабатывать его как строку с помощью php?
Просто строка будет мега большой - пара миллионов слов.... ?

  Ответить  
 
 автор: cheops   (02.06.2011 в 20:17)   письмо автору
 
   для: Владимир22   (02.06.2011 в 19:59)
 

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

  Ответить  
 
 автор: Владимир22   (02.06.2011 в 20:56)   письмо автору
 
   для: cheops   (02.06.2011 в 20:17)
 

Всё, спасибо огромное: пока решил проблему с php и preg_match (правда слов в базе пока только пару сотен)... Всё находит и выводит!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования