|
|
|
| Полдня мучаюсь с поиском - не выходит. Помогите кто знает.
Есть таблица в ней поле (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;
| Или выводит весь текст, или не выводит ничего... :(
Что не так сделал? | |
|
|
|
|
|
|
|
для: Владимир22
(02.06.2011 в 19:47)
| | Вы хотите заставить MySQL выводить только часть строки? Проще вытащить строку и вырезать нужную последовательность средствами клиентского языка. СУБД плохо работают с ненормализованными данными, для таких поисков средствами MySQL следовало бы разбить эти строки и организовать несколько таблиц вместо одной большой.
>$rew=mysql_query("select table from base where table RLIKE '^луна'");
^ - это привязка к началу строки, чтобы искать в середине, нужно убрать. | |
|
|
|
|
|
|
|
для: cheops
(02.06.2011 в 19:55)
| | Так что, лучше вырезать весь огромный список и обрабатывать его как строку с помощью php?
Просто строка будет мега большой - пара миллионов слов.... ? | |
|
|
|
|
|
|
|
для: Владимир22
(02.06.2011 в 19:59)
| | Если вы хотите искать по этим данным, лучше пересмотреть структуру базу данных, предусмотрев для этих данных отдельную таблицу: одно значение - одна строка, места это будет занимать столько же, однако, поиск будет осуществляться значительно быстрее. | |
|
|
|
|
|
|
|
для: cheops
(02.06.2011 в 20:17)
| | Всё, спасибо огромное: пока решил проблему с php и preg_match (правда слов в базе пока только пару сотен)... Всё находит и выводит! | |
|
|
|