3.9. Внешние парсеры

DataparkSearch indexer может использовать внешние парсеры для различных типов файлов (mime types).

Парсер - это программа, которая конвертирует один из типов файла (mime type) в text/plain или text/html. Например, если у вас есть PostScript файлы, Вы можете использовать парсер (фильтр) ps2ascii, читающий из stdin PostScript файл и выдающий текст в ascci на stdout.

3.9.1. Поддерживаемые типы парсеров

Indexer поддерживает четыре типа парсеров, такие что:

3.9.2. Установка парсеров

  1. Конфигурирование типов файлов (mime types)

    Сконфигурируйте Ваш веб-сервер на выдачу соответствующего заголовка Content-Type. Например, для apache, смотрите файл mime.types, большинство типов файлов уже указаны в нём.

    Если необходимо индексировать файлы на локальной файловой системе, или используя протокол ftp используйте команду AddType в indexer.conf для привязки типа файла к расширению файлов. Например:

    
AddType text/html *.html
    

  2. Добавление парсеров

    Добавление строк с определениями парсеров. Эти строки имеюют следующий формат с треми аргументами:

    
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 и файл->файл соответственно.

3.9.3. Воизбежание зависания парсера при выполнении

Воизбежание подвисания парсера при выполнении Вы можете указать в Вашем файле indexer.conf число времени в секундах, отводимое на работу парсеру, при помощи команды ParserTimeOut. Напрмиер:


ParserTimeOut 600

Значение по умолчанию - 300 секунд, т.е. 5 минут.

3.9.4. Конвееры в командных строках парсеров

Вы можете использовать конвееры в командных строках парсеров. Например, следующие строки необходимы при индексировании загнузипленых страниц man на локальном диске:


AddType  application/x-gzipped-man  *.1.gz *.2.gz *.3.gz *.4.gz
Mime     application/x-gzipped-man  text/plain  "zcat | deroff"

3.9.5. Кодировки и парсеры

Некоторые парсеры могут выдавать результат в кодировке, отличной от указанной в команда LocalCharset. Указание кодировки парсера даёт возможность indexer перекодировать результат в нужную кодировку. Например, если catdoc сконфигурирован на вывод результата в windows-1251, а в LocalCharset указана кодировка koi8-r, используйте следующую команду для парсера документов MS Word:


Mime  application/msword  "text/plain; charset=windows-1251" "catdoc -a $1"

3.9.6. Переменная окружения DPS_URL

При выполнении парсера, indexer создаёт переменную окружения DPS_URL, содержащую URL обрабатываемого документа. Вы можете использовать эту переменную в Ваших скриптах парсеров.

3.9.7. Некоторые внешние парсеры

Пожалуйста, присылайте Ваши скрипты и конфигурации для новых парсеров на адрес .