Еще раз о ПОСЛЕДОВАТЕЛЬНОМ ПОИСКЕ
Пользователь:
Alio (IP-адрес скрыт)
Дата: 01, February, 2008 12:26
Хочу еще раз обратить внимание пользователей на режим ПОСЛЕДОВАТЕЛЬНЫЙ ПОИСК - особенно в ИРБИС64!
Последовательный поиск предназначен для РАЗОВЫХ поисков, когда нельзя применить поиск по словарям. Если надобность в подобном поиске носит регулярный характер (хотя бы и раз в месяц), его надо сделать прямым, т.е. с помощью словаря. Любой последовательный поиск может быть реализован через поиск по словарю.
В ИРБИС64 применение последовательного поиска чревато следующими неприятными последствиями:
- если в результате последовательного поиска найдено документов больше, чем одна порция обмена (MAXBRIEFPORTION*7), листание такого результата становится делом, мягко говоря, не очень приятным (поскольку при переходе к очередной порции просмотра последовательный поиск проводится ЗАНОВО на сервере)
- если осуществляется корректировка документов, найденных последовательным поиском, то сохранение откорректированного документа оказывается ОЧЕНЬ медленным (потому что при каждом сохранении последовательный поиск на сервере повторяется ЗАНОВО). В этой ситуации можно порекомендовать поступать следующим образом: переходить на закладку НОВЫЙ/MFN и вызывать на корректуру нужный документ по его номеру (MFN)
Таким образом, можно сформулировать простое правило: если некий последовательный поиск приходится применять повторно, надо моделировать его с помощью поиска по словарю.
Пример (с которым столкнулся в одной из библиотек): с целью отыскания в БД RDR записей с ЛИШНИМИ ПРОБЕЛАМИ пользователи регулярно проводили соответствующие последовательные поиски и затем корректировку найденных документов. Т.к. БД RDR имела значительный объем, работа эта превращалась (в силу описанного выше) в настоящее мучение. Не обсуждая, насколько разумны вообще эти действия (поиск документов с лишними пробелами), можно предложить следующее решение.
Создается новый поиск по словарю в БД RDR "Наличие лишних пробелов". Для этого:
- добавляется новая строка в RDR.FST
1 0 if &uf('+0') : ' ' then 'XX=есть' fi /*здесь между кавычками три пробела
- в RDR.INI в раздел [SEARCH] добавляется новый поиск для словаря с префиксом XX=
В результате будет формироваться словарь с единственным термином "есть", по которому "мгновенно" будут отыскиваться документы, содержащие три и более пробелов подряд.
Редактировано 2 раз. Последний раз 01.02.2008 12:29 пользователем Alio.