|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Поиск в MySQL |
|
Поиск в MySQL
|
![]() Пользователь Сообщения: 90 |
Извините, если повторяюсь с темой, поиск по форуму не работает у вас, а сортировка по теме возвращает 0 строк.
Вопрос по поиску в MySQL. Отсылаем запрос в БД SELECT text FROM main WHERE text LIKE '%как%' OR text LIKE '%все%' Возвращается всё поле text, которое довольно большое, что не удобно для пользователя, зачем ему вывод всего текста, ему нужно только * *слова %заданный запрос% слова. Т.е. как сделать, что бы перед и после искомой фразы стояло несколько слов, а всё остальное вырезалось. |
|
Отправлено: 11:32, 01-10-2004 |
Ветеран Сообщения: 659
|
Профиль | Отправить PM | Цитировать хм... может стоит внимательней взглянуть на mnogosearch?
|
Отправлено: 22:28, 07-10-2004 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать Vlad Drakula
я не очень поняла слово "рамены" =( По поводу regex в MySQL: http://dev.mysql.com/doc/mysql/en/Regexp.html Но человеку нужно, насколько я понимаю не это, а откусить кусок получающегося в результате запроса текста. То есть можно написать что-то вроде: SELECT SUBSTRING(str, FOR (LOCATE("substr",str)-15) FOR (CHAR_LENGTH("substr" ![]() (Тут из поля str, выбранному по *условиям LIKE '%"substr"%' AND... *будет показана часть, начинающаяся за 15 знаков до искомого патерна и включающая его и еще 15 знаков. Желающие заморачиваться дальше могут попробовать отлавливать пробелы между словами, чтобы выводить не обрезки слов, а слова целиком |
Отправлено: 00:22, 08-10-2004 | #12 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать "Битва Титанов"
![]() Правда битва есть суть оффтоп... кстати, я согласен с mar, мне тоже ближе философия выжимать из СУБД все до капли. Интересно, что тормознее при прочих равных условиях, MySql или PHP? ![]() |
------- Отправлено: 03:22, 08-10-2004 | #13 |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать Prisoner Это не битва титанов, а сплошной офтоп
![]() ![]() Но раз был задан еще один офтопный вопрос ![]() ![]() Тормознутость PHP и MySQL сравнивать сложно - это разные системы и сделаны для разных вещей (это вроде, как, если кит на слона налезет, то кто кого поборет ![]() во-первых, в PHP (не знаю, как в 5-ой версии, но подозреваю, что наследие осталось) не очень хорошо идет работа с массивами. Во-вторых, это все-таки интерпритатор (со всеми вытекающими по скорости)... Установка его модулем апача и zend-optimazer помогают, но суть остается. Про особенности работы СУБД с выборками я вроде уже как-то писала. - Большинству из них легче один раз поднять "тяжелый" (с точки зрения человека) запрос, чем терпеть постоянные мелкие дерганья маленькими запросиками в цикле. - Запросы обычно кешируются, отсюда дополнительный прирост в скоростях обработки. - СУБД для того и сделаны, чтобы не изображать их из PHP и им подобных. Можно написать свою собственную СУБД, но во-первых это будет долго, а во-вторых писать надо на чем-нибудь приличном (как минимум на C, еще быстрее работать будет вещь, написанная будет на ассемблере) - как показывает опыт лучше всего и быстрее всего в запросах отрабатывают вещи, напрямую идущие из понятий реляционной алшебры. Резюме - поддерживаю идею Цитата:
|
|
Отправлено: 16:05, 08-10-2004 | #14 |
![]() Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Да, mar. Такие вещи как кеширование запросов и др дают базам данных преимущество в данном споре, но мне кажется железо сегодня стало уже достаточно развитым и сильным, чтобы больше обращать внимание на нужды и привычки программиста. Реальная разница между подходами, как мне кажется, будет просматриваться только на уровне очень больших проектов, а в основном для веб программирования это не свойственно (сложные большие проекты, насколько я заметил, всё равно пишут на других языках и используют их через cgi-интерфейс). У меня в учебнике по с/с++ так и пишут, что развитие техники позваляет программисту использовать приёмы в программировании, обеспечивающие большею читабельность кода не обращая при этом на скорость его обработки. Я веду к тому, что мне удобней во многом использовать функции языка, чем инструменты базы. Для меня следущий код является слишком нечитабельным и "некрасивым": SELECT SUBSTRING(str, FOR (LOCATE("substr",str)-15) FOR (CHAR_LENGTH("substr")+15)) FROM что_то_там WHERE str LIKE '%"substr"%' AND... Вообще, конечно, соблюдение законов теории и их правильное использование-это правильно. Это как раз то, что отличает *такого программиста-любителя, как я, от профессионала. Просто я думаю, сегодня это уже не так критично, как лет 15 назад и сегодня программист может уже отступать от теории, от того, как это правильно в сторону как это "красивей". [s]Исправлено: vadimiron, 21:10 8-10-2004[/s] |
------- Отправлено: 23:09, 08-10-2004 | #15 |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать vadimiron
Во-первых признаю, что пример показанный мною - действительно достаточно уродлив, сбацан на скорую руку и только для показа возможностей строковых функций. Что касается осталного. Цитата:
О web-программировании и больших проектах: они вполне свойственны друг другу ![]() ![]() Что касается того, что было лет 15 назад, то мне почему-то кажется, что тогда были свои заморочки со своими отступлениями от теории ![]() ![]() Не берусь оценивать сказанное в учебнике по C++, скорей всего имелось в виду не наплевательство на скорость обработки кода, а сам подход к ООП (то есть классы со всеми их прибамбасами, облегчающие написание программ, хотя и скрывающие в себе прямой подход к проблеме ). Хотя что-то мне не припомнится подобных оговорок у Страбстраупа ![]() Кстати по поводу красивого кода отступлений и неотступлений: приведу пример работы *в среднем, или достаточно крупном проекте при работе с базами данных из ПХП: - набор классов ПХП (например на основе наследования от той же PHPlib), выстраивающихся по вертивали: - первый слой - структура базы (включая, если это не MYSQL, а хотя бы PostgreSQL VIEW и хранимые процедуры - следующий слой базовых классов (мы используем PHPLib) - дальше - что-то вроде мененджеров работы с базами данных - файлы обработки запросов форм и обработки результатов запросов при помощи вызова функций этих классов - мененджеров БД - шаблон вывода (пусть дизайнеры резвятся отдельно от программистов ![]() При такой структуре над одним проектом реально может работать группа из нескольких человек, причем одновременно. (При выполнении определенных соглашений по правилам написания кода, конечно). При этом сам файл обработки форм и результатов будет достаточнео коротким и читабельным. (Хотя, конечно, в скорости при такой многоступенчатой структуре несколько проигрываем. С другой стороны сильно выигрываем за счет слоя БД и максимального использования запросов ![]() И еще - MySQL все-таки не самый мощный из бесплатных СУБД. Учтите это ![]() |
|
Отправлено: 01:04, 09-10-2004 | #16 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
MySQL - MySQL & MySQL-Front | timon4ik | Программирование и базы данных | 2 | 06-04-2008 18:07 | |
Поиск статей по тексту и заголовкам в MySQL | Plutonium 239 | Вебмастеру | 9 | 17-02-2006 17:15 | |
Поиск в IE | Guest | Хочу все знать | 21 | 03-03-2004 09:52 |
|