Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Каталогизатор :  ИРБИС Irbis
 
Отсечение строк при занесении в словарь
Пользователь: artgonch (IP-адрес скрыт)
Дата: 27, July, 2004 13:01

Здравствуйте!
В поле 711^b сделали ввод через словарь. В ibis.fst добавили строку
711 0 MHL,if p(v711^b) then 'PDR=', v711^b fi
Но в словаре строки отсечены и выводятся больими буквами, хотя, например, в 225-ом поле все работает правильно. Но там написано много непонятного подскажите, в чем причина.
Речь идет именно о словарях в РЛ, а не в поиске.
Заранее спасибо.

Re: Отсечение строк при занесении в словарь
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 27, July, 2004 14:36

Для словарей нет разницы, где они используются, они просто есть и все тут. А уж где Вы их будите использовать - это Ваше дело и на содержание .fst место их использования никак не влияет.

Попробуйте так:
711 0 (|PDR=|v711^b/)

Как мне кажется, тут совсем не нужно использовать команды режима вывода (мой пример и быстрее и правильнее, поскольку есть символ перевода на другую строку и учтено, что поле 711 - повторяющееся). По моему Ирбис сам в словаль заносит термины в верхнем регистре. Это сделано, скорее всего, для избежания случаев типа

Алгебра
алгебра

Если к верхнему регистру не приводить, то такие слова будут двумя разными терминами.
Может, конечно, это и можно как-то обойти, но я не знаю как, да и разбираться, мне кажется, не стоит. Хотя это мое мнение и оно, в большинстве случаев :), с общественным не совпадает...
Откройте fst и посмотрите, как написан формат для 225 поля. Разберите его и сделайте так же, если по другому никак.
Удачи.

Re: Отсечение строк при занесении в словарь
Пользователь: Дунаевская С.М. (IP-адрес скрыт)
Дата: 27, July, 2004 15:20

При вводе данных с использованием словаря есть возможность переносить данные не непосредственно из словаря (термин ограниченной длины на верхнем регистре), а из исходного документа, поставившего в словарь этот термин ПЕРВЫМ.
Для этого в РЛ 711k.wss (если используете РЛ из дистрибутива) в строке для подполя B (подразделение?) напишите:
В столбце "Режим ввода" - 2
В столбце "Дополнительная информация"
,PDP=,if '***'='711' then v711^b fi

См. Документацию - Общее описание. Приложение 4, в частности, раздел 13. Пример - 711k.wss в БД CMPL


Re: Отсечение строк при занесении в словарь
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 27, July, 2004 15:36

Вот видите, яркий пример того, что мое мнение не совпадает с общественным :)...
Про эту возможность я как-то забыл совсем (не пользовался не разу), но в fst все равно нужно вставить строку, которая приведена во втором посте, так как Ваша строка не верна (пусть и частично).



Отправка отредактированного (27-07-04 15:38)

г. Ярославль

Re: Отсечение строк при занесении в словарь
Пользователь: Дунаевская С.М. (IP-адрес скрыт)
Дата: 27, July, 2004 16:34

Да, уточнение Максима необходимо для повторяющегося поля

Re: Отсечение строк при занесении в словарь
Пользователь: Дунаевская С.М. (IP-адрес скрыт)
Дата: 27, July, 2004 16:40

В догонку
Необходимо внести уточнение для таблицы формирования словаря
711 0 (|PDP=|v711^b,|%|d711) - иначе при вводе данные могут переноситься некорректно (не из нужного повторения поля)


Re: Отсечение строк при занесении в словарь
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 27, July, 2004 17:40

Светлана Михайловна, мне хочется уточнить кое-какие моменты:
- а разве символ перевода на другую строку можно не указывать?
- мне еще не понятно, почему в качестве префикса для условного оператора указано d711, а не d711^b что, как мне кажется, было бы логичнее?



Отправка отредактированного (27-07-04 17:50)

г. Ярославль

Re: Отсечение строк при занесении в словарь
Пользователь: Дунаевская С.М. (IP-адрес скрыт)
Дата: 28, July, 2004 14:45

- / указывать обязательно (моя ошибка) 711 0 (|PDP=|v711^b,|%|d711/)
- для корректного переноса (программно это выполняется по номеру повторения поля) должно стоять обязательно d711, поскольку не в каждом 711 поле может быть ^b


