Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Читатель :  ИРБИС Irbis
 
Читатель (передача запроса в базу)
Пользователь: Michael (IP-адрес скрыт)
Дата: 05, September, 2006 16:06

Добрый день.
Возник вопрос. При поиске "Для умников" при нажатии кнопки "Выполнить" страбатывает только логика "или". Очень хочется добавить логику "и". Как реализовать возможность выбора логики?????

Re: Читатель (передача запроса в базу)
Пользователь: Alio (IP-адрес скрыт)
Дата: 05, September, 2006 19:07

Какой режим ДЛЯ УМНИКОВ Вы имеете в виду?

Re: Читатель (передача запроса в базу)
Пользователь: Michael (IP-адрес скрыт)
Дата: 06, September, 2006 10:42

Режим основанный на "Ирбис Навигаторе".

Re: Читатель (передача запроса в базу)
Пользователь: Alio (IP-адрес скрыт)
Дата: 06, September, 2006 17:30

Это заложено в формате, который определяется параметром CHECKPFT - меняйте его, в зависимости от какого нибудь переключателя (т.е. надо менять форматы для Навигатора)

Re: Читатель (передача запроса в базу)
Пользователь: Michael (IP-адрес скрыт)
Дата: 07, September, 2006 12:42

Вот это весь формат:

if &uf('+D') : 'ATHRB' then |"U=|v1004^A|$"+|

fi,
Что тут добавить нужно????

Re: Читатель (передача запроса в базу)
Пользователь: Alio (IP-адрес скрыт)
Дата: 07, September, 2006 13:48

Если Вы + замените на * , вот и получится логика И
if &uf('+D') : 'ATHRB' then |"U=|v1004^A|$"*| fi

Re: Читатель (передача запроса в базу)
Пользователь: Michael (IP-адрес скрыт)
Дата: 07, September, 2006 15:00

Спасибо, помогло.
У меня к Вам следующий вопрос.
v1004^A передает CHECKPFT результаты выбора, а какую переменнeю мне можно исспользовать что передавать паметры логки чтобы пользователь мог выбирать между "*" и "+"?

Re: Читатель (передача запроса в базу)
Пользователь: Alio (IP-адрес скрыт)
Дата: 07, September, 2006 16:09

Во-первых, по существу ВАшей задачи. Весьма странная идея искать по индексам ББК с применением логики И, ведь это значит, что, отбирая несколько рубрик (индексов ББК), ВЫ хотите найти документы, в КАЖДОМ из которых есть ВСЕ отобранные индексы!? Неопытного пользователя (читателя) Вы только смутите, предлагая ему логику И - он не сообразит, что это значит.
Но если очень хочется, пожалуйста...

Можно придумать множество способов... Ну, например, такой:

