WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




Поиск по сайту - нет ничего проще.


Прислал: Mike [ 27.11.2002 @ 10:09 ]
Раздел:: [ Веб-технологии ]


Для чего нужен поиск?

Удобство работы с Вашим сайтом и легкость при поиске нужной информации на нем являются важным моментом в процессе привлечения и удержания посетителей на сайте. Как известно, неудобство всегда отталкивает. И напротив, если посетителю будет легко и удобно работать с Вашим информационным ресурсом, то у него сложится хорошее мнение о сайте (и об его авторах) и он обязательно вернется через некоторое время.

Особенно остро стоит проблема быстроты и удобства поиска нужной информации, когда сайт содержит большие обьемы информации. В этом случае хорошим решением может оказаться использование поискового запроса по интересующей теме на сайте. Чтобы осуществить поиск по своему сайту Вам нужно использовать специальные скрипты (Perl, Php, ASP). Кроме того, что Вам потребуется знание и умение писать программы для одного из этих скриптов, также необходимо иметь возможность запускать их на выполнение. Как правило, можно использовать такие скрипты для работы сайта как при платном, так и бесплатном хостинге.

Программы.

Для этой цели существует масса программ и скриптов, есть платные, есть бесплатные. Вот их, неполный, список:

Мы будем пользоваться последней программой. Почему? Вот причины, по которым она мне понравилась больше других:

  1. Мне удалось запустить ее с первого раза;
  2. На настройку ушло менее 5 минут;
  3. Работает 100% автономно, не требует ни PHP, ни Perl. Даже не использует СУБД (MySql, PostgreSql, Oracle и др).

Но есть и недостатки:

  1. Программа платная (мы то с вами знаем, что это не недостаток, уже привыкли);
  2. Нет возможности обновить поисковый индекс (при менее 10 тыс документов это тоже не проблема).

Как работает поиск.

Первое, что необходимо усвоить - это то, что, при нажатии на кнопку "Искать" поиск производится не по страницам сайта, а по специальной базе данных - поисковому индексу.

Собственно, по этой причине установка поискового механизма состоит из двух частей:

  1. Индексация - построение поискового индекса;
  2. Установка фронтенда - системы быстрого поиска по индексу.

А теперь более подробно, по шагам.

Шаг 1 - где взять программу.

Программу можно взять по адресу //www.cn-software.com/download.xhtm. На момент написания статьи доступна последняя версия - CNSearch Pro 1.2

Уже на этой стадии Вам необходимо определиться, из под какой операционной системы будт произведена индексация, и какая операционная система установлена на том сервере, где будет установлен фронтенд.

Я производил индексацию со своего домашнего компьютера - по модему :) (из под Windows 2000), а фронтенд устанавливал на сервере ValueHost (операционная система FreeBSD 4.X)

Для распаковки я воспользовался архиватором WinRar (www.rarlab.com) - он успешно справился как с ZIP, так и с TAR.GZ архивами.

Шаг 2 - индексация.

После распаковки переходим в каталог "indexer" и настраиваем конфигурационный файл. У меня он получился такой:

1.	[Job localhost]
2.	[Index]
3.	URL          //fantasy.ok.nov.ru/
4.	Statistic    Append
5.	CharSet      ByHTTPHeader
6.	MaxFiles     300
7.	Exclude      .gif,.jpg
8.	[Job ludok]
9.	[Index]
10.	URL          //lud.ok.nov.ru/
11.	Statistic    Append
12.	CharSet      ByMetaTag
13.	MaxFiles     3000

Описание всех параметров можно найти в мануале, который включен в дистрибутив. (Правда он на английском языке, но я разобрался и без знания оного).

Конфигурационный файл содержит две задачи, первая с названием fantasy, а вторая - ludok. (Строки 1 и 8). Каждая задача содержит по одному действию - [Index] (строки 2 и 9)

Для первой задачи в строке 3 задается стартовый адрес, именно с него начнется обход сайта. В строке 4 указан параметр "Statistic Append", который говорит о том, что созданный после индексации отчет необходимо дописать в файл stats.log (может принимать значения "No" - не создавать отчета вообще, и "Overwrite" - перезаписать старый файл).