Re: Отсечение строк при занесении в словарь
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 28, July, 2004 16:18

Понятно, но веть если в повторении поля не будет 711^b, то
|PDP=|v711^b - вернет пустую строку и в результате вернется просто знак %, если хотя бы одно повторение в поле будет.
То есть получиться так
PDP=<Termin1>%
PDP=<Termin2>%
%
PDP=<Termin3>%
Это в случае, если третье повторение не будет содержать подполя ^b. А если указать |%|d711^b, то получится
PDP=<Termin1>%
PDP=<Termin2>%
PDP=<Termin3>%


Очень извиняюсь....понял...в моем случае термин будет указывать на третье повторение, а не на 4-е как надо :)... Спасибо за разъяснения...



Отправка отредактированного (28-07-04 16:19)

г. Ярославль

Re: Отсечение строк при занесении в словарь
Пользователь: Дунаевская С.М. (IP-адрес скрыт)
Дата: 28, July, 2004 16:46

Когда Вы активизируете <Termin3> и захотите ввести его в корректируемый документ, программа будет искать его в 4-ом повторении поля исходного документа - по первому из Ваших вариантов и в 3-ем - по второму (по ссылке OCC).
Можете сами проверить, как будет работать ввод данных через словарь в том и другом случаях.


Re: Отсечение строк при занесении в словарь
Пользователь: artgonch (IP-адрес скрыт)
Дата: 26, August, 2004 15:27

Все делал, как высоветовали. Но в словаре (В РЛ подполей) все равно выводится обрезанные строки в верхнем регистре. И переносятся в подполе тоже в верхнем регистре.

Re: Отсечение строк при занесении в словарь
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 27, August, 2004 09:42

И тоже обрезанными? Значит Вы сделали не совсем так, как мы советовали :)... А термины так и остануться обрезанными, от этого Вам никак не получиться избавиться.

Re: Отсечение строк при занесении в словарь
Пользователь: Дунаевская С.М. (IP-адрес скрыт)
Дата: 27, August, 2004 10:35

<Словарь в РЛ> Здесь вид термина словаря (и формат переноса данных в документ) определяется тем, что указано в WSS или в WS в параметре "Дополнительная информация".
Основное - данные в корректируемый документ могут быть введены непосредственно из поискового словаря (термин словаря) или из документа, первым поставившего термин в словарь.
Так, в 711k.wss, этот параметр определен так: ,M=,@!mmovk (это означает, что перенос данных в корректируемый документ осуществляется из ДОКУМЕНТА, введенного в БД ранее, по указанному формату !mmovk.pft, и термин словаря представляется по этому же формату).
Другой вариант - для ключевых слов: поле 610 в РЛ определено так: ,K=, (это означает, что в документ переносится непосредственно ТЕРМИН СЛОВАРЯ в таком виде, как он представлен в поисковом словаре, т.е может быть "обрезанным"


Re: Отсечение строк при занесении в словарь
Пользователь: artgonch (IP-адрес скрыт)
Дата: 27, August, 2004 16:50

Да, теперь я понял: чтобы термин переносился не из поискового словаря, а из записи, как есть нужно в *.wss указать:
,PDR=,if '***'='711' then v711^b fi
Это я сделал, сразу же, как Вы посоветовали. Но термины все равно отсекаются. Может быть, удалить из ibis.fst упоминание о 711^B (которое я добавил сам)?

Re: Отсечение строк при занесении в словарь
Пользователь: Дунаевская С.М. (IP-адрес скрыт)
Дата: 30, August, 2004 10:50

Проверьте таблицу создания словаря: в IBIS.FST не должно быть разных строк с квалификатором 711 и разными префиксами (само обозначение квалификатора никакого особого смысла не несет и не обязательно должно совпадать с меткой исходного поля)


Re: Отсечение строк при занесении в словарь
Пользователь: -AND- (IP-адрес скрыт)
Дата: 23, March, 2007 17:28

А можно еще раз и помедленнее, я записываю :)
Если я правильно понял, то: если в РЛ после указания префикса(,PDR=,) стоит формат, то термин будет переносится из документа, в котором впервые встретился термин, в соответствии с этим форматом. При этом он будет не обрезанный и никакое ограничение длинны на него не действует. Это так?

