Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис    FTP-сервер
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: S-presso (IP-адрес скрыт)
Дата: 28, February, 2012 16:32

Пишу курсовую работу - Web-оболочку на ASP.NET для читателей библиотеки с поиском книг, заказами, просмотром данных о читателе, регистрацией читателей. Работает почти все, кроме поиска нужных книг. Используя функцию IC_search из irbis64_client_dll, я уже могу найти нужного читателя по его идентификатору, задав в строке поиска функции "RI=", и нужную книгу по ее шифру, используя "I=". Но поиск книг по ключевым словам, автору и заглавию почему-то не работает. При использовании аналогичным образом поисковых выражений "K=", "A=" и "Т=" функция IC_search возвращает 0 во всех случаях. Пробовал и без префикса, с усечением / без усечения, в виде <термин>/(tag) - безрезультатно. Подскажите пожалуйста, в чем может быть дело.

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: Alio (IP-адрес скрыт)
Дата: 28, February, 2012 16:52

S-presso написал(а):
-------------------------------------------------------
> Пишу курсовую работу - Web-оболочку на ASP.NET для
> читателей библиотеки с поиском книг, заказами,
> просмотром данных о читателе, регистрацией
> читателей. Работает почти все, кроме поиска нужных
> книг. Используя функцию IC_search из
> irbis64_client_dll, я уже могу найти нужного
> читателя по его идентификатору, задав в строке
> поиска функции "RI=", и нужную книгу по ее шифру,
> используя "I=". Но поиск книг по ключевым словам,
> автору и заглавию почему-то не работает. При
> использовании аналогичным образом поисковых
> выражений "K=", "A=" и "Т=" функция IC_search
> возвращает 0 во всех случаях.
Покажите, как Вы формируете поисковое выражение...
(Кстати, Вы помните, что все данные должны быть в кодировке UTF8?)

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: S-presso (IP-адрес скрыт)
Дата: 28, February, 2012 19:17

Спасибо за быстрый ответ, а то мне уже послезавтра защищать работу. Да, действительно, о кодировке UTF8 я забыл, когда делал интерфейс к функции IC_search (объявил параметр запроса строкой String). Сейчас сделал перегрузки для функций поиска с аргументом типа IntPtr, применил к формируемой строке поиска свой метод StringToUtf8(), вызвал функцию поиска с возвращенным StringToUtf8() указателем в качестве параметра, и все заработало.

Александр Иосифович, а Вы не могли бы ответить на вопрос, который я задавал в другой теме:

S-presso написал(а):
-------------------------------------------------------
> как сделать, чтобы в результате
> поиска при щелчке на найденные записи ЭК в окне
> описания записей выделялись красным все найденные
> термины? Надо применить какую-то функцию к строке
> форматирования, взятой из файла kk_pth_O (в моем
> случае), с параметрами в виде слов запроса, и
> затем передать эту строку функции IC_search?

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: Alio (IP-адрес скрыт)
Дата: 29, February, 2012 10:11

Такой "встроенной" поддержки в irbis64_client.dll нет. Это надо делать самому, "ручками".

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: S-presso (IP-адрес скрыт)
Дата: 29, February, 2012 11:34

Понятно, обойдусь пока без выделения. Другой вопрос: как составить поисковый запрос для термина, включающего в себя символ "/"? Например, мне надо найти книгу с шифром 2001-3/9447. Вызываю функцию IC_search с параметром "I=2001-3/9447" (с обрамляющими кавычками) и получаю результат 0. Срабатывает только такой поисковый запрос: "I=2001-3$", все найденные записи я потом проверяю на совпадение в них поля шифра со значением 2001-3/9447 и отбираю нужную запись. Но мне интересно, как в этом случае обойтись одним поисковым запросом?

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: Alio (IP-адрес скрыт)
Дата: 29, February, 2012 14:29

У Вас в поле 903 этого документа что стоит:
2001-3/9447
или
2001-3/9447-nnnn
Если так, как во втором случае, то поисковое выражение надо задавать
"I=2001-3/9447$"

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: S-presso (IP-адрес скрыт)
Дата: 29, February, 2012 16:05

Да, действительно, "2001-3/9447" находит, а шифры, оканчивающиеся на -nnnn, уже нет. Для них всегда надо использовать усечение?

Александр Иосифович, а есть ли в irbis64_client.dll средства, позволяющие обрабатывать подстроки вида "IRBIS:0,,", "IRBIS:!!". Я так понимаю, что в Каталогизаторе если при расформатировании записей встречаются подобные подстроки, то в каталоге "C:/irbiswrk" автоматически создаются соответствующие файлы. Задача - получить изображение читательского билета. Для своего приложения я просто поместил в каталог на сервере логотип ГПНТБ и если в результате расформатирования записи читателя присутствует строка "IRBIS:0,,", подставляю на это место путь к файлу логотипа. Полагаю, что все такие ссылки должны обрабатываться на лету автоматически? Как таким же образом получить штрихкод, который, как я понимаю, уникальный для каждого читательского билета? Он уже хранится где-то в ресурсах, или автоматически генерируется для каждого читателя? А для некоторых зарезервированных читателей выводится еще фото, но я не нашел в полях записи о читателе ссылки на это изображение. При расформатировании Вашей записи на месте URL портрета присутствует подстрока "IRBIS:12,,0000000001,1", которую я так же заменяю на путь на сервере. А для других читателей какая ссылка должна будет стоять в общем случае, если им сопоставлено фото?

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: Alio (IP-адрес скрыт)
Дата: 29, February, 2012 16:48

