DataparkSearch Engine 4.49: Поисковая машина; Справочное руководство | ||
---|---|---|
Пред. | Глава 3. Индексирование | След. |
DataparkSearch indexer может использовать внешние парсеры для различных типов файлов (mime types).
Парсер - это программа, которая конвертирует один из типов файла (mime type) в text/plain или text/html. Например, если у вас есть PostScript файлы, Вы можете использовать парсер (фильтр) ps2ascii, читающий из stdin PostScript файл и выдающий текст в ascci на stdout.
Indexer поддерживает четыре типа парсеров, такие что:
читают данные из stdin и выдают результат в stdout;
читают данные из файла и выдают результат в stdout;
читают данные из файла и помещают результат в файл;
читают данные из stdin и помещают результат в файл.
Конфигурирование типов файлов (mime types)
Сконфигурируйте Ваш веб-сервер на выдачу соответствующего заголовка Content-Type. Например, для apache, смотрите файл mime.types, большинство типов файлов уже указаны в нём.
Если необходимо индексировать файлы на локальной файловой системе, или используя протокол ftp используйте команду AddType в indexer.conf для привязки типа файла к расширению файлов. Например:
AddType text/html *.html
Добавление строк с определениями парсеров. Эти строки имеюют следующий формат с треми аргументами:
Mime <from_mime> <to_mime> <command line>
Например, следующая строка определяет парсер для man-страниц:
# Use deroff for parsing man pages ( *.man ) Mime application/x-troff-man text/plain deroff
Этот парсер будет получать данные из stdin и повещать результат в stdout.
Некоторые парсеры не могут работать с stdin, а требуют указания имени файла для чтения данных. В этом случае indexer создаёт временный файл в директории /tmp, который будет удалён после завершения работы парсера. Используйте макро $1 в командной строке парсера вместо требуемого имени файла. Например, команда Mimeдля конверотора catdoc, преобразующего файлы MS Word в ascii может выглядеть так:
Mime application/msword text/plain "/usr/bin/catdoc -a $1"
Если парсер записывает результат своей работы в файл, используйте макро $2. indexer заменить $2 на имя временного файла, запустит парсер, прочитает результат из этого временного файла, а затем удалит его. Например:
Mime application/msword text/plain "/usr/bin/catdoc -a $1 >$2"
Парсер выше будет читать данные из первого временного файла и записывать результат во второй временный файл. Оба временных файла будут удалены по окончании работы парсера. Заметим, что результат использования этого парсера будет абсолютно таким же, как и предыдущего, они отличаютя только сопсобом выполнения: файл->stdout и файл->файл соответственно.
Воизбежание подвисания парсера при выполнении Вы можете указать в Вашем файле indexer.conf число времени в секундах, отводимое на работу парсеру, при помощи команды ParserTimeOut. Напрмиер:
ParserTimeOut 600
Значение по умолчанию - 300 секунд, т.е. 5 минут.
Вы можете использовать конвееры в командных строках парсеров. Например, следующие строки необходимы при индексировании загнузипленых страниц man на локальном диске:
AddType application/x-gzipped-man *.1.gz *.2.gz *.3.gz *.4.gz Mime application/x-gzipped-man text/plain "zcat | deroff"
Некоторые парсеры могут выдавать результат в кодировке, отличной от указанной в команда LocalCharset. Указание кодировки парсера даёт возможность indexer перекодировать результат в нужную кодировку. Например, если catdoc сконфигурирован на вывод результата в windows-1251, а в LocalCharset указана кодировка koi8-r, используйте следующую команду для парсера документов MS Word:
Mime application/msword "text/plain; charset=windows-1251" "catdoc -a $1"
При выполнении парсера, indexer создаёт переменную окружения DPS_URL, содержащую URL обрабатываемого документа. Вы можете использовать эту переменную в Ваших скриптах парсеров.
RPM парсер от Mario Lang <lang@zid.tu-graz.ac.at>
/usr/local/bin/rpminfo:
#!/bin/bash /usr/bin/rpm -q --queryformat="<html><head><title>RPM: %{NAME} %{VERSION}-%{RELEASE} (%{GROUP})</title><meta name=\"description\" content=\"%{SUMMARY}\"></head><body> %{DESCRIPTION}\n</body></html>" -p $1
indexer.conf:
Mime application/x-rpm text/html "/usr/local/bin/rpminfo $1"
Он даёт такую информацию об RPM:
3. RPM: mysql 3.20.32a-3 (Applications/Databases) [4] Mysql is a SQL (Structured Query Language) database server. Mysql was written by Michael (monty) Widenius. See the CREDITS file in the distribution for more credits for mysql and related things.... (application/x-rpm) 2088855 bytes
catdoc конвертер MS Word в текст. Home page, также указан на Freshmeat
indexer.conf: Mime application/msword text/plain "catdoc $1"
xls2csv конвертор MS Excel в текст. Поставляется в пакете catdoc.
indexer.conf: Mime application/vnd.ms-excel text/plain "xls2csv $1"
pdftotext конвертор Adobe PDF в текст. Поставляется в пакете xpdf. Homepage, также указан на Freshmeat
indexer.conf: Mime application/pdf text/plain "pdftotext $1 -"
unrtf конвертор RTF в html. Homepage
indexer.conf: Mime text/rtf* text/html "/usr/local/dpsearch/sbin/unrtf --html $1 Mime application/rtf text/html "/usr/local/dpsearch/sbin/unrtf --html $1
xlhtml конверотор XLS в html
indexer.conf:
Mime application/vnd.ms-excel text/html "/usr/local/dpsearch/sbin/xlhtml $1"
ppthtml Конвертор PowerPoint (PPT) в html. Часть проекта xlhtml 0.5.
indexer.conf:
Mime application/vnd.ms-powerpoint text/html "/usr/local/dpsearch/sbin/ppthtml $1"
Использование vwHtml Конвертор MS Word (DOC) в html.
/usr/local/dpsearch/sbin/0vwHtml.pl:
#!/usr/bin/perl -w $p = $ARGV[1]; $f = $ARGV[1]; $p =~ s/(.*)\/([^\/]*)/$1\//; $f =~ s/(.*)\/([^\/]*)/$2/; system("/usr/local/bin/wvHtml --targetdir=$p $ARGV[0] $f");
indexer.conf:
Mime application/msword text/html "/usr/local/dpsearch/sbin/0wvHtml.pl $1 $2" Mime application/vnd.ms-word text/html "/usr/local/dpsearch/sbin/0wvHtml.pl $1 $2"
swf2html из Flash Search Engine SDK
indexer.conf:
Mime application/x-shockwave-flash text/html "/usr/local/dpsearch/sbin/swf2html $1"
djvutxt из djvuLibre
indexer.conf:
Mime image/djvu text/plain "/usr/local/bin/djvutxt $1 $2" Mime image/x.djvu text/plain "/usr/local/bin/djvutxt $1 $2" Mime image/x-djvu text/plain "/usr/local/bin/djvutxt $1 $2" Mime image/vnd.djvu text/plain "/usr/local/bin/djvutxt $1 $2"
Пожалуйста, присылайте Ваши скрипты и конфигурации для новых парсеров на адрес <dataparksearch@datapark.ru>.
Пред. | Начало | След. |
ServerTable | Уровень выше | Остальные команды, используемые в indexer.conf |