В строке 5 указан способ определения кодировки, возможны следующие варианты:

  • ByMetaTag - определять кодировку по тегу META content="charset".
  • ByHTTPHeader - определять кодировку по полю Content-Type HTTP заголовка, если поле не содержит информации о кодировке, то производится попытка определит ее по META тегу, если и там нет ни какой информации, то система считает, что кодировка windows-1251
  • win-1251 - Не определять кодировку, считать, что кодировка windows-1251
  • koi8-r - Не определять кодировку, считать, что кодировка koi-8

Из всего перечисленного пробовал только первые два пункта, проблем не возникло ни с тем, ни с тем. В строке 6 указано максимальное количество файлов, если файлов больше 300, то они не добавляются в поисковый индекс.

Ну и, наконец, в строке 7, через запятую, указаны исключения. Если имя файла содержит подстроку ".jpg" или ".gif", то они не индексируются. На самом деле, эта строка не несет никакой полезной нагрузки, так как индексатор сам определит, что jpeg и gif файлы даже скачивать не стоит.

Файл создали - теперь запустим сам индексатор и посмотрим, что он нам скажет:

C:cntestwindowsindexerindexer.exe fantasy

CNSearch ver.1.2 [build 4564]
Compiled Sat Nov 16 19:48:35 2002 under Microsoft Windows 2000 [Версия
5.00.2195]

Rebuilding URL list...Loading library: RTF (Rich text format)
Loading library: TXT (Plain text)
Loading library: DOC (Microsoft Word document format)
Loading library: XLS (Microsoft Excel document)
Loading library: MP3 (MPEG Layer 3 Audio)
Domain: fantasy.ok.nov.ru
[1/1] //fantasy.ok.nov.ru [200:9454]..Ok
[2/14] //fantasy.ok.nov.ru/news.htm [200:8738]..Ok
[3/15] //fantasy.ok.nov.ru/arda.htm [200:6278]..Ok
...
[32/34] //fantasy.ok.nov.ru/files/mmc.exe [302:268]
[33/34] //fantasy.ok.nov.ru/peoples/index.htm [200:13960]..Ok
[34/34] //fantasy.ok.nov.ru/peoples/asasd [200:13964]..Ok

О содержимом этих строчек ничего не сказано ни в readme.txt, ни в мануале, но я так полагаю, что две первые цифры в квадратных скобках - это, соответственно, порядковый номер документа и количество документов в очереди.

Потом идет URL индексируемой страницы, и опять в квадратных скобках код ответа сервера (200 Ok, 404 Not Found и т.д.) и размер индексируемого документа.

После того, как indexer закончит свою работу, Вы сможете увидеть четыре или пять файлов с расширением .cns:

  • index.cns
  • giles.cns
  • fulltxt.cns
  • doc.cns
  • stats.cns

Файл stats.cns я сразу удалил и больше о нем не вспоминал. Он содержал отчет о произведенной индексатором работе, а все остальные переместил в каталог cgi-bin на своем сервере.

Шаг 4 - Настройка Фронтенда

Теперь, из скачанного дистрибутива для FreeBSD я распакавал два файла:

freebsdfrontendsearch
freebsdfrontendsearch.htm

Первый - это откомпилированная программа поиска, а второй файл - это шаблон поисковой страницы. Эти файлы я тоже скопировал в каталог cgi-bin, и файлу search установил права на запуск (Для этого в FAR'e (www.rarlab.com) при соединении по FTP я нажал Сtrl-A и поставил галочку напротив первого "X")

После этого осталось только исправить файл search.htm, а при знании HTML - это дело техники.

Шаг 5 - тестирование системы

И наконец - тестовый поиск: //www.вашсервер.ru/cgi-bin/search?q=тест

Вот что у меня получилось: //search.novgorod.ru/search.php?q=%F2%E5%F1%F2&where=1

Список сайтов, по которым производится поиск можно посмотреть на этой странице: //search.novgorod.ru/searchat/




 :::::  Boroda пишет 28.11.2002 @ 17:07 
Спасибо! Просто супер! У меня заработал... на двух разных хостинговых площадках.
 :::::  Dmitry Zlygin пишет 29.11.2002 @ 19:50 
Статья так себе. Не объясняется толком, почему используется именно платная система. Скажем, mnogoSearch - очень удобный и продвинутый движок для поиска. И потом, согласен с Neter - обозвали бы статью как-то иначе.
 :::::  mike пишет 30.11.2002 @ 00:33 
> Это отстой.. Я то думал здесь что-то типа "как написать поисковик"..

Она бы тогда так и называлась.
А вообще вам тогда сюда: http://www.codenet.ru/progr/other/search/ ("Опыт написания поисковой системы.")
 :::::  WebFlyer пишет 30.11.2002 @ 14:15 
В своем роде очень приличная система, если индексируется все без разбора.

А наиболее продвинутый, имхо, поиск получается, если сайт полностью генерится из
базы и поиск производится в базе (база может быть любая, не обязательно реляционная :))
Такая система вполне годится для сайта с приличным и часто обновляемым контентом