S-presso написал(а):
-------------------------------------------------------
> Да, действительно, "2001-3/9447" находит, а шифры,
> оканчивающиеся на -nnnn, уже нет. Для них всегда
> надо использовать усечение?
А как может быть иначе?
>
> Александр Иосифович, а есть ли в
> irbis64_client.dll средства, позволяющие
> обрабатывать подстроки вида "IRBIS:0,,",
> "IRBIS:!!".
Нет.

Я так понимаю, что в Каталогизаторе
> если при расформатировании записей встречаются
> подобные подстроки, то в каталоге "C:/irbiswrk"
> автоматически создаются соответствующие файлы.
> Задача - получить изображение читательского
> билета. Для своего приложения я просто поместил в
> каталог на сервере логотип ГПНТБ и если в
> результате расформатирования записи читателя
> присутствует строка "IRBIS:0,,", подставляю на это
> место путь к файлу логотипа. Полагаю, что все
> такие ссылки должны обрабатываться на лету
> автоматически? Как таким же образом получить
> штрихкод, который, как я понимаю, уникальный для
> каждого читательского билета?
Изображение штрихкода по его значению формируется с помощью специальной компоненты Delphi - этого в irbis64_client.dll нет.


Он уже хранится
> где-то в ресурсах, или автоматически генерируется
> для каждого читателя? А для некоторых
> зарезервированных читателей выводится еще фото, но
> я не нашел в полях записи о читателе ссылки на это
> изображение.
Фотография читателя может указываться двумя способами:
1. В 950 поле - в виде Имени файла, который находится в директории \datai\rdr\ Данный ресурс можно получить с помощью функции IC_getbinaryresourse
2. В поле 953 - собственно графический ресурс, закодированный с помощью persent encoding

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: S-presso (IP-адрес скрыт)
Дата: 29, February, 2012 17:34

Спасибо. Если Вас не затруднит, помогите составить поисковый запрос для нахождения читателя по его ФИО. Я использую функцию, имеющую такой код:

public int[] FindReader(string surname, string name, string middlename, string password)
        {
            <...>
                        
            StringBuilder sb_exp = new StringBuilder();
            int[] id = null;
            if (surname != "")
                sb_exp.Append("\"" + surname + "\"/(10)");
            
            if (name != "")
                sb_exp.Append(" * \"" + name + "\"/(11)");

            if (middlename != "")
                sb_exp.Append(" * \"" + middlename + "\"/(12)");

            <...>

            string s_exp = sb_exp.ToString();
            SearchDirect(s_exp, out id);

            <...>
            return id;
        }

В общем, при передаче функции FindReader параметров surname, name и middlename формируется такая строка запроса:

"surname"/(10) * "name"/(11) * "middlename"/(12)

Но IC_search для этого запроса возвращает 0, так же как и для

surname/(10) * name/(11) * middlename/(12)

Перекодировка в UTF-8 осуществляется внутри метода SearchDirect, который вызывает IC_search. Поиск по идентификатору читателя работает. Здесь тоже нужен префикс?

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: Alio (IP-адрес скрыт)
Дата: 29, February, 2012 18:40

Запрос у Вас неправильный (если Вы не меняли RDR.FST)
Надо сделать запрос

"I=surname name middlename"

т.е. через пробел соединить содержимое полей 10 11 12 и дать префикс I=

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: S-presso (IP-адрес скрыт)
Дата: 29, February, 2012 22:41

Заработало, только там надо не "I=", а "RI=". Отсечение тоже работает, но что если нам не известна фамилия читателя? Поиск по имени / отчеству не предусмотрен?

Еще вопрос. Можно ли как-то контролировать отклик сервера IRBIS? У меня часто пропадает соединение с сервером (страница начинает грузиться и подвисает), чего не наблюдалось в десктопном клиенте. Возможно какое-то средство обработки ошибок - повторное обращение или перезагрузка сервера IRBIS по истечении определенного времени? Без такого обработчика реальное применение моей программы затруднительно - надо, чтобы на стороне сервера кто-то сидел и отвечал на сообщения об ошибках. Или тут может помочь только работа через Web-шлюз и воспользоваться этой оболочкой смогут только те библиотеки, которые приобрели Web Ирбис или OPAC?

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: Alio (IP-адрес скрыт)
Дата: 01, March, 2012 10:07

S-presso написал(а):
-------------------------------------------------------
> Заработало, только там надо не "I=", а "RI=".
> Отсечение тоже работает, но что если нам не
> известна фамилия читателя? Поиск по имени /
> отчеству не предусмотрен?
Предусмотрите - в чем проблема? Для этого надо уметь управлять инверсией (технологией создания словарей) - RDR.FST


