| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Продвижение и оптимизация сайтов > Поисковик |
| Автор: Urod 28.3.2005, 21:59 |
| На любом сайте существует поисковик по сайту. Как он делается? |
| Автор: PILOT 28.3.2005, 22:28 |
| Нет, Urod, не существует стандартного. Есть 2 типа поисковиков, первый ищет по базе данных, второй по всем файлам. В реализации они примерно одинаковы по сложности. СУВ. |
| Автор: dm9 29.3.2005, 03:12 | ||
А тебе не кажется, что в поиске по файлам добавляется дополнительный шаг - занесение слов в базу? Или как ты представляешь себе поиск по файлам? |
| Автор: PILOT 29.3.2005, 06:40 |
| В базу заносят мощные поисковики, где требуется искать по необъятному массиву сайтов, а когда по одному небольшому сайту, то заносить в базу не стоит, маловероятно что кто-то опять будет искать именно это слово, лучше пробежаться по файлам. СУВ. |
| Автор: dm9 29.3.2005, 12:23 |
| Может, я, конечно, чего-то не понимаю, но на хоть сколько-нибудь большом сайте "пробегаться" по файлам ты будешь сутки. Нужен индекс... |
| Автор: Urod 29.3.2005, 12:38 |
| Так, ну я ничего не поняла: исходя из ваших рассуждений существует, все-таки, ОДИН тип поисковика - по базе, в которую необходтимо занести все слова, по которым пользователь бует искать информацию???? Не понятно И, все-таки, есть ли шаблоны поисковиков? |
| Автор: dm9 29.3.2005, 12:50 |
| Сначала надо понять, что у тебя за информация, по которой надо выполнять поиск. Файлы? Или данные хранятся в БД? Что за формат хранения данных? Ну и так далее. Потом нужно выбрать оптимальное решение. Если не разбираешься в программировании, оптимальное решение - что-то вроде такого: http://vingrad.ru/search/ То есть воспользоваться услуагми Гугла или Яндекса. Очень распространённый подход. Хотя, наверное, есть готовые решения, которые можно поставить себе на сайт... Добавлено @ 12:52 Но это тебе уже не в вёрстку, а в PHP/Perl/... |
| Автор: Urod 29.3.2005, 17:25 |
| Самой бы понять, как это называется. Т.е. есть сайт и для удобства пользователей хотелось бы на нем видеть поисковик по словам, например, пользователь хочет найти что-то про "Цены" и он кидает в поиск слово "цены" и находит прайс-лист на одной из страниц этого сайта. Эээ, ну где-то так... |
| Автор: dm9 29.3.2005, 17:42 |
| Дубль два. Google и Yandex не устраивают? Многие сайты пользуются их услугами для создания поиска. Примеры: http://vingrad.ru/search/ http://podgoretsky.com/ (см. ссылку на поиск) Ещё видел на многих сайтах, но навскидку не вспомню что-то... |
| Автор: PILOT 29.3.2005, 19:17 |
| На большом сайте информация в таблицах уже сидит А по поводу индексов, да, пробежался разок и сложил в таблицу, а уже потом в ней ищещь. СУВ. |
| Автор: Urod 1.4.2005, 12:40 |
| А вот такой поиск, как на этой странице "Поиск" нельзя сделать? Или это совсем трудоемко и сложно (т.е. например, надо будет создавть какие-то БД - не поняла какие)? |
| Автор: dm9 1.4.2005, 14:22 |
| Здесь: http://forum.vingrad.ru/index.php?act=Search&f=64 поиск ведётся по информации, хранящейся в базе данных форума. Все сообщения тут хранятся в базе. Добавлено @ 14:24 А вот для этого: http://vingrad.ru/search/ тебе ничего кроме одной html странички добавить не понадобится. |
| Автор: Urod 1.4.2005, 15:35 |
| dm9 Мне просто так не нравится, что рядом с поиском будет слово "Google", причем для него надо будет и место дополнительное расчитать |
| Автор: dm9 1.4.2005, 15:42 |
| Воспользуйся услугами Яндекса. Там можно просто вставить форму - поле ввода и кнопку ОК. До 220 (кажется, так) запросов в сутки бесплатно. Можно ли обойтись без логотипа Гугла - не знаю... |
| Автор: Urod 2.4.2005, 18:52 | ||
| dm9 Вставляю в свою таблицу Яндексовскую форму (поправила только FORM name=web action=http://www.yandex.ru/yandsearch method=get> на название своего сайта), и аот, что получилось:
Не работает Где ошибка? |
| Автор: dm9 2.4.2005, 18:59 |
| Не, action - он для других целей создан Это так просто не делается. Поищи по Яндексу, там должна быть страничка о сотрудничестве. То есть где описывается, как поставить их поиск себе. И там подробные инструкции. Разумеется, твой сайт должен быть предварительно зарегистрирован в их поисковой системе. Поищи сама, если не найдёшь - я завтра гляну. |
| Автор: Urod 2.4.2005, 19:19 |
| dm9 О, как круто! Думала, поиск сдклать, потом к остальным страничкам приступить. Мне поку и регистировать нечего Т.е. когда сайт будет полностью готов, его надо будет зарегистировать в Ya и поискать условия сотрудничества. Понятно А в Гугле тоже надо будет через сотрудничество поиск ставить? Или поиск можно будет, как я сейчас сделала: просто скопировать себе в код? PS Представляю, как я тебя повеселила |
| Автор: dm9 2.4.2005, 19:24 |
| Да хз, на самом деле Я этим никогда сам не занимался. По логике, всегда надо спрашиваться, просто так пользоваться чужим поиском не получится Вот для Яндекса: http://www.yandex.ru/info/addyandex4.html http://www.yandex.ru/info/addyandex.html |
| Автор: Urod 2.4.2005, 19:31 |
| dm9 Эээ, что-то я запуталась: такой поиск будет искать НА МОЕМ сайте различные СЛОВА, которые могут быть расположены на разных странцых моего сайта, а САМ мой сайт в Инернете. Правильно? Т.е. если пользователь зайдет на мой сайт (на главную страницу), и не смотря весь мой сайт захочет посмотреть, например, на цены. Он конет в поиск слово "цены", и такой поиск отправит пользователя на нужную страницу моего сайта. Хочу так. |
| Автор: dm9 2.4.2005, 19:32 | ||
| Только советую зарегистрировать сайт как можно раньше. Но, разумеется, после того, как на нём появится контент. Время индексирования новых сайтов немаленькое - пара недель, насколько я знаю. Добавлено @ 19:34
Поиск, который предлагает Яндекс на страницах, которые я тебе написал выше, это поиск НЕ ТВОЕГО сайта, а ПО ТВОЕМУ сайту. То есть ты введёшь "цены", и на экране появятся ссылки ТОЛЬКО на твой сайт - на те страницы, где есть слово "цены". |
| Автор: dm9 2.4.2005, 19:45 |
| Вот, смотри пример: http://dm9.ru/vingrad/examples/html/yandsearch/ Это поиск по Винграду. Ссылка была заменена, старая ссылка не рабочая |
| Автор: Urod 2.4.2005, 20:34 | ||
Дубль три? Поняла, Спасибо огромное! |
| Автор: dm9 2.4.2005, 20:41 |
| |
| Автор: Urod 2.4.2005, 21:26 |
| К сожалению, не могу тебе добавить немного репутации (формально |
| Автор: Гость_Сергей 3.1.2006, 03:52 |
| Поисковый механизм для вашего сайта на PHP Текст скриптов и тестовых документов можно взять на сайте "ПРОГРАММЫ ДЛЯ БИЗНЕСА" Скачать исходные тексты>>> Представьте себе массу HTML документов лежащих в подкаталоге. Пускай ,например , это будет каталог договоров вашей организации , перегнанный в html формат и лежащий на интранет сервере вашей организации. Теперь представьте себе что договора раскиданы по папкам. Папки имеют вложенные папки ... Как в этом всем разобраться - а разобравшись не потеряться опять ? Очень просто ;-) Создайте поисковую систему по вашему сайту.. В этой статье пойдет речь о том как создать систему поиска по HTML документам на интранет - сайте вашей организации или ( или веб - сайте). Для начала о принципах работы системы. Каждый HTML документ, который включается в такую систему, должен иметь специальные мета - теги. Выбор их наименования зависит только от вас, но желательно использовать нестандартные - для обеспечения возможности корректировки ваших HTML документов стандартными средствами - например FrontPage 2000. В принципе это требование не есть обязательным - так как система поиска будет реагировать и на комментарии в тексте документа. Однако удобнее все-таки применять стандартные средства создания мета-тегов. Итак с чего же начать ? Начать можно с того что ничего не меняя в структуре вашей информации (месторасположении ваших файлов) , добавить в ваши html-документы следующие мета - теги: <html><head> <meta docsort="Договор"> <meta docname="Договор о совместной деятельности № 126 от 27.05.2001?."> ..Тут идут другие теги...... </head> Итак вы видите следующие мета - теги (еще раз напомню что выбор их имени полностью зависит от вас - но если вы хотите чтобы данная система поиска заработала как есть то примените вышеприведенные) * docname Здесь находиться описание вашего документа. Фактически поиск идет по этому полю так что надо быть внимательным заполняя его. (Хоть можно ввести и дополнительное поле поиска по ключевым словам ) ) * doctype - Вид документа . Здесь вы можете написать что-то вроде кодифицированного вами типа документа например "Договор" , "Приложение", "Контракт" ... По этому полю также ведется поиск (перед решающим сравнением эти два поля "склеиваются" через пробел в одну строку) * Кроме этих вы можете задействовать в поиске и другие мета теги. Структура поисковой системы выглядит следующим образом : * Форма поиска --> Get запрос --> программа на PHP выводящая результаты поиска в виде HTML документа. В качестве связующего звена при поиске используеться механизм GET запроса. При котором строка поиска будет передана в строке адреса html документа. Форма для поиска может быть самой простой , например : <html> <body> <form name="main" action="find.php" method="GET"> <input size="25" name="s" value="php"> <input type=submit value="Поиск"> </form> </body> </html> Внешний вид формы поиска Начало формы Конец формы После того так вы нажимаете на кнопку "Поиск" переменная "s" через GET запрос отправляется в программу поиска написанную на PHP. В этой программе используеться "готовый" класс , в котором собственно и сосредоточена вся функциональность поисковой системы. Приведем сокращенный текст класса поисковой системы (который удобно разместить в отдельном файле вместе с функциями использующимися в этом классе). //Исходный текст можно Скачать на сайте "Программы для Бизнеса". class search{ //Переменные класса пропущены см. в архиве function close_search()//Пропущена см. в архиве //====Рекурсивный проход по каталогу==== function return_htmls($s_in_dir,$what_meta_name,$in_meta_name) { //Исключаем служебные каталоги FrontPage if (preg_match("/_vti[.]*/i",$s_in_dir)){return;} if ($dir_handle = @opendir($s_in_dir)) { while($file = readdir($dir_handle)) { //Рекурсивный проход по директориям если текущий файл - это директория if ($file!=".." && $file!="." && is_dir($file)) { $this->return_htmls($s_in_dir."/".$file,$what_meta_name,$in_meta_name); } //Проход по *.ht* файлам в одной директории if (!is_dir($file) && $file!=".." && $file!="." && preg_match("/[.]*\.ht[.]*/i",$file)) { // Получаем мета-тег docsort // Функция cyr_up (см. В архиве ) служит для приведения // маленьких символов кириллицы к прописным и для // замены совпадающих символов кириллицы и латинского алфавита // на латинские прописные $str_meta_sort=cyr_up(GetMeta("docsort",$s_in_dir."/".$file)); //Если задан поиск по мета-тегам (иначе не будет поиска) //Введено для возможности расширения функций программы if ($in_meta_name){ //Имя без типа - для вывода $str_meta_name=cyr_up(GetMeta("docname",$s_in_dir."/".$file)); //Включаем тип документа - для поиска $str_meta_name1=$str_meta_name." ".$str_meta_sort; //Создаем массив токенов (слов) из входного запроса (переменной формы) $token_arr=split('[+ ]',$what_meta_name); //Убиваем повторяющиеся токены $token_arr=array_keys(array_count_values($token_arr)); //Количество присутствующих в строке токенов $tok_founded=0; //Всего токенов найдено $all_founded=0; //Поиск for ($j=0;$j<count($token_arr);$j++) { if ($all_founded+=preg_match_all("/".cyr_up($token_arr[$j])."/i",cyr_up($str_meta_name1),$matches_arr)) $tok_founded++; } //Вывод токенов if ($tok_founded==count($token_arr) && strlen(trim($what_meta_name))!=0 && strlen(trim($str_meta_name))!=0){ //Тут выделяем токены красным цветом for ($j=0;$j<count($token_arr);$j++) { $str_meta_name=preg_replace("/(".cyr_up($token_arr[$j]).")/i","<font color=\"red\">\\1</font>",cyr_up($str_meta_name)); $str_meta_sort=preg_replace("/(".cyr_up($token_arr[$j]).")/i","<font color=\"red\">\\1</font>",cyr_up($str_meta_sort)); } echo "<li><p class=\"B\"><a class=\"n\" href=\"".$s_in_dir."/".$file."\">/$this->count.<b>$str_meta_sort</b> \"$str_meta_name\" /$all_founded/</a></li><br></p>\n"; $this->found_in_metaname++; $this->count++; } } } } closedir($dir_handle); } } //end class } ?> <html> <link rel="stylesheet" type="text/css" href="css/sm.css"> <body> <? $qu = getenv("QUERY_STRING");parse_str(substr($qu,0,100)); if (!isset($s)){$s="";}; //echo (); $s=preg_replace("/[\\041-\\055\/]*/","",$s); $s=preg_replace("/\./","\\\056",$s); $show=new search; $show->count=1; $show->found_in_metaname=0; $show->return_htmls(".",$s,1); $show->close_search(); ?> </body> </html> Для перебора всех файлов в каталоге класса return_htmls(".",$s,1); В качестве параметров ей передаеться имя начального каталога (с которого начинать обход) , поисковая строка и флаг (поиск в мета - тегах) который должен быть равен 1 - для поиска в мета тегах. * Алгоритм работы функции следующий: Функция проходит текущий каталог и если находит файл то берет его мета- теги и ищет в них ключевые слова. Поиск ведеться с помощью RegExp -ов следующим кодом: //Поиск for ($j=0;$j<count($token_arr);$j++) { if ($all_founded+=preg_match_all("/".cyr_up($token_arr[$j])."/i",cyr_up($str_meta_name1),$matches_arr)) $tok_founded++; } Функция preg_match_all производит Perl-совместимый полный поиск в мета - тегах документа ( $str_meta_name1) * Если слова найдены то выводит производиться "подсветка" мета-тегов с помощью : for ($j=0;$j<count($token_arr);$j++) { $str_meta_name=preg_replace("/(".cyr_up($token_arr[$j]).")/i","<font color=\"red\">\\1</font>",cyr_up($str_meta_name)); $str_meta_sort=preg_replace("/(".cyr_up($token_arr[$j]).")/i","<font color=\"red\">\\1</font>",cyr_up($str_meta_sort)); } Используется функция функция замены по регулярному выражению preg_replace () которая производит замену найденых токенов на них же только выделенных красным цветом (<font color=\"red\">\\1</font>) * и вывод в html ссылки на документ. В конце выводиться количество найденых токенов в мета - тегах документа. * Если же файл являеться директорией то функция вызывает саму себя но в качестве параметров передает уже новое имя директории + флаги поиска : if ($file!=".." && $file!="." && is_dir($file)) { $this->return_htmls($s_in_dir."/".$file,$what_meta_name,$in_meta_name); } * Цикл продолжается пока не будут пройдены все файлы и каталоги указанные при вызове функции. Поиск ведеться по нескольким словам. Для разбиения поисковой фразы на токены (слова) применяется следующий код: * //Создаем массив токенов (слов) из входного запроса (переменной формы) $token_arr=split('[+ ]',$what_meta_name); * //Убиваем повторяющиеся токены $token_arr=array_keys(array_count_values($token_arr)); Повторяющиеся токены забираются как для того чтобы ускорить поиск , -так и для того чтобы не было ошибок при выделении токенов в результатах поиска. * Ссылки по теме: - Текст скриптов из данной статьи можно взять в архиве сайта Скачать >>> - Статьи по PHP на сервере "Программы для бизнеса" Перейти >>> - Раздел "ИнтраNET" на сервере "Программы для бизнеса" Перейти >>> - Раздел "Программирование" на сервере "Программы для бизнеса" Перейти >>> В конце статьи хочется отметить что программа работает как на Windows так и на UNIX , благодаря применению функций приведения мета-тегов и строки запроса к верхнему регистру. Кроме того из поиска исключаться стандартные каталоги FrontPage 2000 (с помощью: if (preg_match("/_vti[.]*/i",$s_in_dir)){return;} ). Сойдет? еще поищи на www.woweb.ru[color=blue][/color] |
| Автор: R.M. 16.1.2006, 10:30 |
| Urod Ты просто код с яндекса скопировала или нашла раздел где предлогают поставить их поиск к себе на сайт? Насчёт гугля незнаю, но мне кажется ставить их логотип или нет - твоё дело - был <img> нет <img> Добавлено @ 10:34 DrNemo Зайди на яндекс и поищи штонить - он через гет ищет |
| Автор: kpk17 17.9.2006, 21:14 |
| почитал на сайте яндекса про поиск, но всеравно чето открывается все в окне яндекса, а можно ли сделать так чтобы открывались найденные слова в окне моего сайта? подскажите как сделать это. очень нужно. что почитать.как сделать как можно легче |
| Автор: R.M. 18.9.2006, 14:18 |
| kpk17, пиши свой, будет у тебя открываться, а я ндексовский на яндексе будет как не крути |
| Автор: kpk17 18.9.2006, 16:02 |
| если не секрет то как? |
| Автор: DemoCode 18.9.2006, 16:35 |
не обязательно, в яндексе есть платная услуга - результаты поиска будут отдаваться в xml формате, а ты делай с ними что хочешь. |
| Автор: R.M. 18.9.2006, 19:38 |
| kpk17, php+mysql - как вариант. |
| Автор: Illuminaty 18.9.2006, 21:06 |
| Что-то тема не совсем для верстки... Модератор: перенес в Web-технологии |