Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис    FTP-сервер
Задачки для любознательных :  ИРБИС Irbis
 
Задачка №7
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 07, September, 2011 10:56

В базе выполнен комплексный поиск: все записи с датой последней корректировки 20110901 и типом записи SPEC. Нужно найти все записи, которые не соответствуют этому поиску. Т.е. инвертировать результаты такого поиска.

Как это сделать?

Re: Задачка №7
Пользователь: Gena (IP-адрес скрыт)
Дата: 07, September, 2011 11:09

можно выполнить какой-нибудь поиск, по которому выйдет вся база, а потом выбрать его и твой поиск с указанием логики НЕТ... Может и получится...

AVD System, Техническая поддержка, [www.open4u.ru]

Re: Задачка №7
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 07, September, 2011 11:55

Я думал об этом. Но не смог найти стандартного термина для выбора всех записей.

Re: Задачка №7
Пользователь: Gena (IP-адрес скрыт)
Дата: 07, September, 2011 12:06

Нууу... я бы попробовал по виду документа. Там достаточно небольшое количество терминов характеризуют весь каталог вместе. Фактически надо отобрать: Книги в целом + Периодику + Статьи

AVD System, Техническая поддержка, [www.open4u.ru]

Re: Задачка №7
Пользователь: ochagova (IP-адрес скрыт)
Дата: 07, September, 2011 14:28

Можно попробывать последовательный поиск:
not (v920: 'SPEC' and v907: '20110901')
А если много времени, то глобальной отметить рез-ты поиска, а потом последовательным по отсутствию отметки.

Re: Задачка №7
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 07, September, 2011 14:52

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

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

Re: Задачка №7
Пользователь: Lavrinovich (IP-адрес скрыт)
Дата: 29, September, 2011 13:09

Пожалуй, будет полезным включить эту функцию в число стандартных видов поиска. Редко, но может быть нужна. Помню пример (кажется, от Вадима Степанова) - Эльбрус, но не гора.
Можно усложнять до бесконечности: Эльбрус - не гора и не процессор, Агдам - не город, не ж.д. станция и не вино...



Редактировано 1 раз. Последний раз 29.09.2011 13:11 пользователем Lavrinovich.

Re: Задачка №7
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 29, September, 2011 13:44

Gena написал(а):
-------------------------------------------------------
> можно выполнить какой-нибудь поиск, по которому
> выйдет вся база, а потом выбрать его и твой поиск
> с указанием логики НЕТ... Может и получится...


В ibis_kod.fst формируется термин "vrl="v920 (903 0 "vrl="v920/...)
Он не включен в сценарий поиска, но изменив сценарий, по нему можно отобрать все документы ЭК кроме SPEC.
А дальше - как у Л.Н.Очаговой - not (v907: '20110901')

Re: Задачка №7
Пользователь: Сорокина Лариса (IP-адрес скрыт)
Дата: 16, March, 2012 13:23

Панев Максим написал(а):
-------------------------------------------------------
> В базе выполнен комплексный поиск: все записи с
> датой последней корректировки 20110901 и типом
> записи SPEC. Нужно найти все записи, которые не
> соответствуют этому поиску. Т.е. инвертировать
> результаты такого поиска.
>
> Как это сделать?

Только последовательным поиском так:
rsum(if v920:'SPEC'then '0;' else if &uf('Av907#'&uf('+N907')):'20110901'then'0;'else'1;'fi fi)>0
или сначала по словарю вид документа исключить 'SPEC', затем уточнить последовательным:
rsum(if &uf('Av907#'&uf('+N907')):'20110901'then'0;'else'1;'fi)>0

Re: Задачка №7
Пользователь: Lavrinovich (IP-адрес скрыт)
Дата: 11, April, 2012 15:14

То есть логический оператор НЕ, проще говоря? Булева алгебра. По идее это должна быть простейшая задача.

irbis_arbat@mail.ru



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