The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Как обустроить ht://Dig (c) http://www.lexa.ru (search howto rus spell web)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: search, howto, rus, spell, web,  (найти похожие документы)
From : Alex Tutubalin <lexa@home.lexa.ru> Subj : Как обустроить ht://Dig (c) http://www.lexa.ru ------------------------------------------------------------------------------- <b>(c) http://www.lexa.ru<;/b> <h2 align=center>Как обустроить <a href="http://www.htdig.org">ht://Dig</a></h2> Всякий, кто создает развесистые русскоязычные WWW-серверы рано или поздно сталкивается с проблемой организации поиска по ним. К сожалению, выбор до сих пор невелик - <a href="http://www.comptek.ru">Yandex</a> стоит денег (есть lite-версия, но с очень ограниченным объемом данных), с <a href="http://www.openweb.ru/~dvd/rustem/rustem.html">Rustem/rwww</a> может справиться только его <a href="http://www.openweb.ru/~dvd/">создатель</a>, <b>glimpse</b> не понимает русской морфологии. Остаются <a href="http://mysearch.udm.net">UDMSearch</a> и <a href="http://www.htdig.org">ht://Dig</a>. Несмотря на то, что <code>UDMSearch</code> хвалят больше, сам я по привычке продолжаю использовать <code>ht://Dig</code>. Этот продукт не лишен недостатков, но после приложения некоторых усилий его таки можно использовать. Основное преимущество этой программы перед glimpse - это возможность использования словарей от ispell для генерации словоформ (склонений, спряжений и так далее). Естественно, это умеют и <b>Yandex</b> и <b>Rustem</b>, но прочие недостатки у них перевешивают это достоинство. <h3 align=center>Приборы и материалы</h3> Чтобы поставить ht://Dig, нам понадобится сама эта программа (берется с <a href="http://www.htdig.org">http://www.htdig.org<;/a> и русские словари. Я рекомендую использовать словарь <a href="mailto:swan@mch.chem.msu.su">Александра Лебедева</a> (берут с <a href="ftp://mch5.chem.msu.su/pub/russian/ispell/">ftp://mch5.chem.msu.su/pub/russian/ispell/<;/a>), т.к. словарь Владимира Роганова и Константина Книжника (второй из известных мне словарей для ispell) строит достаточно странные словоформы, пригодные для интерактивной проверки правописания, но непригодные, на мой взгляд, для автоматической генерации полного списка русских слов. <h3 align=center>Инсталляция</h3> Все написанное ниже относится к ht://Dig версии 3.1.5 и русскому словарю Лебедева версии 0.99c9. Более новые версии могут уже не содержать встреченных мной проблем. А проблемы эти таковы: <ol> <li><b>htfuzzy</b> (программа построения полного списка слов по словарю) предназначена для обработки ровно одного словаря. Если хочется использовать, например, и русский и английский, то этот недостаток нужно устранить. <li><b>Словарь Лебедева</b> (точнее, .aff-файл) предназначен для ispell и содержит конструкции вида <pre> У Т Ь &gt; -ТЬ,- # гнуть &gt; гну </pre> Что, наверное, совершенно правильно для ispell, но для htfuzzy это правило должно выглядеть как <pre> У Т Ь &gt; -ТЬ, # гнуть &gt; гну </pre> т.е. нужно заменить конструкции &quot;,- &quot; на просто запятую. <li><b>htsearch</b> выдает абсолютную ссылку на проиндексированный документ (с именем WWW-сервера и портом, если он отличен от 80). При использовании <a href="http://apache.lexa.ru">Russian Apache</a> с заданием кодировки в URL (по портам, по имени сервера и так далее) это неудобно - если клиент работает в кодировке, отличной от кодировки индексирования, то все ссылки на результаты поиска будут выданы ему не в его кодировке, а в кодировке, в которой производилось индексирование. </ol> Как водится, пришлось править по живому в результате чего возник такой набор патчей: <ul> <li><a href="htdig.patch1">Этот патч</a> запрещает htfuzzy переносить файлы базы данных словоформ из $TMPDIR (или /tmp) в ..../htdig/common. Соответственно, при последовательном запуске htfuzzy с разными исходными словарями база данных будет дописана. <li><a href="htdig.patch2">Этот патч к htsearch</a> удаляет префикс http://server:port из всех URL'ей, начинающихся с HTTP.<br> <b>Внимание</b>. Автоматически исчезает возможность индексировать несколько серверов!. Если нужен поиск по нескольким серверам, то проще всего, вероятно, индексировать URL'и с автоматическим выбором кодировки, тогда при обращении пользователя по ссылке с <b>&quot;результатов поиска&quot;</b> сервер (подразумевается использование Russian Apache) перекодирует все в кодировку клиента автоматически. <li><a href="htdig.patch3">Этот патч</a> выключает кодирование запроса в виде %AA-кодов в ссылках на &quot;другие страницы с найденными документами&quot;. </ul> Для тех, кому нужны все эти правки сразу, есть <a href="htdig.patch">общий патч</a>, объединяющий все 3 вышеописанных. Понадобятся исправления в файле описания русских аффиксов (хотел бы я знать правильное слово). Патч к версии 0.99c9 словаря Лебедева можно взять <a href="russian.aff.patch">здесь.</a>. Если не хочется патчить, то можно взять <a href="russian.aff">файл окончаний целиком</a>. htdig стоит распаковать, наложить патчи и поставить. В предположении, что htdig будет жить в /export/htdig, а файлы Apache живут в /export/apache, последовательность действий будет выглядеть как-то так: <pre> tar xzvf /path/to/htdig-3.1.5.tar.gz patch -p0 &lt; /path/to/<a href="htdig.patch">htdig.patch</a> cd htdig-3.1.5 ./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 </pre> Если вы не правили файл конфигурации (CONFIG) и не задавали --prefix для configure, то все будет поставлено в /opt/www. Если правили, то туда, куда вы указали. В дальнейшем я предполагаю, что все установлено в /export/htdig<p> Теперь следует сделать русский словарь: <pre> mkdir dict cd dict tar xzvf /path/to/rus-ispell-0.99c9.tar.gz make russian.dict russian.aff patch &lt;/path/to/<a href="russian.aff.patch">russian.aff.patch</A> cp russian.aff russian.dict /export/htdig/common </pre> <h3 align=center> Генерация баз данных со словарями</h3> мы уже внесли, остаток работы можно сделать таким вот <a href="runfuzzy.sh">скриптом</a> (он написан в предположении, что russian.aff и russian.dict уже находятся в /export/htdig/common, а файлы со словарями называются в htdig.conf words.aff и words.diff: <pre> endings_affix_file: /export/htdig/common/words.aff endings_dictionary: /export/htdig/common/words.dict </pre> Скрипт выглядит как-то так: <pre> #!/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 </pre> <p> Обработка словарей занимает несколько минут Pentium-III 550. <p> На этом подготовительный этап можно считать оконченным, запускать htdig/htmerge и использовать поиск. Конфигурационный файл у ht://Dig может быть, например <a href="htdig.conf">таким</a>. <p> Для индексирования нескольких сайтов с разными кодировками можно использовать <a href="http://www.tms.ru/~sergey/htdig/">правки Сергея Парфенова</a>.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Ваш комментарий
Имя:         
E-Mail:      
Заголовок:
Текст:





  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor