Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Администратор :  ИРБИС Irbis
 
Возможно ли объединить словари из разных БД?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 08, October, 2012 10:57

В одной БД есть словарь ("Дисциплина"), который формируется непосредственно из библиографической записи. Также была создана своего рода авторитетная БД (Факультеты, Кафедры, Дисциплины) для упрощенной задачи КО. По одному из полей формируется второй словарь дисциплин. Можно ли каким-то образом их объединить и создать новый на их основе?



Редактировано 1 раз. Последний раз 08.10.2012 10:57 пользователем woodyfon.

Re: Возможно ли объединить словари из разных БД?
Пользователь: ochagova (IP-адрес скрыт)
Дата: 08, October, 2012 11:03

Нет словари в отрыве от БД объединить нельзя, в ИРБИС-64 (и 32). Можно создать единый справочник.

Re: Возможно ли объединить словари из разных БД?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 08, October, 2012 11:53

А если использовать функцию &uf('D... и руководствоваться темой [irbis.gpntb.ru] возможно ли загнать в словарь термины из другой БД? Я плохо понимаю суть этой функции, схожая конструкция есть в файле БД_КО.fst. Что подразумевается под собой "Форматирование документа из другой БД"?
+
Для одной БД необходимо создать словарь, где термины будут из текущей БД и повторений поля другой БД. Данные в другой БД меняться не будут.



Редактировано 1 раз. Последний раз 08.10.2012 12:22 пользователем woodyfon.

Re: Возможно ли объединить словари из разных БД?
Пользователь: Gena (IP-адрес скрыт)
Дата: 08, October, 2012 12:41

Это однозначно приведет к большим тормозам в работе. Судите сами, в момент сохранения записи, все термины, для которых есть описания в FST-файле, формируются заново. При этом на само расформатирования текущей записи уходт определенное время. Функция &uf('D позволяет обратится к записи в этой или в другой записи и получить из нее данные, но даже само обращение к другой записи занимает время, не говоря уже о том, что бы каким-то образом расформатировать из нее данные. Далее, функция &uf('D работает с записями, найденными по поисковому выражению, либо при прямом указании MFN. И она работает строго с одной записью! Для работы с группой записей Вам нужна функция &uf('7. Если у вас нет связки текущей сохраняемой записи с записью другой базы, из которой надо получить информацию, то у вас есть только вариант вызова ВСЕХ записей другой базы по какому-то определенному термину. Например, по виду документа. Грубо говоря, если вам надо расформатировать все книги, то понадобится вот ткая конструкция |VD=KN|. Предположим, что у всех записей вашей БД вид документа KO и вам нужно сформировать термины из поля 5, то вам понадобится вот такая конструкция:

&uf('7VUZ,|VD=KO|,v5/')

Эта конструкция выведет все повторения поля 5 во всех записях, которые найдутся в словаре VD= по термину KO

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

Если уж совсем невтерпеж, то сделайте одну фиктивную запись и привяжите все термины к ней. Тогда при необходимости обновить термины вам нужно будет обновить только одну запись.

Re: Возможно ли объединить словари из разных БД?
Пользователь: Alio (IP-адрес скрыт)
Дата: 08, October, 2012 16:03

В общем случае с помощью функций &uf('D и &uf('7 можно включать в словарь ДАННОЙ БД термины из ЧУЖОЙ БД. Но при этом надо понимать, что АКТУАЛИЗАЦИЯ ДАННОЙ БД будет работать правильно только в случае, когда ЧУЖАЯ БД остается статической по отношению к изменениям ДАННОЙ БД. Если применять СОЗДАНИЕ СЛОВАРЯ ПОЛНОСТЬЮ, все будет работать верно во всех случаях.

Re: Возможно ли объединить словари из разных БД?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 08, October, 2012 17:18

Цитата:
&uf('7VUZ,|VD=KO|,v5/')
Эта конструкция выведет все повторения поля 5 во всех записях, которые найдутся в словаре VD= по термину KO

Что-то не получается в один и тот же словарь загнать как термины из другой БД. Не могу сообразить как менять термин словаря в конструкции функции.
Цитата:
Если уж совсем невтерпеж, то сделайте одну фиктивную запись и привяжите все термины к ней. Тогда при необходимости обновить термины вам нужно будет обновить только одну запись.
Данные по котороым необходимо сфоримровать словарь, находяться в как бы авторитетной БД (используется для для ввода и служит как справочная). Гена, вы предлагаете, создать фиктивную запись непосредственно в библиографической БД?

Цитата:
...когда ЧУЖАЯ БД остается статической по отношению к изменениям ДАННОЙ БД.
Статическая в плане поля, по которой инвертируется БД, или вся запись в целом?



Редактировано 1 раз. Последний раз 08.10.2012 17:22 пользователем woodyfon.

Re: Возможно ли объединить словари из разных БД?
Пользователь: Gena (IP-адрес скрыт)
Дата: 08, October, 2012 18:07

woodyfon написал(а):
-------------------------------------------------------
> &uf('7VUZ,|VD=KO|,v5/')
> Эта конструкция выведет все повторения поля 5 во
> всех записях, которые найдутся в словаре VD= по
> термину KO
>
> Что-то не получается в один и тот же словарь
> загнать как термины из другой БД. Не могу
> сообразить как менять термин словаря в конструкции
> функции.
>


Вам не нужно менять термины, оптимально для вас одним запросом отобрать ВСЕ записи из вашей авторитетной записи. Если у вас в вашей авторитетной базе еще нет такого словаря с единым термином, то его прежде всего стоит создать. Далее, обращаясь из другой БД по этому термину (на который отзовется вся авторитетная БД), вы можете получить доступ к расформатированию всех документов и получению из них нужных терминов для своей БД.


Если уж совсем невтерпеж, то сделайте одну
> фиктивную запись и привяжите все термины к ней.
> Тогда при необходимости обновить термины вам нужно
> будет обновить только одну запись.
> Данные по котороым необходимо сфоримровать
> словарь, находяться в как бы авторитетной БД
> (используется для для ввода и служит как
> справочная). Гена, вы предлагаете, создать
> фиктивную запись непосредственно в
> библиографической БД?
>

Ага, к примеру, создайте пустую запись, в которой будет только одно поле 920 с содержимым, например, SLUZ_ZAP. Далее, FST файле базы данных пропишите создание терминов из авторитетной записи только при условии, что v920='SLUZ_ZAP'.


> ...когда ЧУЖАЯ БД остается статической по
> отношению к изменениям ДАННОЙ БД.
> Статическая в плане поля, по которой инвертируется
> БД, или вся запись в целом?

Да, авторитетная БД должна быть статической. Или на крайний случай, после любого изменения в авторитетной БД, вам нужно будет пересоздавать словари в своем ЭК полностью.

Re: Возможно ли объединить словари из разных БД?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 08, October, 2012 22:07

&uf('7VUZ,|VD=KO|,v5/')
Такая конструкция ничего на просмотр не выводит. Интересно знать, что будет результатом этой функции &uf('7... ?
Также пробовал ну уж совсем очевидное (для БД IBIS? результат пытаюсь посмотреть, отредактировав формат ALL.pft), чтобы понять хотя бы как работает функция. Но все время выдается пустое выражение.

&uf('7,/VD=KN/,v200^a'),
В общем, что удалось понять, функция должна вывести результат формата, по поиску термина в соответствующем словаре в выбранной БД. Это так? Уже просто интересно, ради приницпа.

Re: Возможно ли объединить словари из разных БД?
Пользователь: Gena (IP-адрес скрыт)
Дата: 08, October, 2012 22:22

Во первых, я привел как вариант. Понятное дело, что в БД ВУЗ нет и не может быть книг. Я приводил как аналогию термина для словаря "Вид документа". В том варианте, в котором вы привели функцию, она будет работать в той БД, в которой вы ее запустили. Если же вам нужно получать расформатирования не из текущей БД, а из некой другой, то нужно за семеркой указывать название БД. Эта юнифор позволяет найти ВСЕ записи по некоторому термину и выполнить на них расформатирование.


&uf('7,/VD=KN/,v200^a'),

Подробно тут:
[wiki.elnit.org]

Re: Возможно ли объединить словари из разных БД?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 08, October, 2012 23:13

Не могли бы вы привести полный код, чтобы в окне просмотра (АРМ-Каталогизатор) получить хоть какое-то значение, если вас, конечно, не затруднит. Увидев результат работы функции, я бы понял как она работает.
Код
&uf('7,/VD=KN/,v200^a'),
приводит к ошибке формата 26. Я на вики данную страничку до дыр уже прочитал. Даже, если использовать пример из описания функции, также приводит к ошибке 26.
+
Функции &uf('J..., &uf('D..., &uf('7... требуют перезапуска сервера, иначе в формате просмотра не будет изменений. Ранее хватало "Обновить контекст" из меню "Сервис."



Редактировано 3 раз. Последний раз 09.10.2012 01:12 пользователем woodyfon.

Re: Возможно ли объединить словари из разных БД?
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 09, October, 2012 10:07

Ошибка в префиксе
&uf('7,/V=KN/,v200^a/'),



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