Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Каталогизатор :  ИРБИС Irbis
 
Еще проблемы с RUSMARCом
Пользователь: Карауш (IP-адрес скрыт)
Дата: 30, March, 2004 11:26

Появилась проблема при экспорте записей в формате RUSMARC номеров журналов (рабочий лист NJ) с возможностью показа ссылок на записи верхнего и нижнего уровней. Причем пробовал решить по-своему - не получается.

Основными элементами для такого показа являются поля (идеальный вариант):
#1: М028639/2004/19
---> код документа в массиве (взято из поля 903 текущего документа)

#461: 1$1001М028639$12001 $aМедицинская газета1210 $aМ.
---> ссылка на код документа в массиве верхнего уровня. (в данном случае 1 повторение поля 001 в первом повторении поля 461, взято из поля 933 текущего документа, остальные данные взяты оператором ref(l) из текущей БД)

#464: 1$100104ЗайцегМбннупЛаеыееаN19(20040312)$12001 $aЛегких пациентов у него не бывает$fВ. Зайцева, А. И. Неробеев$1700 1$aЗайцева$bВ.$1701 1$aНеробеев$bА. И.
#464: 1$100104ПестргМбнпнПаееерелN19(20040312)$12001 $aПлацентарная недостаточность при невынашивании беременности$fТ. Пестрикова, Е. Юрасова$1700 1$aПестрикова$bТ.$1701 1$aЮрасова$bЕ.
#464: 1$100104КаплагМовтФаенеоздкN19(20040312)$12001 $aФотодинамическая терапия в онкологии$fМ. Каплан$1700 1a$Каплан$bМ.
---> ссылки на код документа в массиве записей нижестоящего уровня – список статей журнала. (в данном случае 1 повторение поля 001 в повторениях поля 464 для каждой статьи).

Мои действия были такие:
1. поля 1, 461 делаются в конверторе без проблем.
2. для поля 464 явного оператора нет, чтобы поочередно перебрать результаты поиска по коду, находящихся в поле 463^w данных статей (раб. лист ASP).
3. сам собираю новый индекс для решения задачи строкой в fst-файле:

903 0 if v920:'ASP' then "IA="d463^w,v700^a.2,v200^a.3,v200^a*20.3,v463^w fi

4. в файл rmarce.fst после этого ставлю следующую конструкцию:

464 0 &unifor('S0'), if &unifor('Av920#1'):'NJ' and p(v922) then ' 1', (ref(l(|IA=|v922^f.2, v922^c.3, v922^c*20.3, &unifor('Av903#1')),'^1001',v903), |^12001 ^a|v922^c, |^e|v922^e, |^d|v922^d,|^h|v922^h,|^i|v922^i,|^h|v922^k,|^i|v922^l,|^f|v922^g, if p(v922^f) then '^1700 1^a', &unifor(|E1|v922^f)fi if &unifor(|F1|v922^f)<>''then'^b'&unifor(|F1|v922^f)fi, |^g|v922^?, if p(v922^2) then '^1701 1^a', &unifor(|E1|v922^2) fi, if &unifor(|F1|v922^2)<>''then'^b',&unifor(|F1|v922^2) fi /) fi

Что интересно, в редакторе genpft конструкция

(ref(l(|IA=|v922^f.2, v922^c.3, v922^c*20.3, &unifor('Av903#1')),'^1001',v903), |^12001 ^a|v922^c, |^e|v922^e, |^d|v922^d,|^h|v922^h,|^i|v922^i,|^h|v922^k,|^i|v922^l,|^f|v922^g, if p(v922^f) then '^1700 1^a', &unifor(|E1|v922^f)fi if &unifor(|F1|v922^f)<>''then'^b'&unifor(|F1|v922^f)fi, |^g|v922^?, if p(v922^2) then '^1701 1^a', &unifor(|E1|v922^2) fi, if &unifor(|F1|v922^2)<>''then'^b',&unifor(|F1|v922^2) fi /)

выдает все повторения записей и строит то, что требуется, но при переносе в файл rmarce.fst выдает только первое повторение поля данных, т.е.:

#464: 1$100104ЗайцегМбннупЛаеыееаN19(20040312)$12001 $aЛегких пациентов у него не бывает$fВ. Зайцева, А. И. Неробеев$1700 1$aЗайцева$bВ.$1701 1$aНеробеев$bА. И.


