CNSearch 1.5.1
Создание плагина
Для создания плагина следует воспользоваться архивом 'plugin.zip', расположенным в папке '/manual' инсталляционного пакета. Данный файл содержит исходный код плагина, обрабатывающего текстовые файлы.
Для корректной работы в системе плагин должен иметь надлежащее расширение и обладать следующим набором функций:
Название функции |
Описание функции |
char *get_info(void) |
Возвращает строку - информацию о плагине (название) |
char *get_mime(void) |
Возвращает строку - список MIME TYPEs, обрабатываемых данным плагином и разделенных вертикальной линией "|" |
char* get_shortdesc(void) |
Возвращает строку - краткое название типа файла |
char* get_range(void) |
Возвращает строку - поле "Range" HTTP заголовка (см. RFC2068); если поле не используется возвращает значение NULL. |
char* get_title(void) |
Возвращает строку - название документа. При значении NULL отображается URL документа. |
TPluginWord* get_word(unsigned char *d, unsigned long filesize) |
Основная функция - возвращает указатель на структуру 'TpluginWord', содержащую слово, добавляемое к поисковому индексу. Данная функция должна возвращать слова, содержащиеся в документе последовательно.
|
Структура TpluginWord выглядит следующим образом:
typedef struct {
char word[32];
int rel;
bool end;
} TPluginWord;
где:
- word - слово с присоединенными значениями \0x00 справа; таким образом, максимальная длина слова равна тридцати двум символам.
- rel - релевантность слова; может варьироваться от 1 до 256. Рекомендуемые значения - от 1 до 4. В данном примере релевантность каждого слова равна 1, за исключением слова, состоящего из заглавных букв - его релевантность равна 2.
- end - имеет значение 'true', если в документе больше нет слов; в этом случае 'word' и 'rel' игнорируются.
Методы, используемые программой для генерации функций плагина:
- Функции get_info(), get_mime(), и get_shortdesc() вызываются один раз, при загружке плагина;
- Функция get_title() вызывается единожды для каждого документа, после чего вызывается функция get_word() для соответствующих документов до тех пор, пока поле 'end' структуры TwordPlugin не приобретает значение 'true'.