На главную

RiSearch Pro v.3.2 Manual

© С. Тарасов

Использование внешних парсеров

      В коммерческой версии скрипта имеется возможность использовать внешние программы для открытия файлов. Это позволяет индексировать различные форматы файлов - PDF, DOC, PS, некоторые типы архивов.

      Необходимо перечислить расширения файлов, которые будут обрабатываться внешними парсерами, в конфиге в переменной $ext_parser_ext. Напримет так:

 ext_parser_ext => 'pdf doc ps zip gz', 

      Затем для каждого расширения указывается какая программа будет использоваться для получения текста, содержащегося в файле. Для указания имени файла, который будет проиндексирован, используется строка "%file%".

 ext_parser_conf => { 
 'ext1' => 'command1 param %file%', 
 'ext2' => 'command2 param %file%', 
 'ext3' => 'command3 param %file%', 
 }, 

      Вы можете указать любые программы, кототые имеются в Вашем распоряжении, единственное необходимое условие - внешняя программа должна направить текст индексируемого файла на стандартный выход (STDOUT). Ниже приведены примеры для некоторых типов файлов.

      PDF (Portable Docement Format) - Существует несколько возможностей для получения текста из PDF файла. Можно воспользоваться пакетом xpdf (http://www.foolabs.com/xpdf/, (c) by Derek B. Noonburg). В нем присутствует утилита pdftotext, которая откомпилирована для различных платформ. Команда для запуска этой утилиты должна выглядеть так:

 'pdf' => '/path/pdftotext %file% -', 

      Вы можете также использовать утилиты, поставляемые вместе с GhostScript.

      DOC (MS Office Word) - для получения текста из doc файлов можно использовать утилиту antiword (http://antiword.cjb.net/, (c) 1998-2001 by Adri van Os).

 'doc' => '/antiword/antiword %file%', 

      Существуют и другие утилиты: catdoc (http://www.ice.ru/~vitus/catdoc/), word2x (http://word2x.alcom.co.uk/).

      Вы можете также индексировать некоторые типы архивов, но учтите, что ВСЕ содержимое архива будет считаться одним текстовым файлом, и если внутри архива содержатся другие бинарные файлы, это приведет к наличию мусора в индексе. Примеры для некоторых типов файлов приведены ниже:

 'zip' => 'pkunzip -c %file%', 
 'gz' => 'gzip -cd %file%', 
 'rar' => 'rar p %file%', 

      Не забудьте поставить кавычки вокруг %file%, если необходимо индексировать файлы с пробелами в названии.

Индексирование архивов

      Вместо индексирования всего содержимого архива как одного текстового файла, Вы имеете возможность проиндексировать файлы, содержащиеся в архиве, по отдельности. Добавьте нужные расширения в переменную "arch_ext" в файле конфигурации и для каждого расширения укажите команду, которую нужно выполнить, чтобы распаковать архив. Несколько примеров приведено ниже:

 'zip' => 'pkunzip -e -d %file% %temp_dir%', 
 'rar' => 'rar x -r %file% %temp_dir%', 
 'arj' => 'arj x -t %file% %temp_dir%', 

      Программа-распаковшик должна взять архив (%file%) и распаковать его во временную диекторию (%temp_dir%). Затем скрипт просканирует эту директорию и проиндексирует все файлы, соответствуюшие фильтру. В результатах поиска эти файлы будут отображены следующим образом: http://www.server.com/dir/archive.zip#file.htm. Если в архиве содержится другой архив, он также будет распакован и проиндексирован.



http://risearch.org С.Тарасов, © 2000-2003