>
> Еще вопрос. Можно ли как-то контролировать отклик
> сервера IRBIS? У меня часто пропадает соединение с
> сервером (страница начинает грузиться и
> подвисает), чего не наблюдалось в десктопном
> клиенте.
Надо выяснять - почему это происходит...

Возможно какое-то средство обработки
> ошибок - повторное обращение или перезагрузка
> сервера IRBIS по истечении определенного времени?
Есть версия irbis64_client.dll в которой ИНАЧЕ трактуется функция
IC_set_show_waiting(Aopt: integer)
Aopt - определяет время таймаута при обращении к серверу.


> Без такого обработчика реальное применение моей
> программы затруднительно - надо, чтобы на стороне
> сервера кто-то сидел и отвечал на сообщения об
> ошибках. Или тут может помочь только работа через
> Web-шлюз и воспользоваться этой оболочкой смогут
> только те библиотеки, которые приобрели Web Ирбис
> или OPAC?

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: S-presso (IP-адрес скрыт)
Дата: 02, March, 2012 11:36

Вчера защитил проект. Вот несколько скриншотов готового (вернее, почти готового приложения), по которым можно оценить его функциональность:

http://img208.imageshack.us/img208/2430/snap1rh.jpg

http://img831.imageshack.us/img831/5886/snap2g.jpg



При смене текущей выделенной строки таблицы должна была обновиться информация о читателе, но соединение было потеряно (может, смена версии .dll решит проблему?)
http://img407.imageshack.us/img407/1651/snap3cg.jpg


Alio написал(а):
-------------------------------------------------------
> Есть версия irbis64_client.dll в которой ИНАЧЕ
> трактуется функция
> IC_set_show_waiting(Aopt: integer)
> Aopt - определяет время таймаута при обращении к
> серверу.
>

А Вы можете выслать мне эту версию?

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: Alio (IP-адрес скрыт)
Дата: 02, March, 2012 12:01

S-presso написал(а):
-------------------------------------------------------
> Вчера защитил проект. Вот несколько скриншотов
> готового (вернее, почти готового приложения), по
> которым можно оценить его функциональность:
>
>>
>
> При смене текущей выделенной строки таблицы должна
> была обновиться информация о читателе, но
> соединение было потеряно (может, смена версии .dll
> решит проблему?)
Нет, не решит - это несвязанные вещи.

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: S-presso (IP-адрес скрыт)
Дата: 02, March, 2012 14:53

Ну, тогда бесплатной альтернативы Web ИРБИС не получится, а жаль...sad smiley Впрочем, заявка на OPAC у нас уже имеется. Вот если бы еще труд в библиотеках оплачивался так же, как траты на оборудование / ПО, особенно учитывая, что у некоторых из нас тоже могут быть кое-какие небезынтересные идеи. Например, моя программа, выделяющая из текста элементы оглавления на основе регулярных выражений, позволяет ускорять ввод оглавления сборников статей в несколько раз. Жаль только, что пользоваться программой у нас пока умеет только ее автор...

Re: Web-интерфейс к IRBIS64 на ASP.NET
Пользователь: Lavrinovich (IP-адрес скрыт)
Дата: 24, June, 2012 13:18

А что именно не получится7 У вас ведь и заказ есть...
Но вот почему вообще довольно часто хотят писать свой именно веб-модуль (и не только для ИРБИС) [www.informsystema.ru]
Для CDS/ISIS for DOS (а также нечто связанное с Z39.50) писали и много рассказывали на"КРЫМах" О.Л.Жижимов и Н.А.Мазов, для ИРБИС - Н.Темирходжаев aka Nodir [irbis.gpntb.ru], а сегодня - некто из Самары aka kepheer [irbis.gpntb.ru]
Понятно желание адаптировать, обогатить веб-интерфейс (лучшие примеры МУБиНТ и Томская МИБС), но это совсем другое.
Если дело только и именно в цене "коробочной версии", почему тогда не пишут АБИС целиком? Сегодня известна только "Яуза", причем кажется, что она - не "с нуля"...
А про альтернативу вообще... под альтернативой обычно понимается бесплатное (например, OpenOffice.org или The GIMP), а также линуксовое или многоплатформенное ("многоосное").
Из СУБД это PostgreSQL, MySQL, Berckeley DB.
Дополнительные требования для РФ/СНГ - с русским интерфейсом и/или с возможностью локализации интерфейса, с русскими помощью и документацией. Из АБИС на сегодня это Абсотек Юникод - многоплатформенная (Windows, Linux, несколько СУБД), современная, качественно русифицированная. Есть еще ABSOPAC UNICODE [opac.mpei.ru], но о ней - ничего. Или это опять только веб-интерфейс?
А в данном случае примечательно, что Разработчик не противодействует Конкуренту, а даже помогает ему...

irbis_arbat@mail.ru



Редактировано 4 раз. Последний раз 27.06.2012 10:00 пользователем Lavrinovich.



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