Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11634
Последний выпуск: 19.06.2015

CNSearch - Плагины (Plug-ins)

Плагины - это специально подключаемые модули, позволяющие гибко расширять функциональные возможности программы. В CNSearch плагины используются для индексации файлов разных форматов.

Плагины должны находится в одном каталоге с индексатором. В Unix и Linux версиях они имеют расшрение .so, в Windows - .dll. Если вы хотите отключить какой-нибудь плагин, вы можете переместить его в другой каталог.

На данный момент в дистрибутив входит три плагина, позволяющие индексировать файлы следующих форматов:

Имя файла в Unix/Linux версииИмя файла в Windows версииТип обрабатываемого документа
libtxt.solibtxt.dll*.TXT - текстовые файлы
librtf.solibrtf.dll*.RTF - файлы Rich text format
libdoc.solibdoc.dll*.DOC - файлы документов Microsoft Word

В версии 0.92 плагины не пытаются определять кодировку документов, ибо для большинства форматов этого и не надо.

Для документов обработанных плагинами поле "кодировка" заменяется на заданный в плагине текст, благодаря чему можно написать поисковый шаблон таким образом, чтобы выделить тип найденного документа. Вы можете посмотреть, как это сделано на сайте Новгородского Государственного Университета.

Во время запуска индексатор выводит список подключенных плагинов, например:

F:\1\bin\indexer>searchctl.exe localhost

CNSearch ver.0.92 [build 2073]
Compiled Вс 07.04.2002 under Microsoft Windows 2000 [Версия 5.00.2195]

Rebuilding URL list...Ok.
Loading library: RTF (Rich text format)
Loading library: TXT (Plain text)
Loading library: DOC (Microsoft Word document format)
http://www.test.ru/

Особая прелесть плагинов в том, что вы можете разработать свой плагин, для индексации файлов своего формата. Вы можете написать плагин, позволяющий осуществить поиск по картинкам и т.д.


Разработка плагинов

В дистрибутиве, в каталоге manual находится архив plugin.zip, содержщий исходный текст плагина для обработки текстовых файлов.

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

Название функцииОписание функции
char *get_info(void)Возвращает строку - информацию о плагине (его название)
char *get_mime(void)Возвращает строку - список MIME TYPE'ов, которые обрабатывает этот плагин, разделенных вертикальной чертой "|"
char* get_shortdesc(void)Возвращает строку - короткое название типа файла (ставится в то место, где у HTML файлов выводится кодировка)
char* get_title(void)Возвращает строку - title (Заголовок) документа. Если NULL, то вместо заголовка, будет подставлен URL документа
TPluginWord* get_word(unsigned char *d, unsigned long filesize)Основная функция - возвращает указатель на структуру TpluginWord, которая содержит слово, которое необходимо добавить в поисковый индекс. Эта функция должна последовательно вернуть все слова, которые содержит документ.
  • d - указатель на индексируемый документ. Документ заканчивается кодом \0x0
  • filesize - размер индексируемого документа. Используется, если сам документ может содержать код \0x0 (например Microsoft Word Document)

Структура TpluginWord выглядит следующим образом:

typedef struct {
	char word[32];
	int rel;
	bool end;
	} TPluginWord;

где

  • word - Слово, дополненное справа нулями \0x00. Отсюда видно, что максимальная длина слова - 32 символа.
  • rel - относительная релевантность слова. Может изменятся от 1 до 256. Рекомендуется использовать значения от 1 до 4. В примере каждое слово имеет релевантность 1, за исключением слова содержащее одни ЗАГЛАВНЫЕ буквы - его релевантность - 2.
  • end - true, если больше нету слов в документе. Если true, то значения word и rel игнорируются.

Теперь немного о том, как основная программа вызывает функции плагинов.

Функции get_info(), get_mime() и get_shortdesc() вызываются один раз, при загрузке плагина. Функция get_title() вызывается один раз для каждого документа, после чего для этого документа вызывается функция get_word() до тех пор, пока поле end структуры TwordPlugin не станет true.

Вообщем, удачи в написании плагинов, если есть какие-либо предложения - пишите.

Наверх

Назад | Оглавление | Далее

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог