Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Web Ирбис и Z-Ирбис :  ИРБИС Irbis
 
Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 05, February, 2007 14:43

* У вас есть электронные документы, и они подключены к некоторым записям электронного каталога. Вы задумывались над тем, что для пользователя электронный каталог и электронная библиотека - не одно и то же?
* Книги и журналы описываются у вас в одной базе. Вы задумывались над тем, что пользователю который разыскивает книги могут быть не нужны журналы и наоборот?
* Вы задумывались о том, что хорошо бы предоставить читателю отличные по своему виду поисковые формы для книг и журналов?
* Вы задумывались, над тем, что применив для поиска рубрикатор ГРНТИ в журнальной базе, пользователь ничего не найдёт поскольку ГРНТИ вы ставите только на книги?
Если вы ответили "Да" хотя бы на один вопрос, рассматриваемая здесь тема должна быть вам интересна.

КРИТИЧЕСКИЙ АНАЛИЗ СУЩЕСТВУЮЩЕЙ ПРАКТИКИ ЧЛЕНЕНИЯ БИБЛИОГРАФИЧЕСКИХ МАССИВОВ
Во многих библиотеках сегодня выделяются тематические, отраслевые, авторские библиографические базы. В одних случаях - это дань отживающей традиции создавать автономные картотеки, в других продиктовано реальной необходимостью. Например, очевидно, что записи с подключёнными к ним электронными версиями документов значат для читателя совсем не то же самое, что и просто библиографические описания, поэтому целесообразно обособить их.
Но выделение тематических или видовых баз - серьезная стратегическая ошибка. Это на порядок усложняет администрирование, поиск и книговыдачу. Единственно допустимым и желательным с точки зрения администрирования и ведения каталога является выделение журнальных баз. Структура записей журнальных описаний настолько сильно отличается от книжных, что их обработка по одному алгоритму неоправданна. (Поле 910 книжного описания и поле 910 сводного описания журнала - разные вещи. Формат вывода описания номера и описания книги практически не имеют между собой ничего общего. Ещё в большей степени это можно сказать о различиях в ТВП. ) С точки зрения каталогизаторов, которые занимаются обработкой книг, панель "Оперативные режимы", возникающая при просмотре журнальных описания - это то, что придумано специально с целью портить им нервы. Те, кто расписывает журналы, не могут без этой панели жить.
Из всего вышесказанного можно сделать вывод, что единственным с технической точки зрения допустимым основанием, для ФИЗИЧЕСКОГО выделения записей в отдельные базы является сходство в их структуре. Конечно, нельзя упускать из виду, что такого выделения может оказаться недостаточно для читателя и в некоторых случаях он вообще может предпочесть дифференцированному поиску глобальный - по всем базам. Но слияние баз - тема, заслуживающая самостоятельного рассмотрения. Здесь будет рассмотрена только проблема их разделения.

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 05, February, 2007 14:43

ОРГАНИЗАЦИЯ ПОИСКА ПО ВИРТУАЛЬНЫМ БАЗАМ
В WEB ИРБИС несложно организовать поиск по подмножеству(виртуальной базе), дополняя запрос пользователя уточняющим условием. Для этого в форму поиска требуется добавить параметр S21ALL с запросом, выделяющим подмножество. В ходе поиска этот запрос будет уточнён данными пользователя и такое двойное ограничение фактически обеспечит поиск внутри подмножества.
Например:
S21ALL=(<.>HD=J4<.>)
К_S21P03=история
В итоге будет выполнен поиск методичек по истории.

Казалось бы, всё просто, но до недавнего времени громадным препятствием для выделения ПОЛНООЦЕННЫХ виртуальных баз являлся словарь. Ведь в словаре физической базы большая часть терминов не будет связана с записями виртуальной. Если пользователь отберёт термины отсутствующие в виртуальной базе и выполнит поиск, то получит нулевой результат. Естественно такое положение дел неудовлетворительно, поэтому для каждого подмножества требуется выводить только ту часть словаря, которая связана с ним.
Мой первый вариант с использованием функции &uf(+3S) для фильтрации терминов имел следующую структуру:

&uf('+1W906#',&uf('+3S,0,|(<.>',v8,v1003,'<.>*<.>VB=',v1020,'<.>)|,')),
if &uf('+1R906')<>'0' then,
'Постинги:',&uf('+1R906'),
'Сам термин словаря:'v1003
fi,

здесь:
v8 - префикс текущего словаря
v1003 - текущий термин словаря
v1020 - термин специально созданного словаря с префиксом VB= связанный с определённым подмножеством записей

Этот формат работал, но для некоторых словарей отбор терминов продолжался около двух минут! Естественно этот метод был абсолютно непригоден для работы с большими массивами, но даже при базе в 20 тыс. двухминутный отбор не доставлял удовольствия.
Я должен сказать БОЛЬШОЕ СПАСИБО Константину Олеговичу за то, что он поддержал идею выделения виртуальных баз и реализовал режим фильтрации словаря непосредственно в CGI. Фильтрация, которая выполнялась раньше в течение нескольких минут, теперь занимает считанные секунды! Поэтому возможность создания полноценных виртуальных баз стала доступна всем!
В версии WEB ИРБИС 2006.2 при показе словаря для этого используется хорошо знакомый нам параметр S21ALL. Как и в случае с поиском его значением должен быть обычный запрос, НО, при выводе словаря этот запрос превращается в фильтр. Термины словаря связанные с записями, не удовлетворяющими запросу, просто не выводятся. Если же параметр не задан, то команда вывода словаря работает как обычно, т. е. показывает все без исключения термины определённого префикса.
Таким образом, один и тот же запрос может одновременно использоваться как для выделения определённого подмножества, в котором должен будет осуществляться поиск, так и для фильтрации связанных с этим подмножеством терминов словаря.

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 05, February, 2007 14:45

ПРАКТИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ВЫДЕЛЕНИЮ ВИРТУАЛЬНЫХ БАЗ
Уточняющий запрос может состоять из одного или нескольких терминов. Тем не менее, для повышения скорости выполнения и наибольшей простоты целесообразно задавать в нём только один термин относящийся к специально сформированному словарю. В СЗТУ, например, для авторефератов, например, в 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)", "Электронные версии авторефератов диссертаций". Базы "Электронный каталог(все непериодические издания)", "Журналы и газеты(все периодические издания)" являются физическими. (Замечу, что с моей точки зрения баз слишком много, что может запутать читателя, но именно такого разнообразия хотела ВУЗовская администрация.)

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 05, February, 2007 19:29

Ну сколько же можно делать половинчатые решения?!!! Не ранее чем год назад проблему виртуальных (в понятиях Кирилла) баз поднимал я. Еще ранее ее поднимал Александр Сергеевич. Только вот не нужно приделывать это в вебе. Это нужно (а местами даже необходимо) сделать составляющей Ирбис. Т.е. сделать аналогию просмотров в РСУБД. Т.е. база представляет собой обычную базу Ирбис, но банные в ней не хранятся. У нее так же должен быть свой словарь, свои форматы и все свое. Но данные должны браться из другой базы.
Вот как нужно делать. А вы там что наделали? Просто фильтр в вебе!!! Кто это использовать-то будет? Хотя не спорю, полезно. НО ОЧЕНЬ УЗКО. Не вписывается в идеологию Ирбис, которая подразумевает МАКСИМАЛЬНУЮ универсальность.
Складывается впечатление, что Константин Олегович и Александр Иосифович пишут АБСОЛЮТНО разный софт, никак между собой не связаный. Может все-таки реализовать идею просмотров, которая имеет уже 1,5-2-летнюю бороду?

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 06, February, 2007 02:17

Панев Максим написал(а):
-------------------------------------------------------
> Ну сколько же можно делать половинчатые
> решения?!!!
> Только
> вот не нужно приделывать это в вебе. Это нужно (а
> местами даже необходимо) сделать составляющей
> Ирбис.

Максим, в данном случае вовсе не стоит винить разработчиков. За всю применённую терминологию, равно как и за идею фильтрации словаря, ответственность в первую очередь несу ответственность я. Возможно, Константин Олегович вообще не сочтёт нужным позицировать фильтр словаря как средство выделения виртуальных баз, но для меня он важен именно в этом качестве.
После того, как ректор с проректором отчитали моего начальника за то, что у нас в базе находятся "старые методички", он очень конкретно объяснил мне, что если мы не выделим автономную базу архивных электронных документов, то "выделят" его и меня.
Я перебрал в уме и на практике множество различных способов. Самым простым и надёжным был вариант копирования записей с помощью глобальной корректировки. Но глобальную корректировку нельзя запускать автономно(нет возможности узнать последний MFN базы) и вместе с процедурой пересоздания словарей весь процесс становится набором сложных "полуавтоматических" манипуляций. Кроме того, требуется постоянно дублировать все изменения в нескольких ТВП, что тоже очень неприятно. Этим способом я был вынужден поддерживать до декабря базу "Электронная библиотека" и могу однозначно сказать, что он мне очень не нравился. От мысли, что так придётся поддерживать 5 баз, становилось грустно.
Решение с фильтрацией словаря которое Константин Олегович реализовал в модуле по моей просьбе стало настоящим спасением: одна база, одна ТВП, однократное пересоздание словаря по расписанию в полностью автоматическом режиме. . . Может быть я не прав, но мне кажется, что оно является самым простым с точки зрения администрирования. То, что оно реализовано в ИРБИС - это ОЧЕНЬ ХОРОШО.

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 06, February, 2007 02:18