Re: Отсечение строк при занесении в словарь
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 23, March, 2007 19:23

Да,так

Re: Отсечение строк при занесении в словарь
Пользователь: -AND- (IP-адрес скрыт)
Дата: 28, March, 2007 14:43

Светлана Михайловна можете мне рассталковать технологию работы словаря, когда когда поле повторяющееся? А то я не полностью понимаю как работает с повторениями словарь. Я расскажу что сделал и вопросы.

Поле 691:ВУЗ - повторяющееся. В этом поле у нас есть жесткие зависимости: дисциплина обязательно читается на единой кафедре, а также дисциплина имеет определенные наборы специальностей(у нас специальностей всего 15, так что структурировать их просто).
Вот с этого я и решил, что по подполю 691^D:Дисциплина можно, при помощи словаря вводить и кафедру и специальности, для которых читается эта дисциплина.
Но тут есть один момент, который мне нужно уяснить - поле 691-повторяющееся, поскольку книга может быть учебным пособием для нескольких дисциплин.

Что сделал:
Сделал индексирование подполя 691^D в ТВП как оговаривалось в данном топике:
6914 0 (|DIS=|v691^D, |%|d691 /)

В подполе 691^D сделал ввод через словарь и чтобы специальности переносились из записи тоже, для этого в Доп. инф. написал:
,DIS=, if '***'='6914' then v691^D, |^C|v691^C fi

Но понятно, что когда повторений у поля нету, то все работает нормально. А теперь как мне нужно сделать, чтобы повторения поля 691 переносились корректно, чтобы переносился только нужный номер повторения?

Re: Отсечение строк при занесении в словарь
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 28, March, 2007 15:06

Для повторяющихся полей нужно добавить скобки
,DIS=,(if '***'='6914' then v691^D, |^C|v691^C fi/)

Re: Отсечение строк при занесении в словарь
Пользователь: -AND- (IP-адрес скрыт)
Дата: 28, March, 2007 16:06

На самом деле все так просто?
Да, за скобки я знал, но думал что там еще что-то нужно. Мне нужно осмыслить механизм работы словаря, когда присутствуют повторения.
И еще вопрос по ТВП: получается в ТВП индексируются повторения полей по отдельности, если конструкция в скобках и есть перевод на другую строку?

Re: Отсечение строк при занесении в словарь
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 28, March, 2007 18:25

6914 0 (|DIS=|v691^D, |%|d691 /) - каждое повторение поля 691 в словарь попадает отдельно с квалификатором 6914, при этом |%|d691 организует счетчик полей.
Именно этот счетчик определяет повторение поля в исходном документе, из которого извлекаются данные для переноса в новый документ

Re: Отсечение строк при занесении в словарь
Пользователь: -AND- (IP-адрес скрыт)
Дата: 29, March, 2007 14:29

Я понял. Только:
1.Я думал |%| удаляет пустые строки d691 организует фиктивный вывод для литерала|%|?
2.Я если |%|d691 - организует счетчик, то объясните плз как это работает?

Re: Отсечение строк при занесении в словарь
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 29, March, 2007 14:46

Воспользуйтесь поиском. Именно этот момент Светлана Михайловна уже когда-то точно так же объясняла мне :).

Re: Отсечение строк при занесении в словарь
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 29, March, 2007 15:41

-AND- написал(а):
-------------------------------------------------------
> Я понял. Только:
> 1.Я думал |%| удаляет пустые строки d691
> организует фиктивный вывод для литерала|%|?
> 2.Я если |%|d691 - организует счетчик, то
> объясните плз как это работает?

Может быть, я не совсем четко сформулировала - корректно организует счетчик, то есть считает и поля, не имеющие ^D (результат расформатирования соответствует числу полей)

Re: Отсечение строк при занесении в словарь
Пользователь: -AND- (IP-адрес скрыт)
Дата: 29, March, 2007 16:19

Вы имеете ввиду считает поля(повторения), в которых нет подполя ^D? Спасибо вам за помощь.

Да, объясняла в этом топе, только немного выше.



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