Форум → Программирование → PHP для идиотов → поиск по сайту
поиск по сайту
-
Здравствуйте!
вот, столкнулся с проблемой!
нужен поиск по сайту!
как любойй начинающий я пользуюсь конструкцией:
$query = "SELECT * FROM content WHERE (title LIKE '%" . mysql_real_escape_string($slovo) . "%' ) OR (text LIKE '%" . mysql_real_escape_string($slovo) . "%' )";
как бы все хорошо… НО!!!
мне нужно чтоб было как у гугла!
а точнее:
чтоб выводился кусок текста. результат чтоб был типа такого:
….. the most interesting and cognitive information on coffee from all over the world….
как вы догадались искомое слово это кофе
видите, текст тут обрезается и выводится отрывок…
и еще выводится только конкретный текст.
точнее если есть большая буква, то будет только с большой буквы…
идея есть - преобразовывать искомое слово через strtolower, strtoupper…
но как избавиться от повторений? -
9 февраля 2010 г. 13:18, спустя 24 минуты 14 секунд
http://www.symfony-project.org/api/1_4/TextHelper#method_excerpt_text
highlight_text а потом excerpt_text -
9 февраля 2010 г. 15:57, спустя 2 часа 38 минут 58 секунд
http://www.symfony-project.org/api/1_4/TextHelper#method_excerpt_text
highlight_text а потом excerpt_text
спасибо!!!
но по подробнее… че то я не понял…
highlight и excerpt это ведь не стандартные функции… -
-
9 февраля 2010 г. 16:20, спустя 3 минуты 32 секунды
ilma55,
Я не сторонник фреймворков (наверное зря). Я сделал бы примерное так. Точнее первая мысль такая.
Разбить найденный текст на слова (explode(' ', $text);)
Проверять каждый элемент массива (слово) на присутствие в нем искомого слова. Ведь у нас может быть и запятая рядом. И точка.
Если искомое слово есть в нашем элементе, то выделить его (str_ireplace($str, "<b>".$str."</b>", $text)) и записать порядковый номер массива.
Теперь сделать for от $i-$k до $i+$k, где и порядковый номер массива, в котором твое слово, к - сколько слов будет по сторонам от найденного. Объединяем эти слова через пробел.
Прибавляем точки справа и слева.
Примерно так. -
9 февраля 2010 г. 16:49, спустя 28 минут 24 секунды
VaseninM, я ж не заставляю его пользоваться всем Симфони. Пусть только этот Text_Helper возьмет оттудова.
По поводу посторений - я х3 -
9 февраля 2010 г. 17:59, спустя 1 час 10 минут 17 секунд
Абырвалг, я понимаю. Ну вот я ему свой вариант предложил. Ты свой. Я бы воспользовался твоим ибо разрабы симфони пишут качественнее, чем я. Хотя нет. Там наверняка используются другие встроенные в симфони функции. Ну в общем я думаю он и разбрется и, если будут вопросы, то спросит.Спустя 246 сек.Повторений чего? Это если слово встречается два раза? Это получается, нужно оба выделять. Ну если использовать мой вариант, то порядковый номер записывать несколько раз и выделять тоже несколько раз. В таком случае придется смотреть вариант, где края двух слов пересекаются.Спустя 73 сек.И вообще, наверное лучше юзать прег_реплейс… -
9 февраля 2010 г. 19:46, спустя 1 час 47 минут 30 секунд
ilma55, если индекс большой, юзай полнотекстовый поиск - MATCH (… -
-
10 февраля 2010 г. 1:26, спустя 3 часа 33 минуты 8 секунд
Sphinx рулит!https://smappi.org/ - платформа по созданию API на все случаи жизни -
-
11 февраля 2010 г. 15:17, спустя 1 день 1 час 52 минуты
я дико извиняюсь,а вот тут (на этом сайте) как реализован поиск??? -
11 февраля 2010 г. 15:27, спустя 9 минут 46 секунд
ilma55, сотня китайцев + 15 матричных принтеров + стеллаж 2x15 метров. -
11 февраля 2010 г. 15:28, спустя 1 минуту 27 секунд
я обожаю твои высказывания! :)
ilma55, сотня китайцев + 15 матричных принтеров + стеллаж 2x15 метров.Спустя 14 сек.ilma55, вот так http://adw0rd.ru/2009/smf-sphinx/https://smappi.org/ - платформа по созданию API на все случаи жизни -
11 февраля 2010 г. 15:31, спустя 2 минуты 31 секунду
я обожаю твои высказывания! :)
ilma55, сотня китайцев + 15 матричных принтеров + стеллаж 2x15 метров.Спустя 14 сек.ilma55, вот так http://adw0rd.ru/2009/smf-sphinx/
ага
я как раз и читаю это!
спасибо!
очень позновательно!
респект!!!
Пожалуйста, авторизуйтесь, чтобы написать комментарий!