Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #28, МАРТ 2003 г.

RiSearch - замути свой поиск

Алексей Б. Беляев aka Alexys

Спецвыпуск Xakep, номер #028, стр. 028-032-3


template.htm - шаблонная страница для выдачи результатов поиска;

searchbox - вариант поисковой формы.

Зная, что зачем, можно переходить к отдельным элементам. Начало тюнинга движка начинается с конфиг-файла - config.pl.

Настройка config.pl

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

$base_dir="../html" #путь к папке, файлы которой надо проиндексировать

$base_url="http://winfo/" #адрес стартовой страницы

Следующие переменные нужны только для тех случаев, когда будет использоваться spider.pl. О них немного ниже.

$file_ext = 'html txt htm shtml'; #расширения файлов, которые будут индексироваться

$no_index_files = 'robots.txt index.txt'; #файлы, которые надо скрыть от посторонних глаз

$use_selective_indexing = "YES"; #включается возможность опускания при индексировании строк

#метки начала и конца мест, которые индексировать не надо

%no_index_strings = (

q[<!--] => q[<-->],

);

# метод отыскания совпадений в базе ключевых слов

# 1 - по целому слову

# 2 - по началу слова

# 3 - по строке

$INDEXING_SCHEME = 2; # из-за наличия падежей в русском языке предпочтительнее 2-ой метод

$res_num=10; #количество результатов поиска, выводимых на одной странице.

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

Доведение до ума index.pl

Скрипт index.pl вносит в базу адрес файла, который индексирует. Затем, после обработки запроса юзера, будет выдаваться ответ в виде "http://winfo/arts/diskandcache.txt". Если бы это были готовые html-страницы или просто текст (без картинок и прочего), то было бы достаточно. Но ведь твои текстовые файлы обрабатывает скрипт - перед тем как выдать в результате нормальные разметанные страницы с картинками и комментариями к ним (см. прошлый номер СПЕЦа). В таком случае надо просто немного довести до ума скрипт index.pl. В свое время самому пришлось раздумывать над тем, что можно сделать. И придумал вот что.

Как оказалось, index.pl заносит в файл "0_finfo" через 2 двоеточия (::) следующее: адрес::размер::заголовок (для html-страниц)::краткое описание. Это можно понять из строки "print FINFO $url,"::",$size,"::",$TITLE,"::",$descript,"\n";", которая как раз отвечает за запись в файл keyword'ов. Так как все заносимое может пригодиться, а проблема только в адресе, то надо только ее и решить. Благо перл могуч регулярными выражениями, так что преобразовать адрес текста во что-то ему подобное, но немного отличающееся не составит труда.

Если, к примеру, надо выдать результат запроса в виде "http://winfo/cgi-bin/arts.pl?art=somename&act=read" (см. СПЕЦ №2), то перед строкой "print FINFO $url,...." надо провести пару операций над $url, а еще лучше добавить еще одну переменную, которая и будет заноситься в БД. Положим, что все файлы, которые надо проиндексировать, находятся в папке "../html/arts/". Одним из адресов документов является "$url=http://winfo/arts/diskandcache.txt", т.е. путь к местоположению файла на хосте. При вводе в адресной строке этого адреса откроется в броузере текстовый файл. Вот этот адрес надо преобразовать.

Назад на стр. 028-032-2  Содержание  Вперед на стр. 028-032-4