Итоговые данные по RUSMARC должны появиться такие (см. только поля связи в контексте):

Описание журнала (лист J) (до конца пока не доделан – не эталон ):
#1: М028639
#100: $a20030117a 9999|||y0rusy02######
#101: 0 $arus
#102: $aRU
#110: $acbu 0|||
#200: 1 $aМедицинская газета$eПрофессиональное врачебное издание
#210: $aМ.$cМедиа-Пресса
#463: ссылки на отдельные записи номеров журналов, имеющихся в текущей (для начала) базе данных (повторяется)
#620: $dМосква
#326: $aПериодичность: дважды в неделю
#801: 0$aru$b63480700$gpsbo$2rusmarc
#899: $a63480700

Описание номера журнала (газеты):
#1: М028639/2004/19
#100: $a20040316a |||y0rusy0102######
#101: 0 $arus
#102: $aRU
#200: 0 $aN19
#461: 1$1001М028639$12001 $aМедицинская газета$1210 $aМ.
#210: $d2004
#464: 1$100104ЗайцегМбннупЛаеыееаN19(20040312)$12001 $aЛегких пациентов у него не бывает$fВ. Зайцева, А. И. Неробеев$1700 1$aЗайцева$bВ.$1701 1$aНеробеев$bА. И.
#464: 1$100104ПестргМбнпнПаееерелN19(20040312)$12001 $aПлацентарная недостаточность при невынашивании беременности$fТ. Пестрикова, Е. Юрасова$1700 1$aПестрикова$bТ.$1701 1$aЮрасова$bЕ.
#464: 1$100104КаплагМовтФаенеоздкN19(20040312)$12001 $aФотодинамическая терапия в онкологии$fМ. Каплан$1700 1a$Каплан$bМ.
#801: 0$aru$b63480700$gpsbo$2rusmarc
#899: $a63480700


Отдельная статья (первая из содержания) - тоже не до конца настроенная:

#1: 04ЗайцегМбннупЛаеыееаN19(20040312)
#100: $a20040316a k y0rusy02######
#101: 0 $arus
#102: $aRU
#200: 1 $aЛегких пациентов у него не бывает$fВ. Зайцева, А. И. Неробеев
#461: 1$1001М028639$12001 $aМедицинская газета$eПрофессиональное врачебное издание$1210 $aМ.
#215: $a5
#463: 0$1001М028639/2004/19$1200 1$a19$1210 $d2004
#606: $aХИРУРГИЯ ПЛАСТИЧЕСКАЯ$xSURGERY, PLASTIC
#610: 1 $aИНТЕРВЬЮ
#610: 1 $aПЛАСТИЧЕСКАЯ ХИРУРГИЯ
#610: 1 $aВОССТАНОВИТЕЛЬНАЯ ХИРУРГИЯ
#700: 1$aЗайцева$bВ.
#701: 1$aНеробеев$bА. И.
#801: 0$aru$b63480700$gpsbo$2rusmarc
#899: $a63480700

У меня, таким образом, два вопроса:

1. Можно ли такое собрать, чтобы был циклический вывод pft – формата для результатов поиска средствами ИРБИСа? Ведь команда ref(l…) берет только данные первой попавшейся записи, а что с остальными. Может быть, усложнить команду &unifor('JBOOK,',"A="v200^a), чтобы не просто количество ссылок, а результаты в цикле с форматированием? Именно про такие циклы я уже года два твержу. Но вот только сейчас возникла сложная ситуация.
2. или придумывать новые индексы с псевдослучайными данными, чтобы «угадывать» статьи от каждого номера журнала?


Re: Еще проблемы с RUSMARCом
Пользователь: Карауш (IP-адрес скрыт)
Дата: 30, March, 2004 11:33

Дополнение:
Версия ИРБИСа: - 2003.2 - АРМ Каталогизатор с встроенным MESH рубрикатором.
format32.dll - последняя версия.
genpft - последняя версия.

Re: Еще проблемы с RUSMARCом
Пользователь: Дунаевская С.М. (IP-адрес скрыт)
Дата: 02, April, 2004 16:40

А не поможет ли Вам вариант конструкции такого типа :
&unifor('7IBIS,!',if v920='J'then "I933="v903"/$!,v903/"else"II="v903"!,&unifor('6brief')/"fi)

(&unifor('7') - это то же, что &unifor('D'), но с показом множественных ссылок)




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