Alex Tutubalin wrote:
>
> Привет еще раз
>
> Сразу для начала дискуссии :). Есть такая искалка - ht/dig.
> Я знаю, что для ее нормальной работы нужно какое-то количество патчей
> (выдача русских букв в ссылках в plaintext и подобное). Может ли
> кто-то поделиться патчами для версии htdig-3.1.0b1.tar.gz
> или указать какая версия правильная и так далее ?
htdig-3.1.0b2.tar.gz - работает по адресу
http://www.mpei.ac.ru/htdig/search.shtml
Там надо скорректировать русские слова в поисковых
выражениях, чтобы они не перекодировались дважды -
я просто пропустил выдачу htdig через фильтр и
никаких патчей (фильтр прилагается) - вызов
htsearch заменяется на search.cgi:
#!/bin/sh
ulimit -t 1 -c 0
/usr/local/httpd/koi/cgi-bin/htsearch |
/usr/local/httpd/koi/cgi-bin/htdig-conv
Патчей для него надо много, так как ошибок - туча,
но если не лазить куда не надо, то все работает,
за исключением того, что не работает. В списке
рассылки по htdig постоянно всплывают новые баги,
так что я решил вообще ничего не менять, только
пара мест (см. внизу). В новой версии, судя по
списку, появились новые глюки, так что я ее не
стал даже ставить. Еще одно исправление -
анализатор кодировки входного файла, но это я
сделал довольно некрасиво, если надо то пришлю.
Но, похоже, надо все документы считать документами
в cp-1251 (или другой), чтобы исключить
дублирование, так что особой нужды в таком
распознавателе нет. Общая ошибка htdig - параметры
из строки запроса воспринимаются не всегда так же,
как из конф. файла, была даже мысль генерировать
отдельный htdig.conf для каждого запроса.
//*****************************************************************************
// Server::Server(char *host, int port)
//
Server::Server(char *host, int port)
{
if (debug > 0)
cout << endl << "New server: " << host << ", " <<
port << endl;
_host = host;
_port = port;
_bad_server = 0;
_documents = 0;
/*KT*/
_disallow.IgnoreCase();
/*/KT*/
//
// Attempt to get a robots.txt file from the
specified server
//
...
//*****************************************************************************
// void Server::robotstxt(Document &doc)
// This will parse the robots.txt file which is
contained in the document.
//
void Server::robotstxt(Document &doc)
{
......
name = good_strtok(line, ":");
if (!name)
continue;
/*KT*/
while (name && isspace(*name))
name++;
/*/KT*/
rest = good_strtok("\r");
if (!rest)
rest = "";
........
--
Konstantin Tokar, http://www.mpei.ac.ru/tokar/
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.