По поводу отстоя - это личное дело каждого, считать, что отстой, а что - нет :)

[b]Чем плохо?[/b]
- Нужна база, количество коннектов к существующей базе ограничено.
- Нужен движок для сайта.

[b]Чем хорошо?[/b]
- всегда свежий контент
- легко написать синтаксический анализато
- в поиск не попадают страницы с мусором

[b]Что это дает?[/b]
- Сухой остаток контента, котороый и определяет нужность сайта. Для сайтов, в которых нет нормального наполнения, типа, поисковая система и не нужна.

 :::::  Stan пишет 03.12.2002 @ 12:37 
Полезная вещь для начала, но как ее "зарегить", чтобы убрать баннер?
 :::::  Steev пишет 13.12.2002 @ 16:27 
Может легче взять и написать поисковик по сайту на перле или пхп, чем мозги ебать?
 :::::  Venik пишет 18.12.2002 @ 00:16 
Напиши.
 :::::  mike пишет 18.12.2002 @ 09:51 
> Может легче взять и написать поисковик по сайту на перле или пхп,
> чем мозги ебать?

а может я пробовал и то и то ?
 :::::  amdest пишет 29.12.2002 @ 14:21 
Есть нелохая, бесплатная, 100% настраиваемая система.
Здесь: http://www.perlfect.com/freescripts/search/
Это не реклама. Просто как то натолкнулся, настроил, и всё заработало. Меня это особенно порадовало, т.к. огромного опыта ни в программировании, ни в администрировании не было тогда. В прочем как и сейчас...
 :::::  a1 пишет 04.01.2003 @ 18:13 
Спасибо mike. Я тоже думал, что тут чтото типа как написать поисковик. Давно искал.
 :::::  Бориска пишет 24.01.2003 @ 16:55 
Угу.. посмотрел я что у тебя получилось..

попробовал ...ввел слово..

пробовал на "завела" и "завел".. в первом случае есть результат - во втором - нет
так я и через "LIKE" сделаю
 :::::  balin пишет 04.02.2003 @ 15:47 
результат с LIKE
занеси вовременную таблицу с высоким рейтингом, потом
в цикле отними по одной букве до трех
и каждый раз туда же, только рейтингом поменьше
т.е.
завела - 4 (искомое слово)
завел - 3
заве -2
зав - 1
выбираешь по рейтингу, и любуешься результатом ;-)
а насчет индексирования с синтаксическим анализом, найди словарь Даля в базе, и так же сравнивай, будет работать долго, но ближе к истине
 :::::  A.S. пишет 09.03.2003 @ 21:02 
мда хреновастенько
 :::::  os2ok пишет 11.03.2003 @ 12:57 
бездарный текст, комментарии гораздо полезнее, за них - спасибо отдельное !
 :::::  Likeman пишет 16.03.2003 @ 22:36 
Кстати название статьи можно было немного изменить.
Первая мысль, какая родилась то это, как написать поисковик, а здесь описание уже готового.
Кстати у меня есть скриптик на PHP он выбирает ключевые слова из страницы :

// Функция выбора ключевых слов
function GetUniques($text)
{
$words=split("[[:punct:][:blank:]]+",$text);
$uniq=array();
$test=array();
foreach ($words as $v) {
if(!@$test[$v]) $uniq[]=$v;
$test[$v]=1;
}
sort($uniq);
return$uniq;
}


// Начинаем индексирование

// Это массив страниц $data

// Я например храню все в файле (files.dat) в таком виде URL|LINK|Коментарий
// Сам файл формируется другим скриптом, который пробегает по всем каталогам и ищет файлы
// по расширению *.html *.htm *.php *.shtml и записывает в файл files.dat в виде см.выше !
// коментарии берутся из <META name="decription" content="описание страницы">
// Эту часть я пропустил оставил только функцию выбора ключевых слов ! Как основа !


