| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() |
Как обустроить ht://Dig Всякий, кто создает развесистые русскоязычные WWW-серверы рано или поздно сталкивается с проблемой организации Остаются UDMSearch и ht://Dig. Несмотря на то, что UDMSearch хвалят больше, сам я по привычке продолжаю использовать ht://Dig. Этот продукт не лишен недостатков, но после приложения некоторых усилий его таки можно использовать. Основное преимущество этой программы перед glimpse — это возможность использования словарей от ispell для генерации словоформ (склонений, спряжений и так далее). Естественно, это умеют и Yandex и Rustem, но прочие недостатки у них перевешивают это достоинство. Приборы и материалы Чтобы поставить ht://Dig, нам понадобится сама эта программа (берется с http://www.htdig.org) и русские словари. Я рекомендую использовать словарь Александра Лебедева (берут с ftp://mch5.chem.msu.su/pub/russian/ispell/), т.к. словарь Владимира Роганова и Константина Книжника (второй из известных мне словарей для ispell) строит достаточно странные словоформы, пригодные для интерактивной проверки правописания, но непригодные, на мой взгляд, для автоматической генерации полного списка русских слов. Инсталляция Все написанное ниже относится к ht://Dig версии 3.1.5 и русскому словарю Лебедева версии 0.99c9. Более новые версии могут уже не содержать встреченных мной проблем. А проблемы эти таковы: ./configure --prefix=/export/htdig --exec-prefix=/export/htdig \ --with-cgi-bin-dir=/export/apache/cgi-bin \ --with-image-dir=/export/apache/htdocs/images \ --with-search-dir=/export/apache/htdocs/search make su root make install Если вы не правили файл конфигурации (CONFIG) и не задавали --prefix для configure, то все будет поставлено в /opt/www. Если правили, то туда, куда вы указали. В дальнейшем я предполагаю, что все установлено в /export/htdig mkdir dict cd dict tar xzvf /path/to/rus-ispell-0.99c9.tar.gz make russian.dict russian.aff patch </path/to/russian.aff.patch cp russian.aff russian.dict /export/htdig/common Генерация баз данных со словарями #!/bin/sh cd /export/group/htdig/common mkdir ../tmp TMPDIR=/export/group/htdig/tmp export TMPDIR rm $TMPDIR/* cp english.aff words.aff cp english.0 words.dict ../bin/htfuzzy -v endings cp russian.aff words.aff cp russian.dict words.dict ../bin/htfuzzy -v endings mv $TMPDIR/*db /export/group/htdig/common Обработка словарей занимает несколько минут на Pentium-III 550.
На этом подготовительный этап можно считать оконченным. Конфигурационный файл у ht://Dig может быть, например, таким: См. Рис. 1.
Для индексирования нескольких сайтов с разными кодировками можно использовать правки Сергея Парфенова —
database_dir: /export/htdig/db locale: ru_SU.KOI8-R start_url: http://www.lexa.ru:8100/apache-talk/ limit_urls_to: ${start_url} exclude_urls: /cgi-bin/ .cgi max_head_length: 10000 search_algorithm: exact:1,endings:1 endings_affix_file: /export/htdig/common/words.aff endings_dictionary: /export/htdig/common/words.dict maintainer: lexa@lexa.ru method_names: and "Все слова" or "Любое из слов" boolean "Язык запросов" nothing_found_file: /export/apache/htdocs/search/nomatch.html search_results_header: /export/apache/htdocs/search/header.html search_results_footer: /export/apache/htdocs/search/footer.html syntax_error_file: /export/apache/htdocs/search/syntax.html template_map: long long /export/apache/htdocs/search/template.html template_name: long next_page_text: <img src=/images/buttonr.gif border=0 align=middle width=30 height=30 alt=next> no_next_page_text: prev_page_text: <img src=/images/buttonl.gif border=0 align=middle width=30 height=30 alt=prev> no_prev_page_text: page_number_text: "<img src=/images/button1.gif border=0 align=middle width=30 height=30 alt=1>" \ "<img src=/images/button2.gif border=0 align=middle width=30 height=30 alt=2>" \ "<img src=/images/button3.gif border=0 align=middle width=30 height=30 alt=3>" \ "<img src=/images/button4.gif border=0 align=middle width=30 height=30 alt=4>" \ "<img src=/images/button5.gif border=0 align=middle width=30 height=30 alt=5>" \ "<img src=/images/button6.gif border=0 align=middle width=30 height=30 alt=6>" \ "<img src=/images/button7.gif border=0 align=middle width=30 height=30 alt=7>" \ "<img src=/images/button8.gif border=0 align=middle width=30 height=30 alt=8>" \ "<img src=/images/button9.gif border=0 align=middle width=30 height=30 alt=9>" \ "<img src=/images/button10.gif border=0 align=middle width=30 height=30 alt=10>" # # To make the current page stand out, we will put a border arround the # image for that page. # no_page_number_text: "<img src=/images/button1.gif border=2 align=middle width=30 height=30 alt=1>" \ "<img src=/images/button2.gif border=2 align=middle width=30 height=30 alt=2>" \ "<img src=/images/button3.gif border=2 align=middle width=30 height=30 alt=3>" \ "<img src=/images/button4.gif border=2 align=middle width=30 height=30 alt=4>" \ "<img src=/images/button5.gif border=2 align=middle width=30 height=30 alt=5>" \ "<img src=/images/button6.gif border=2 align=middle width=30 height=30 alt=6>" \ "<img src=/images/button7.gif border=2 align=middle width=30 height=30 alt=7>" \ "<img src=/images/button8.gif border=2 align=middle width=30 height=30 alt=8>" \ "<img src=/images/button9.gif border=2 align=middle width=30 height=30 alt=9>" \ "<img src=/images/button10.gif border=2 align=middle width=30 height=30 alt=10>" |
|
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
|