ПРАКТИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ВЫДЕЛЕНИЮ ВИРТУАЛЬНЫХ БАЗ
Уточняющий запрос может состоять из одного или нескольких терминов. Тем не менее, для повышения скорости выполнения и наибольшей простоты целесообразно задавать в нём только один термин относящийся к специально сформированному словарю. В СЗТУ, например, для авторефератов, например, в fst создаётся термин "VB=AREF":
1903 0 MHL,if s(v900^c,v900^2,v900^3,v900^4):'m' then 'VB=AREF' fi,
Проще всего задавать уточняющий запрос непосредственно в параметре S21ALL той формы, которая будет использоваться для поиска в виртуальной базе. Тем не менее, в СЗТУ содержимое этого поля открыто для пользователей и там формируется поисковый запрос из терминов отобранных в словаре. Для того чтобы уточняющий запрос никого не смущал его, было решено добавлять через CGIFLK.PFT. Для этой задачи использован следующий код:
if v2='S' and v1020<>'' and v6<>'' then
if v6:s('VB=',v1020) then else
'S21All=',v6,'*(<.>VB=',v1020,'<.>)'/
fi,
fi,
Для выделения виртуальной базы в irbisXX.ini не обязательно создавать раздел с псевдонимом, но это обеспечивает большую наглядность и упрощает администрирование. Следует учесть только одно простое правило: для всех виртуальных баз параметр DBName= должен быть общий и содержать название реальной, физической базы. Например:
[VIDEO_EX]
FRAMES=C:\irbis\web\frames_r\Video\Search\
ShowFrames=header_1.frm,menu.frm,extended.frm,footer_7.frm
DictionryFrames=header_dict.frm,RESULT,footer_dict.frm
DICT_FORMAT=web_dict_sel
DBName=NWPIB
Остаётся только одна проблема: как система должна отличать виртуальные базы от физических? При каких условиях в поисковых формах должен формироваться параметр S21ALL, а при каких нет? Теоретически это может решаться при помощи параметра-индикатора. Я решил задавать в этом параметре термин словаря, соответствующий виртуальной базе, хотя теоретически можно было ограничиться значениями true или false. Термин словаря у меня совпадают с псевдонимами баз.
Наконец, чтобы создать у пользователя полную иллюзию того, что подмножество является физическим, требуется позаботиться о гиперссылках в библиографических записях. Мне удалось заставить нормально работать в виртуальных базах даже свои "умные гиперссылки". Сделаю маленькое отступление, чтобы пояснить, что я имею в виду.
Превращать автора или ключевое слово в гиперссылку целесообразно только в том случае, если в базе существует НЕСКОЛЬКО книг того же автора или несколько книг с тем же сочетанием ключевых слов. Когда ты щёлкаешь на гиперссылку в библиографическом описании и получаешь только то описание на котором уже щёлкал - это не правильно. Поэтому элемент должен становится гиперссылкой только если он встречается больше чем один раз. С учётом, что формат может выполняться в виртуальной базе соответствующий код для первого автора многотомника должен выглядеть так:
'<b>',
if p(v461^x) then,
&uf('+1W901#',if (not v461^x:',') and v461^x:' ' then &uf('g0 'v461^x),', ', &uf('g2 'v461^x), else v461^x,v461^b, fi,)
if val(if v1020='' then &uf('J,','A=',&uf('+1R901')) else &uf('+3S,0,|(<.>A=',&uf('+1R901'),'<.>*<.>VB=',v1020,'<.>)|,') fi)>1 then,
,|<a href="javascript: s_by_term('A=','|d1,&uf('+1R901'),|')" class="term_hyper">|d1,
&uf('+1R901'),
,'</a>',
else ,
&uf('+1R901'),
fi,
'</b><br> ',
&uf('+1W901#'),
fi,
Здесь поле v1020 содержит название конкретной виртуальной базы. Если оно отсутствует, то база физическая. Функция s_by_term инициирует поиск по запросу.
В виртуальной базе гиперссылка появится только в том случае, если в этой базе другие книги этого же автора. Наличие книг этого автора в текущей физической базе к показу гиперссылки не приведёт.
Чтобы предоставлять пользователям абсолютно корректную информацию имеет смысл высчитывать количество реальных ссылок и при показе словаря.
–———--
Все описанные здесь решения были реализованы на сайте [
www.elib.nwpi.ru] Виртуальных базы здесь 4: "Электронные версии учебных пособий", "Электронные версии учебных пособий", "Видеоматериалы(DVD,CD,VHS)", "Электронные версии авторефератов диссертаций". Базы "Электронный каталог(все непериодические издания)", "Журналы и газеты(все периодические издания)" являются физическими. (Замечу, что с моей точки зрения баз слишком много, что может запутать читателя, но именно такого разнообразия хотела ВУЗовская администрация.)