$data=file("files.dat");
$total=count($data);

for ($i=0;$i<$total;$i++){
list( $link,$fileread,$textss) = split( '\|', "$data[$i]" );

$f=fopen($fileread,"r");
$text=fread($f,filesize($fileread));
fclose($f);

$text=strip_tags($text);
$text=strtr($text,
"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ",
"абвгдеёжзийклмнопрстуфхцчшщъыьэюя");
$uniq=GetUniques($text);

$keyword=" ";
foreach ($uniq as $v) {
$keyword=$keyword.$v." ";
}
// А ТУТ РЕЗУЛЬТАТ НА ВЫХОДЕ
// $link - ссылкаm, $textss - текст этой ссылки, $keyword - список ключевых слова

// Далее все что угодно например
// ссылку можно формировать как есть <a href=$link>$textss</a>
// $keyword - ключевые слова через пробел !!!
// Можно например занести все в базу ! Или еще что на выбор !
// И другим скриптом искать по базе ...
}

Кстати саму функцию выбора я подсмотрел где-то !
В итоге, например есть база ключевых слов, и можно искать по ней ... ну к примеру ...



 :::::  Mike пишет 17.03.2003 @ 00:20 
В свое время, я написал около 6-ти разных поисковых механизмов. И на Perl, и на PHP и на C. Я попробовал готовые поисковые системы, и mnoGoSearch (он еще тогда назывался udmSearch), htDig, ZoomSearchEngine и почему-то остановил свой выбор именно на CNSearch.

2balin:
А как Ваш вариант с LIKE будет работать на таких словах: петь - поет, шел - идти, искать-найти
2Likeman:
>Кстати название статьи можно было немного изменить.
Ваши варианты?
>Кстати у меня есть скриптик на PHP он выбирает ключевые слова из страницы
идея не нова :) реализаций тоже много. Но способен этот поисковик будет искать по этим сайтам: http://search.novgorod.ru/searchat/ ???

Если вас интересует вопрос - как написать поисковую систему, то вам стоит посмотреть эти ссылки:
http://www.codenet.ru/progr/other/search/
http://www.codenet.ru/progr/other/search1/

 :::::  Mike пишет 17.03.2003 @ 00:20 
В свое время, я написал около 6-ти разных поисковых механизмов. И на Perl, и на PHP и на C. Я попробовал готовые поисковые системы, и mnoGoSearch (он еще тогда назывался udmSearch), htDig, ZoomSearchEngine и почему-то остановил свой выбор именно на CNSearch.

2balin:
А как Ваш вариант с LIKE будет работать на таких словах: петь - поет, шел - идти, искать-найти
2Likeman:
>Кстати название статьи можно было немного изменить.
Ваши варианты?
>Кстати у меня есть скриптик на PHP он выбирает ключевые слова из страницы
идея не нова :) реализаций тоже много. Но способен этот поисковик будет искать по этим сайтам: http://search.novgorod.ru/searchat/ ???

Если вас интересует вопрос - как написать поисковую систему, то вам стоит посмотреть эти ссылки:
http://www.codenet.ru/progr/other/search/
http://www.codenet.ru/progr/other/search1/
http://www.searchengines.ru/

 :::::  Likeman пишет 17.03.2003 @ 09:07 
>2Mike
Варианты - пожалуйста :
Установка и использования CNSearchPro для организации поиска на web-ресуре
Например .. Хотя это и не принципиально важно.
Да механизм сам не нов, не спорю, но бывают случаи, когда приминение собственных систем поиска куда эффективнее, нежели установка и отладка уже имеющихся.
Не совсем понятно, что хотел автор сказать вот этой фразой :
-= Носпособен этот поисковик будет искать по этим сайтам: http://search.novgorod.ru/searchat/ ??? =-
Вообще я просто показал лишь часть механизма, не более !

И почему вдруг решили, что поисковик не сможет произвести поиск по этим сайтам ??



 :::::  shaman пишет 12.06.2003 @ 12:26 
Так как обойти регистрацию?
 :::::  gomer пишет 09.12.2008 @ 12:06 
Не помню точно вроде бы подобный алгоритм рассматривался вот здесь http://www.delphiexpert.ru
 :::::  Илья пишет 14.01.2009 @ 22:18 
CNSearch вообще фигня
Имя:
Email:
URL

Введите сумму двух чисел девять и шесть (девять+шесть=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0339949