В базе выполнен комплексный поиск: все записи с датой последней корректировки 20110901 и типом записи SPEC. Нужно найти все записи, которые не соответствуют этому поиску. Т.е. инвертировать результаты такого поиска.
Нууу... я бы попробовал по виду документа. Там достаточно небольшое количество терминов характеризуют весь каталог вместе. Фактически надо отобрать: Книги в целом + Периодику + Статьи
Можно попробывать последовательный поиск:
not (v920: 'SPEC' and v907: '20110901')
А если много времени, то глобальной отметить рез-ты поиска, а потом последовательным по отсутствию отметки.
То, что задача решается последовательным поиском - это понятно. Но если отбор делается, к примеру, для глобальной корректировки, то последовательный поиск я исключаю сразу. Только словарь.
Наверное да, проще сделать любой поиск, чтобы получить все, а потом логикой НЕТ эти запросы объединить.
Пожалуй, будет полезным включить эту функцию в число стандартных видов поиска. Редко, но может быть нужна. Помню пример (кажется, от Вадима Степанова) - Эльбрус, но не гора.
Можно усложнять до бесконечности: Эльбрус - не гора и не процессор, Агдам - не город, не ж.д. станция и не вино...
Редактировано 1 раз. Последний раз 29.09.2011 13:11 пользователем Lavrinovich.
Gena написал(а):
-------------------------------------------------------
> можно выполнить какой-нибудь поиск, по которому
> выйдет вся база, а потом выбрать его и твой поиск
> с указанием логики НЕТ... Может и получится...
В ibis_kod.fst формируется термин "vrl="v920 (903 0 "vrl="v920/...)
Он не включен в сценарий поиска, но изменив сценарий, по нему можно отобрать все документы ЭК кроме SPEC.
А дальше - как у Л.Н.Очаговой - not (v907: '20110901')
Панев Максим написал(а):
-------------------------------------------------------
> В базе выполнен комплексный поиск: все записи с
> датой последней корректировки 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