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 и файл->файл соответственно.
Если параметр <command line> опущен, это означает, что два MIME-типа являются синонимами. Например, некоторые сайты отдают MP3 файлы с неправильным MIME-типом application/mp3. Вы можете исправить его на корректный audio/mpeg и тем самым обработать его:
Mime application/mp3 audio/mpeg
Воизбежание подвисания парсера при выполнении Вы можете указать в Вашем файле 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>
.
DataparkSearch может быть собран с библиотекой libextractor. При помощи этой бибилиотеки DataparkSearch может индексировать ключевые слова из файлов следующих форматов: PDF, PS, OLE2 (DOC, XLS, PPT), OpenOffice (sxw), StarOffice (sdw), DVI, MAN, FLAC, MP3 (ID3v1 and ID3v2), NSF(E) (NES music), SID (C64 music), OGG, WAV, EXIV2, JPEG, GIF, PNG, TIFF, DEB, RPM, TAR(.GZ), ZIP, ELF, S3M (Scream Tracker 3), XM (eXtended Module), IT (Impulse Tracker), FLV, REAL, RIFF (AVI), MPEG, QT и ASF.
Чтобы собрать DataparkSearch с библиотекой libextractor, установите библиотеку, а затем сконфигурируйте и соберите DataparkSearch.
Ниже приводится соответствие между типами keyword в libextractor версии до 0.6 и именами секций DataparkSearch:
Таблица 3-1. Соответствие между типами keyword библиотеки libextractor и именами секций DataparkSearch
Тип Keyword | Имя секции |
---|---|
EXTRACTOR_FILENAME | Filename |
EXTRACTOR_MIMETYPE | Mimetype |
EXTRACTOR_TITLE | Title |
EXTRACTOR_AUTHOR | Author |
EXTRACTOR_ARTIST | Artist |
EXTRACTOR_DESCRIPTION | Description |
EXTRACTOR_COMMENT | Comment |
EXTRACTOR_DATE | Date |
EXTRACTOR_PUBLISHER | Publisher |
EXTRACTOR_LANGUAGE | Content-Language |
EXTRACTOR_ALBUM | Album |
EXTRACTOR_GENRE | Genre |
EXTRACTOR_LOCATION | Location |
EXTRACTOR_VERSIONNUMBER | VersionNumber |
EXTRACTOR_ORGANIZATION | Organization |
EXTRACTOR_COPYRIGHT | Copyright |
EXTRACTOR_SUBJECT | Subject |
EXTRACTOR_KEYWORDS | Meta.Keywords |
EXTRACTOR_CONTRIBUTOR | Contributor |
EXTRACTOR_RESOURCE_TYPE | Resource-Type |
EXTRACTOR_FORMAT | Format |
EXTRACTOR_RESOURCE_IDENTIFIER | Resource-Idendifier |
EXTRACTOR_SOURCE | Source |
EXTRACTOR_RELATION | Relation |
EXTRACTOR_COVERAGE | Coverage |
EXTRACTOR_SOFTWARE | Software |
EXTRACTOR_DISCLAIMER | Disclaimer |
EXTRACTOR_WARNING | Warning |
EXTRACTOR_TRANSLATED | Translated |
EXTRACTOR_CREATION_DATE | Creation-Date |
EXTRACTOR_MODIFICATION_DATE | Modification-Date |
EXTRACTOR_CREATOR | Creator |
EXTRACTOR_PRODUCER | Producer |
EXTRACTOR_PAGE_COUNT | Page-Count |
EXTRACTOR_PAGE_ORIENTATION | Page-Orientation |
EXTRACTOR_PAPER_SIZE | Paper-Size |
EXTRACTOR_USED_FONTS | Used-Fonts |
EXTRACTOR_PAGE_ORDER | Page-Order |
EXTRACTOR_CREATED_FOR | Created-For |
EXTRACTOR_MAGNIFICATION | Magnification |
EXTRACTOR_RELEASE | Release |
EXTRACTOR_GROUP | Group |
EXTRACTOR_SIZE | Size |
EXTRACTOR_SUMMARY | Summary |
EXTRACTOR_PACKAGER | Packager |
EXTRACTOR_VENDOR | Vendor |
EXTRACTOR_LICENSE | License |
EXTRACTOR_DISTRIBUTION | Distribution |
EXTRACTOR_BUILDHOST | BuildHost |
EXTRACTOR_OS | OS |
EXTRACTOR_DEPENDENCY | Dependency |
EXTRACTOR_HASH_MD4 | Hash-MD4 |
EXTRACTOR_HASH_MD5 | Hash-MD5 |
EXTRACTOR_HASH_SHA0 | Hash-SHA0 |
EXTRACTOR_HASH_SHA1 | Hash-SHA1 |
EXTRACTOR_HASH_RMD160 | Hash-RMD160 |
EXTRACTOR_RESOLUTION | Resolution |
EXTRACTOR_CATEGORY | Ext.Category |
EXTRACTOR_BOOKTITLE | BookTitle |
EXTRACTOR_PRIORITY | Priority |
EXTRACTOR_CONFLICTS | Conflicts |
EXTRACTOR_REPLACES | Replaces |
EXTRACTOR_PROVIDES | Provides |
EXTRACTOR_CONDUCTOR | Conductor |
EXTRACTOR_INTERPRET | Interpret |
EXTRACTOR_OWNER | Owner |
EXTRACTOR_LYRICS | Lyrics |
EXTRACTOR_MEDIA_TYPE | Media-Type |
EXTRACTOR_CONTACT | Contact |
EXTRACTOR_THUMBNAIL_DATA | Thumbnail-Data |
EXTRACTOR_PUBLICATION_DATE | Publication-Date |
EXTRACTOR_CAMERA_MAKE | Camera-Make |
EXTRACTOR_CAMERA_MODEL | Camera-Model |
EXTRACTOR_EXPOSURE | Exposure |
EXTRACTOR_APERTURE | Aperture |
EXTRACTOR_EXPOSURE_BIAS | Exposure-Bias |
EXTRACTOR_FLASH | Flash |
EXTRACTOR_FLASH_BIAS | Flash-Bias |
EXTRACTOR_FOCAL_LENGTH | Focal-Length |
EXTRACTOR_FOCAL_LENGTH_35MM | Focal-Length-35MM |
EXTRACTOR_ISO_SPEED | ISO-Speed |
EXTRACTOR_EXPOSURE_MODE | Exposure-Mode |
EXTRACTOR_METERING_MODE | Metering-Mode |
EXTRACTOR_MACRO_MODE | Macro-Mode |
EXTRACTOR_IMAGE_QUALITY | Image-Quality |
EXTRACTOR_WHITE_BALANCE | White-Balance |
EXTRACTOR_ORIENTATION | Orientation |
EXTRACTOR_TEMPLATE | Template |
EXTRACTOR_SPLIT | Split |
EXTRACTOR_PRODUCTVERSION | ProductVersion |
EXTRACTOR_LAST_SAVED_BY | Last-Saved-By |
EXTRACTOR_LAST_PRINTED | Last-Printed |
EXTRACTOR_WORD_COUNT | Word-Count |
EXTRACTOR_CHARACTER_COUNT | Character-Count |
EXTRACTOR_TOTAL_EDITING_TIME | Total-Editing-Time |
EXTRACTOR_THUMBNAILS | Thumbnails |
EXTRACTOR_SECURITY | Security |
EXTRACTOR_CREATED_BY_SOFTWARE | Created-By-Software |
EXTRACTOR_MODIFIED_BY_SOFTWARE | Modified-By-Software |
EXTRACTOR_REVISION_HISTORY | Revision-History |
EXTRACTOR_LOWERCASE | Lowercase |
EXTRACTOR_COMPANY | Company |
EXTRACTOR_GENERATOR | Generator |
EXTRACTOR_CHARACTER_SET | Meta-Charset |
EXTRACTOR_LINE_COUNT | Line-Count |
EXTRACTOR_PARAGRAPH_COUNT | Paragraph-Count |
EXTRACTOR_EDITING_CYCLES | Editing-Cycles |
EXTRACTOR_SCALE | Scale |
EXTRACTOR_MANAGER | Manager |
EXTRACTOR_MOVIE_DIRECTOR | Movie-Director |
EXTRACTOR_DURATION | Duration |
EXTRACTOR_INFORMATION | Information |
EXTRACTOR_FULL_NAME | Full-Name |
EXTRACTOR_CHAPTER | Chapter |
EXTRACTOR_YEAR | Year |
EXTRACTOR_LINK | Link |
EXTRACTOR_MUSIC_CD_IDENTIFIER | Music-CD-Identifier |
EXTRACTOR_PLAY_COUNTER | Play-Counter |
EXTRACTOR_POPULARITY_METER | Popularity-Meter |
EXTRACTOR_CONTENT_TYPE | Ext.Content-Type |
EXTRACTOR_ENCODED_BY | Encoded-By |
EXTRACTOR_TIME | Time |
EXTRACTOR_MUSICIAN_CREDITS_LIST | Musician-Credits-List |
EXTRACTOR_MOOD | Mood |
EXTRACTOR_FORMAT_VERSION | Format-Version |
EXTRACTOR_TELEVISION_SYSTEM | Television-System |
EXTRACTOR_SONG_COUNT | Song-Count |
EXTRACTOR_STARTING_SONG | Strting-Song |
EXTRACTOR_HARDWARE_DEPENDENCY | Hardware-Dependency |
EXTRACTOR_RIPPER | Ripper |
EXTRACTOR_FILE_SIZE | File-Size |
EXTRACTOR_TRACK_NUMBER | Track-Number |
EXTRACTOR_ISRC | ISRC |
EXTRACTOR_DISC_NUMBER | Disc-Number |
Если секция из списка выше не указана в файле sections.conf, значение ключевого слова соответствующего типа будет записано как секция body
.
Тоже самое относится к ключевым словам неизвестно типа.
Для libextractor 0.6.x в качестве имен секций используются значения, возвращаемые функцией EXTRACTOR_metatype_to_string.
Пред. | Начало | След. |
ServerTable | Уровень выше | Остальные команды, используемые в indexer.conf |