Как я понимаю, ты предлагаешь обеспечить возможность создания автономных словарей(индексов) не связанных с конкретной базой. Я полностью согласен с тем, что это было бы очень хорошо. Такая возможность существовала в ISIS, но, увы, была проигнорирована и "запаяна" разработчиками. Где-то у меня сохранились протоколы, в которых я регистрировал реакцию различных модулей на изменение соответствующих строк PAR файлов. Она была настолько смешной и рационально необъяснимой, что я даже планировал написать об этом на форуме .(впрочем WEB справился лучше других) Полностью согласен с тем, что спецификацию ISIS разработчики должны чтить, но трудно представить себе как должна работать с PAR файлами версия ИРБИС 64 и сколько потребуется переделать в ней чтобы привести её в соответствие со спецификацией...
Конечно, применять автономные словари с независимыми форматами можно было бы очень эффективно. Но технологически реализовать виртуальные базы на этой основе было бы не проще, а сложнее чем по вышеописанной технологии. Достаточно заметить, что в каждой ТВП потребовалось бы предусмотреть не только индексирование, но и ОТБОР тех записей, которые должны индексироваться. Пришлось бы регистрировать каждую базу в пакетном задании и проделывать много другой дополнительной работы. Поэтому мне всё-таки кажется, что выделение виртуальных баз посредствам уточнения запроса самый простой и эффективный вариант для WEBa.
Может быть, я что-то в этом вопросе упустил. Подкинь, пожалуйста, ссылки на свои и Александра Сергеевича посты.

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Constantin (IP-адрес скрыт)
Дата: 06, February, 2007 10:40

Создание виртуальных баз в ИРБИС с возможностью корректуры наталкивается серьезные препятствия
Палеатив - поддержка логического объединения баз на поиск как в Z
Но и здесь не решен вопрос как форматировать записи из разных по структуре баз
Поэтому сейчас единственным реальным решением является применяемая в большинстве библиотек (в том числе ГПНТБ) практика ведения нескольких технологических баз и сливания их для Читателя в ЭК со специальными метками в записях об источнике
В этом случае фильтрация словаря - удачное решение



Редактировано 1 раз. Последний раз 06.02.2007 10:44 пользователем Constantin.

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 06, February, 2007 11:13

Ну может оно и удачное, только вот доступно только в вебе. К тому же зачем прикручивать корректировку. Как раз корректировка в таких виртуальных базах и не нужна. Только просмотр и поиск. Корректировка должна быть ТОЛЬКО в базах-источниках. По поводу логического объединения нескольких баз в одну: не вижу сложности. Все зависит от механизма. Хотя такого примера я пока придумать не могу. Нужно было только сделать выборки конкретных данных из одной базы.

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Куделя (IP-адрес скрыт)
Дата: 19, October, 2008 19:04

Товарищи специалисты! Что-то не могу я настроить использование S21ALL в качестве фильтра :(. Возникли проблемы с логикой объединения запроса из формы и того что прописано в S21ALL через cgiflk.pft. Ситуация мне, увы, совершенно непонятна:

Стандартный поиск - все работает на ура: результаты поиска фильтруются согласно S21ALL, отображение терминов словаря - тоже отлично, но вот уже при попытке перехода от выбранного термина словаря к связанному с ним запросу происходит смена логики на "ИЛИ". То же самое с формами расширенного и професионального поиска, а также со ссылками "поиска по связи" в бибописаниях. Т.е. запрос указанный в S21ALL объединяется с запросом формы не логикой "И", а логикой "ИЛИ".

В документации написано "В случае если к заданному наборам поисковых элементов добавляется S21ALL, новый параметр S21ALL получается присоединением старого с логикой S21LOG". Пытался я приписывать S21LOG=1 куда только можно - результатов не дало :(

Куда смотреть?

Иркутская ОГУНБ
ИРБИС64.21Турбо
WebИРБИС-PHP

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Constantin (IP-адрес скрыт)
Дата: 20, October, 2008 10:30

Если Вы используете cgiflc, то логика работы совершенно другая.
cgiflc заменяет значения параметров, не учитывая предыдущие значения.
Если нужно фильтровать текущий запрос, например, по удк 68,
в cgiflc пишете строку:

'S21All=( <.>U=68$<.> )*',v2226/

Причем переход строки / здесь обязателен!

При задании такого cgiflc, показ словаря и любой поиск будет фильтроваться по ( <.>U=68$<.> ).

Текст из документации по поводу работы общей логики объединения относится к работе расширенного поиска и только!
Это описание логики объединения разнородных видов поиска, заданных наборами параметров *S21P0*.



Редактировано 4 раз. Последний раз 20.10.2008 10:38 пользователем Constantin.

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Куделя (IP-адрес скрыт)
Дата: 21, October, 2008 08:42

Спасибо - так действительно все работает. Замечательный механизм.
А число постингов (DictNDocsTag) не фильтруется автоматически?

Иркутская ОГУНБ
ИРБИС64.21Турбо
WebИРБИС-PHP

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Constantin (IP-адрес скрыт)
Дата: 21, October, 2008 11:42

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

Re: Создание виртуальных баз в WEB ИРБИС (новая функция версии 2006.2)
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 06, November, 2008 20:44

Справедливости ради нужно отметить, что операцию подсчёта постингов для каждого термина виртуальной базы можно выполнить самостоятельно, при помощи &uf('+3S :

&uf('+3S,0,|(<.>',v8,v1003,'<.>)*',v6,')|,'),

Здесь v8 – префикс, v1003 – текущий термин словаря, v6 – название виртуальной базы.



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.