1. "Нарисуйте" в формате перключатели для логики И и ИЛИ (такие же CHECKBOX, что и для рубрик, но с такими значениями, чтобы их заведомо отличить от индексов. (Чтобы нельзя было одновременно отметить и И и ИЛИ, можно написать простенький JavaScript)
2. Напишите новый формат для CHECKPFT, исходя из того, что в него через повторения v1004^A будут передаваться отобранные индексы и логика. Т.е. сначала надо выделить повторение означающее логику, удаить его, а оставшиеся повторения объединить через эту логику (сделать это можно через глобальные переменные, т.е. с помощью unifor('+7...)

Re: Читатель (передача запроса в базу)
Пользователь: Лукко (IP-адрес скрыт)
Дата: 08, September, 2006 10:48

Александр Иосифович! Здравствуйте! Я систематизатор, который и озадачил своих администраторов по существу вопроса (я была у Вас в мае по рекомендации Э.Р.Сукиасяна). Дело в том, что Вы тогда посмотрели только заполнение базы ATHRB (Михаил-наш администратор, перебросил ее Вам по эл.почте), а метод ее использования я не смогла Вам продемонстрировать (подвел наш Note-book).
Систематизация и поиск документов носит поэлементный характер, т.е. каждый составной индекс не имеет своего отдельного деления, как в таблицах, а составляется систематизатором и читателем в различных их комбинациях по лаконично составленному алгоритму: к основному делению прибавляются типовые деления (СТД1, СТД2, ОТД, ТТД и др.) - здесь-то и нужна логика "И". Исключение -когда этот составной индекс соответствует конкретному предмету, например: Ваттметры З221.3-5, да и то, не найдя ПР Ваттметры, "умник" наберет ПР "Измерение мощности" З221.3, а в специальных типовых делениях для технологических процессов (СТД1) выберет ПР "Оборудование (СТД1)" Ж/О-5 и в логике "И" он получит все литературу по приборам для измерения мощности, в т.ч. и ваттметрам). Отличие основных и типовых делений заложено в самой технологии их ввода. Согласитесь, что поэлементное индексирование значительно расширяет возможности поиска. Наверно, этот процесс можно усовершенствовать с помощью программирования, но я не программист. Когда мне поставили задачу сделать базу АПУ (тогда был ИРБИС32), т.е. по возможности автоматизировать процесс систематизации и тематического поиска, я и сделала, что смогла. А теперь, с вводом 64 версии, наши администраторы пытаются нашу базу АПУ (ATHRB) использовать в навигаторе. Свои разработки я выслала Э.Р.Сукиасяну. С уважением, Галина Николаевна.

Re: Читатель (передача запроса в базу)
Пользователь: artgonch (IP-адрес скрыт)
Дата: 06, November, 2012 13:17

Здравствуйте.

Обращаюсь к вам все с тем же вопросом. В ИРБИС-Навигаторе хотим сделать так, чтобы при выборе нескольких рубрик поиск использовал логику И. В БД RSBBK, в файле udcsearch_wn.pft вместо
|"U=|v1004^A|$"+|,
я написал
|"U=|v1004^A|$"*|,

Но при этом программа делает следующее: при поиске по одной рубрике ничего не находит, при поиске по двум рубрикам - результаты есть.

Как сделать правильно?

Re: Читатель (передача запроса в базу)
Пользователь: Gena (IP-адрес скрыт)
Дата: 06, November, 2012 13:42

Красиво придумать не получается, но можно попробовать что-то типа:

|"U=|v1004^A|$"|,if &uf('+90'v1004)<>&uf('+N1004') then '*' fi,

Re: Читатель (передача запроса в базу)
Пользователь: artgonch (IP-адрес скрыт)
Дата: 06, November, 2012 13:47

Gena написал(а):
-------------------------------------------------------
> Красиво придумать не получается, но можно
> попробовать что-то типа:
>
> |"U=|v1004^A|$"|,if &uf('+90'v1004)<>&uf('+N1004')
> then '*' fi,


Спасибо, но не помогло. Поиск вообще перестал работать.

Re: Читатель (передача запроса в базу)
Пользователь: Alio (IP-адрес скрыт)
Дата: 06, November, 2012 14:43

Вот такой должен быть формат
|"U=|v1004^A+|$"*|

Re: Читатель (передача запроса в базу)
Пользователь: artgonch (IP-адрес скрыт)
Дата: 06, November, 2012 15:15

Alio написал(а):
-------------------------------------------------------
> Вот такой должен быть формат
> |"U=|v1004^A+|$"*|

Спасибо, но и это не помогло. При поиске даже по одному ключу результата нет (хотя при первоначальном варианте поиск давал результаты).

Объясните, пожалуйста, как должна быть сформирована строка запроса.

Re: Читатель (передача запроса в базу)
Пользователь: Gena (IP-адрес скрыт)
Дата: 06, November, 2012 15:58

Alio написал(а):
-------------------------------------------------------
> Вот такой должен быть формат
> |"U=|v1004^A+|$"*|


Александр Иосифович, а при таком варианта то, что идет после знака +, добавляется ко всему, кроме последнего повторения. А если повторение одно, то добавляться не будет. А там ведь закрывающие кавычки...

Re: Читатель (передача запроса в базу)
Пользователь: artgonch (IP-адрес скрыт)
Дата: 06, November, 2012 16:00

Gena написал(а):
-------------------------------------------------------
> Alio написал(а):
> --------------------------------------------------
> -----
> > Вот такой должен быть формат
> > |"U=|v1004^A+|$"*|
>
>
> Александр Иосифович, а при таком варианта то, что
> идет после знака +, добавляется ко всему, кроме
> последнего повторения. А если повторение одно, то
> добавляться не будет. А там ведь закрывающие
> кавычки...

Я вообще не понимаю, что этот формат должен сформировать...

Re: Читатель (передача запроса в базу)
Пользователь: Gena (IP-адрес скрыт)
Дата: 06, November, 2012 16:06

Этот формат формирует поисковый запрос вида:

"U=ПОИСКОВІ_ТЕРМИН$"*

если есть только один термин, или

"U=ПОИСКОВІ_ТЕРМИН_1$"*"U=ПОИСКОВІ_ТЕРМИН_2$"*"U=ПОИСКОВІ_ТЕРМИН_3$"*

если терминов несколько.

Проблема в том, что в первоначальной конструкции даже при условии что термин только один, эта конструкция добавляет после него знак звездочки (этот символ значит, что термины объединяются логикой И, а знак + - или). Если термина два и более, то этот знак правильно интерпретируется, а в случае с одним термином - дает сбой.

Re: Читатель (передача запроса в базу)
Пользователь: artgonch (IP-адрес скрыт)
Дата: 06, November, 2012 16:08

Gena написал(а):
-------------------------------------------------------
> Этот формат формирует поисковый запрос вида:
>
> "U=ПОИСКОВІ_ТЕРМИН$"*
>
> если есть только один термин, или
>
> "U=ПОИСКОВІ_ТЕРМИН_1$"*"U=ПОИСКОВІ_ТЕРМИН_2$"*"U=П
> ОИСКОВІ_ТЕРМИН_3$"*
>
> если терминов несколько.
>
> Проблема в том, что в первоначальной конструкции
> даже при условии что термин только один, эта
> конструкция добавляет после него знак звездочки
> (этот символ значит, что термины объединяются
> логикой И, а знак + - или). Если термина два и
> более, то этот знак правильно интерпретируется, а
> в случае с одним термином - дает сбой.

Значит глюк программы? Почему же он до сих пор не исправлен?

Re: Читатель (передача запроса в базу)
Пользователь: Gena (IP-адрес скрыт)
Дата: 06, November, 2012 16:19

На счет глюка не знаю, скорее всего мы с вами чего-то не учли. Можете привести показать весь фрейм? Возможно мешает что-то из контекста

Re: Читатель (передача запроса в базу)
Пользователь: artgonch (IP-адрес скрыт)
Дата: 06, November, 2012 16:29

Gena написал(а):
-------------------------------------------------------
> На счет глюка не знаю, скорее всего мы с вами
> чего-то не учли. Можете привести показать весь
> фрейм? Возможно мешает что-то из контекста


Я все делаю в стандартной RSBBK. ничего не менял, кроме этого файла, т.к. он реализует поиск с логикой ИЛИ, а нам нужна логика И. Там много файлов... я даже не знаю, какой нужен.

Re: Читатель (передача запроса в базу)
Пользователь: Gena (IP-адрес скрыт)
Дата: 06, November, 2012 16:31

какой файл вы меняли? Покажите тот файл, фрагмент из которого вы тут привели



Редактировано 1 раз. Последний раз 06.11.2012 16:32 пользователем Gena.

Re: Читатель (передача запроса в базу)
Пользователь: artgonch (IP-адрес скрыт)
Дата: 06, November, 2012 16:33

Gena написал(а):
-------------------------------------------------------
> какой файл вы меняли? Покажите тот файл, фрагмент
> из которого вы тут привели


Файл: RSBBK\udcsearch_wn.pft
Строка: |"U=|v1004^A|$"+|,

Re: Читатель (передача запроса в базу)
Пользователь: Alio (IP-адрес скрыт)
Дата: 06, November, 2012 16:43

Gena написал(а):
-------------------------------------------------------
> Alio написал(а):
> --------------------------------------------------
> -----
> > Вот такой должен быть формат
> > |"U=|v1004^A+|$"*|
>
>
> Александр Иосифович, а при таком варианта то, что
> идет после знака +, добавляется ко всему, кроме
> последнего повторения. А если повторение одно, то
> добавляться не будет. А там ведь закрывающие
> кавычки...
Ты прав - надо так
|"U=|v1004^A+|$"*|,'$"'

Re: Читатель (передача запроса в базу)
Пользователь: artgonch (IP-адрес скрыт)
Дата: 22, November, 2012 11:18

Alio написал(а):
-------------------------------------------------------
> Gena написал(а):
> --------------------------------------------------
> -----
> > Alio написал(а):
> >
> --------------------------------------------------
>
> > -----
> > > Вот такой должен быть формат
> > > |"U=|v1004^A+|$"*|
> >
> >
> > Александр Иосифович, а при таком варианта то,
> что
> > идет после знака +, добавляется ко всему, кроме
> > последнего повторения. А если повторение одно,
> то
> > добавляться не будет. А там ведь закрывающие
> > кавычки...
> Ты прав - надо так
> |"U=|v1004^A+|$"*|,'$"'

Спасибо! Это то, что нужно.



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