mggdbmsource. h Унаследованный от sourcedass, этот объект предоставляет доступ к MG и GDBM (описан выше).
mgppqueryfilter. h Унаследованный от query'filterclass, этот объект обеспечивает выполнение QueryFilter, основанного на MG++, улучшенной версии MG, написанной на C++. Обратите внимание, что Greenstone установлены, чтобы использовать MG по умолчанию, так как MG++ находится все еще в развитии.
mgppsearch. h Унаследованный от searchclass, этот объект обеспечивает выполнение Search /Поиска, используя MG++. Подобно mgppqueryfllterclass, он не используется по умолчанию.
rngq. h Интерфейс функционального уровня к пакету MG. Основные функции
- mg_ask () и mg_results ().
mgqueryfllter. h Унаследованный от queryfllterclass, этот объект обеспечивает выполнениеОиегуРШег, основанного на MG.
mgsearch. h Унаследованный от searchclass, этот объект обеспечивает выполнение Search, используя MG (описан выше.)
phrasequeryfilter. h Унаследованный от mgqueryclass, этот объект обеспечивает выполнение запроса, основанного на фразе. Он не используется в заданной по умолчанию инсталляции. Вместо этого mgqueryfllterclass обеспечивает эту возможность через функциональную поддержку от phrasesearch. h.
phrasesearch. h Функциональная поддержка проведения поиска по фразе, как операция постобработки.
querycache. h Используется searchclass и его унаследованными классами для кэширования результатов запроса, при генерации страниц поисковых результатов наиболее эффективен (описан выше.)
queryfllter. h Унаследованный от базового класса Filter filterclass, этот объект основывает базовый класс для объектов Query filter (описан выше.)
queryinfo. h Поддержка поиска: структуры данных и объекты содержат параметры запроса, результаты поиска документа и частоту встречаемости термина.
search. h Базовый класс Search объект searchclass (описан выше.)
source. h Базовый классЗоигсе объект sourceclass (описан выше.)
Таблица 18 Список запросов протокола | |
get_protocol_name() | Возвращает имя этого протокола. Выборы включают nullproto, corbaproto и z3950proto. Используется во время работы системы чувствительными к протоколу частями, чтобы решить, какие программы запустить на выполнение. |
get_collection_list() | Возвращает список коллекций, о которых этот протокол имеет сведения. |
has_collection() | Возвращает значение истины, если протокол может связаться с названной коллекцией, то есть это - в пределах списка коллекции. |
ping() | Возвращает значение истины, если успешно была установлена связь с названной коллекцией. В нулевом протоколе выполнение идентично has_collection() |
get_collectinfo() | Получает общую информацию о названной коллекции: когда она была сформирована, сколько документов она содержит и т. д. Также включает метаданные файла конфигурации коллекции: текст для страницы"аЪои1 this collection"; иконку коллекции и т. д. |
get_ftlterinfo() | Получает список всех Filters для названной коллекции. get |
filter_options 0 | Получает все варианты для специфического Filter в пределах названной коллекции. |
filter() | Поддерживает поиск и просмотр, для данного типа фильтра и параметров настройки, обращается к содержанию названных коллекций, чтобы воспроизвести результат, который отфильтрован в соответствии с параметрами настройки. Возвращенные поля данных также зависят от параметров настройки: примеры включают частоту встречаемости термина запроса и метаданные документа. |
get_document() | Получает документ или раздел документа. |
3.8 Протокол
Таблица 18 представляет список запросов функции к протоколу и резюме для каждого вхождения. Примеры в Разделе 3.3 охватили большинство из них. Функции, не упомянутые предварительно - has_collection (), ping (), get_protocol_name () и get_filteroptions (). Первые две обеспечивают ответы да\нет на вопросы "коллекция существует на этом сервере? " и "это выполняется? ". Цель двух других состоит в том, чтобы поддержать множественные протоколы в пределах архитектуры, которая распределена по различным компьютерам, а не только нулевой протокол, базирующийся на отдельно выполняемой программе, описанной здесь. Одна из них различает, какой протокол используется. Другая позволяет регистратору опрашивать сервер коллекции, чтобы найти, какие варианты поддерживаются, и непосредственно динамически выбирать конфигурации, чтобы использовать все преимущества услуг, предлагаемых специфическим сервером.
Рисунок 39 показывает API для нулевого протокола. Комментарии и некоторые подробности низкого уровня были опущены (см. исходный файл recpt/nullproto. h для получения подробностей).
Этот протокол наследовался от базового класса recptproto. Виртуальное наследование используется так, чтобы больше, чем один тип протокола, даже не задуманного, все же мог легко поддерживаться остальной частью исходной программы.
Рисунок 40 Использование cgiargsinfoclass из pageaction. cpp |
|
Это возможно, потому что объект базового класса recptproto используется всюду по исходной программе, за исключением точки конструкции. Здесь мы определяем фактическое разнообразие протоколов, которые мы желаем использовать, в нашем случае - это нулевой протокол.
За исключением get_protocol_name (), который не использует параметры и возвращает имя протокола как строку текста Unicode, все функции протокола включают параметр ошибки и выходной поток, как последние два аргумента. Параметр ошибки делает запись любых ошибок, которые происходят в ходе выполнения запроса протокола, а выходной поток используется для регистрации цели. Функции относятся к типу void - они не возвращают информацию как их заключительная инструкция, но вместо этого возвращают данные через определяемые параметры типа уже введенного параметра ошибки. В некоторых языках программирования такие подпрограммы были бы определены как процедуры, а не функции, но C++ не делает никакого синтаксического различия. Большинство функций использует имя коллекции как параметр. Три функции-члены, get_filteroptions (), filterQ, и get_document (), следуют за обеспечением параметра Request и получением результатов в параметре Response.
Заключительный уровень концептуальной модели - регистратор. Как только CGI-аргументы будут проанализированы, основная деятельность запускает на выполнение Action, поддерживаемую объектами Format и Macro Language. Они описаны ниже. Хотя они представлены как объекты в концептуальной структуре, объекты Format и Macro Language - не совсем являются объектами с точки зрения C++. В действительности, Format - коллекция структур данных с набором функций, которые оперируют ими, а объект Macro Language сформирован вокруг display class, определен в lib/display. h, с потоковой поддержкой конвертации от lib/gsdlunicode. h.
Таблица 19 Actions в системе Greenstone | |
action | Базовый класс для виртуального наследования. |
authenaction | Поддержка идентификации пользователя: запрос пользователю относительно пароля, если не был введен; проверка правильности; возможность предоставления пользователю повторного входа, если достаточное время истекло между доступами. |
collector action | Генерирует страницы для Collector (Создателя). |
documentaction | Отыскивает документы, разделы документа, части иерархии классификации или информацию для форматирования. |
extlinkaction | Переносит пользователя непосредственно к URL, который является внешним для коллекции, no-возможности сначала генерируя аварийную страницу (продиктованную установками Preferences). |
pageaction | Генерирует страницу вместе с макроязыком. pingaction Выясняет, интерактивна ли коллекция. queryaction Выполняет поиск. |
Statusaction | Генерирует страницы администрирования. |
tipaction | Выдает случайный совет для пользователя. |
usersaction | Добавляет поддержку, удаление и управление пользовательским доступом. |
Действия
Greenstone поддерживает одиннадцать действий, сведенных в Таблице 19.
CGI-аргументы являются необходимыми действиями формально объявленными в функции конструктора, использующими cgiarginfo (определенный в recpt/cgiargs. h). Рисунок 40 показывает выборку из pageaction функции конструктора, которая определяет размер и свойства CGI-аргументов а и р.
Для каждого CGI-аргумента конструктор должен определить его краткое имя (строки 2 и 10), которое непосредственно является именем CGI-переменной; полное имя (строки 3 и 11), которое используется, чтобы обеспечить более значимое описание действия; представляет ли это единственное или множественное символьное значение (строки 4 и 12); возможное значение по умолчанию (строки 5 и 13); что случается, когда задано больше чем одно значение по умолчанию (строки 6 и 14) (так как значения по умолчанию могут также быть установлены в файлах конфигурации); действительно ли значение сохраняется в конце этого действия (строки 7 и 15).
Так как это встроено в программу, web-страницы, которые детализируют информацию, могут быть сгенерированы автоматически. Statusaction производит эту информацию. Вы можете увидеть это, введя URL страницы администрирования Greenstone.
Двенадцать унаследованных действий созданы в main(), функция верхнего уровня для выполняемой программы library, определение которой дается в recpt/librarymain. cpp, там же, где был создан объект регистратора (определенный в recpt/receptionist. cpp).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |



