ENG/RUS   Главная :: RiSearch :: RiSearch Pro :: RiSearch PHP :: RiLax :: RuMor :: Forum

Введение :: Документация :: Купить :: License :: Системные требования

На главную

RiSearch Pro v.3.2 Manual

© С. Тарасов

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

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

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

 ext_parser_ext => 'pdf doc ps zip gz', 

      Если парсер создает HTML код (а не обычный текст) необходимо добавить данное расширение к следуюзему параметру:

 ext_parser_ext_html => 'pdf doc', 

      HTML теги в этом случае будут удалены перед индексацией.

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

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

      Параметры командной строки %file%, %out_file% and %temp_dir% будут заполнены скиптом во время индексации.

  • %file% - путь к файлу. При использовании спайдера скрипт создаст временный файл с данными для парсера, который затем будет автоматически удален.
  • %out_file% - если парсер не имеет возможности вывести текст на стандартный вывод, вы можете использовать этот параметр как путь к временному файлу. Скрипт прочтет текст из файла и автоматически удалит его.
  • %temp_dir% - некоторые парсеры во время работы создают файлы с изображениями в отдельных директориях. Данный параметр может использоваться как имя директории для картинок и других временных файлов. Затем все файлы и сама директория будут удалены.

      Вы можете указать любые программы, кототые имеются в Вашем распоряжении, единственное необходимое условие - внешняя программа должна направить текст индексируемого файла на стандартный выход (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