Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
Страницы: <<123>>
Страница: 2 из 3
Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 18, August, 2016 15:56

Отключение ничего не дало. И с документацией не получилось ...

Вложения: Сервер ИРБИС64.doc (1.69MB)  
Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 19, August, 2016 08:14

Варианта два:
1. Подслушивать что передает клиент серверу на порт 6666 при авторизации и из PHP отправлять то же самое. Возможно, потом придется подслуживать и другие команды.

2. Перейти на более новую версию ИРБИС

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 19, August, 2016 10:31

Попытался подключиться к v2015 ... не получилось:
Connect... offline

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 19, August, 2016 11:07

Скорее всего проблемы с подключением.

Вот немного упрощенный код, без класса "Электронный каталог"

http://pastebin.com/1k1P2g4t

У меня пишет
Connect - OK
Login - OK
Max. MFN = 71040

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 19, August, 2016 12:48

Connect - Bad

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 19, August, 2016 12:54

Значит проблемы с 2015 сервером, не принимает подключения.
Настройки IP и порта верно указаны? Брандмауер не блокирует входящие подключения на сервере? Я так понимаю, что 2015 на другом компьютере установлен?

Должен быть разрешен сетевой доступ с компьютера где установлен веб-сервер (где фактически работает скрипт PHP) на ирбис-сервер. Можно еще проверить возможность подключения, запустив клиентский АРМ

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 23, August, 2016 07:36

Добрый день.
Разобрался с подключением к v2015 (эта версия была подключена на нестандартный порт - так что прошу прощения за хлопоты). Упрощенный вариант сработал:

Connect - OK
Login - OK
Max. MFN = 138

Огромное спасибо !!! Напомните, пожалуйста, ссылочку где можно отслеживать обновления Вашей разработки.
С уважением, Александр.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 23, August, 2016 10:13

На гитхабе
https://github.com/AleksandrDruzhinin/irbis64-php

но и в этой теме тоже

Пока разработка приостановилась, т.к. на другой проект переключился. Но все замечания и предложения принимаю.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 23, August, 2016 12:46

Благодарю !!!

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: Dmitrin (IP-адрес скрыт)
Дата: 27, September, 2016 10:40

Добрый день. А подскажите, где можно взять информацию об использовании ключевых букв? Вот есть пример

/* Пример для поиска книги (ПО АВТОРУ "Иванов..." ИЛИ "Петров...") И (ВИД ДОКУМЕНТА = ОДНОТОМНИК ИЛИ МНОГОТОМНИК) И (КЛЮЧЕВЫЕ СЛОВА СОДЕРЖАТ "фантастика")
$search_exp = '("A=Иванов$" +"A=Петров$") * ("V=03" + "V=05") * ("K=фантастика$")';
$ret = $irbis->records_search($search_exp, 1000, 1, '@brief');

Где можно посмотреть, что именно вид документа это V, V=03 это Однотомник и так далее?

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 27, September, 2016 11:48

Dmitrin написал(а):
-------------------------------------------------------
> Где можно посмотреть, что именно вид документа это
> V, V=03 это Однотомник и так далее?

Файл VD.MNU в папке Deposit на сервере -- здесь перечислены коды.

Секция SEARCH в файле irbisc.ini (или irbisr.ini) опять же на сервере -- здесь перечислены используемые префиксы.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: Dmitrin (IP-адрес скрыт)
Дата: 27, September, 2016 13:20

А они для всех одинаковы? Не могли бы вы эти файлы скинуть, пока нет доступа к серверу.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 27, September, 2016 14:11

Dmitrin написал(а):
-------------------------------------------------------
> А они для всех одинаковы? Не могли бы вы эти файлы
> скинуть, пока нет доступа к серверу.

См. прикрепленные файлы.

Библиотека может настроить эти файлы любым удобным для себя способом, в том числе удалить формирование поиска по виду документов (если решит, что такой поиск им не нужен). В этом большое преимущество ИРБИСа перед системами, где настройку может выполнить только специально приглашенный представитель производителя.

Так что надо быть готовым к тому, что у клиента не окажется поиска по префиксу V=, или он будет иметь совершенно иной смысл, например, будет означать объем издания.

Правда, подавляющее большинство библиотек подобными экспериментами не занимаются, и это хорошо. smiling smiley

Изучить ИРБИС64 "вдоль и поперёк" можно с помощью демонстрационной версии, которую можно скачать по адресу ftp://ftp.gpntb.ru/pub/irbis/irbis64_DEMO.zip.

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

Вложения: irbisc.ini (25.7KB)   VD.MNU (1.8KB)  
Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: Dmitrin (IP-адрес скрыт)
Дата: 05, October, 2016 07:24

Спасибо большое) А не подскажите, случайно нет готового класса на php для поиска по алфавиту, по какому-либо расширенному поиску по книгам, авторам?

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 05, October, 2016 10:18

Класс https://github.com/AleksandrDruzhinin/irbis64-php может производить поиск по словарям и последовательный поиск по записям (синтаксис UNIFOR)

Для поиска по словарю достаточно условия

$search_exp = '("A=Иванов$" +"A=Петров$") * ("V=03" + "V=05") * ("K=фантастика$")';
$ret = $irbis->records_search($search_exp, 1000, 1, '@brief');

Для последовательного поиска нужно добавить еще параметры

$ret = $irbis->records_search($search_exp, 1000, 1, '@brief','','',"!if (v11:'М') then '1' else '0' fi");

v11:'Иван' - Если поле 11 содержит фрагмент "Иван"

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: Dmitrin (IP-адрес скрыт)
Дата: 05, October, 2016 11:13

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

$irbis->set_db('IBIS');
$search_exp = '"A=И$"';
$ret = $irbis->records_search($search_exp, 1000, 1, '@brief');
if ($irbis->error_code != 0) echo $irbis->error() . PHP_EOL;
print_r($ret);


И вот имеется сокращенный формат brief

$format = '@brief' - оптимизированный сокращенный формат (см. BRIEF.PFT - выводится в список записей в окне каталогизатора)

Есть какие-то другие форматы?

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: Dmitrin (IP-адрес скрыт)
Дата: 05, October, 2016 14:30

И подскажите, есть информация о выдаче книг читателям. Как по шифру можно получить книгу на php? Просто хотя бы название её.

Вложения: Шифры.png (14.4KB)  
Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 05, October, 2016 15:24

История выданных книг хранится в записи читателя в базе RDR (поле не помню какое, вроде 40 - информация о дате выдачи, дате возврата, бд электронного каталога, название книги и т.п.)

В электронном каталоге у записей об экземплярах в 910 поле хранится отметка о том, находится ли книга на руках в данный момент

По шифру можно найти книгу используя поиск по словарю I=

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 05, October, 2016 15:27

Цитата:
Есть какие-то другие форматы?
Есть и другие, доступные для выбранной базы находятся в самой папке с базой и в общей папке Deposit, имеют формат файла *.PFT

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: Dmitrin (IP-адрес скрыт)
Дата: 05, October, 2016 20:20

Спасибо большое, с выводом книг читателей вроде разобрался. Вы не могли бы подсказать с алфавитным выводом авторов и книг?

Так пытаюсь по авторам вывести (На букву И)
$irbis->set_db('IBIS');
$search_exp = '"A=И$"';
$ret = $irbis->records_search($search_exp, 1000, 1, '@brief');
if ($irbis->error_code != 0) echo $irbis->error() . PHP_EOL;
print_r($ret);

Но данный запрос $search_exp = '"A=И$"'; выводит всех авторов, у которых имеется буква И в ФИО. Как можно правильно запрос составить?

И насколько я понял, чтобы по книгам искать нужно использовать T?
$search_exp = '"T=И$"';

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 06, October, 2016 13:29

T= - префикс словаря для поиска по заглавиям книг

Пользуюсь программой smsniff для анализа протокола ИРБИС.
Видно что отправляет клиентская часть и ответ от сервера.

Цитата:
Но данный запрос $search_exp = '"A=И$"'; выводит всех авторов, у которых имеется буква И в ФИО. Как можно правильно запрос составить?
Каталогизатор отправляет точно такой же запрос при поиске по словарю.
Может быть проще фильтровать результат поиска на стороне PHP.

Re: Клиентская библиотека ИРБИС64 на языке PHP
Пользователь: Dmitrin (IP-адрес скрыт)
Дата: 09, May, 2017 10:35

Добрый день. В прошлом году писал сюда, и мне очень помогли советами. На днях возникла следующая проблема, подскажите, как можно её решить.

Имеется поиск на сайте. Обрабатываю результат поиска таким образом (соединяется с ИРБИСом нормально, без ошибок)

$search = clear_data($_GET[search_katalog]);

// По авторам
$search_exp = '("A=' . $search . '$")';
$ret = $irbis->records_search($search_exp, 1000, 1, '@brief');
if ($irbis->error_code != 0) echo $irbis->error() . PHP_EOL;
if($ret[found] > 0) {
echo "<strong>Найдено $ret[found] записи(ей) по авторам</strong>";
foreach ($ret[records] as $key => $value) {
$temp_array = explode("#", $value);
echo "<a href='/elektronnyy-katalog/?id=$temp_array[0]' class='kat_link'>$temp_array[1]</a>";
}
}

Раньше этот код отрабатывал всегда верно. Сейчас появилась такая вот странность. Ввожу я "Пушк". И в $ret приходит такие данные (см рисунок 1). Когда ввожу "Пуш", то приходят уже все нужные данные (id и наименование). Получается, когда больше 3х символов ввожу в поисковой запрос, перестает передаваться наименование книги. В чем может быть проблема?

Вложения: Снимок.PNG (21.5KB)   Снимок2.PNG (69.8KB)  
Re: Клиентская библиотека ИРБИС64 на языке PHP
Пользователь: Gena (IP-адрес скрыт)
Дата: 13, May, 2017 15:23

Старнно. А вы пробовали включить режим отладки и посмотреть ответы сервера в чистом виде?

Re: Клиентская библиотека ИРБИС64 на языке PHP
Пользователь: library_ngmu (IP-адрес скрыт)
Дата: 25, September, 2017 09:10

Здравствуйте! А как вы реализуете чтение файлов с сервера, в частности интересует чтение файлов формата .pdf

Re: Клиентская библиотека ИРБИС64 на языке PHP
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 07, June, 2019 16:57

Александр Иосифович такие вопросы не любит, но как сделать сортировку найденных записей? Как быть с релевантностью и ранжированием?

Re: Клиентская библиотека ИРБИС64 на языке PHP
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 07, June, 2019 17:27

woodyfon написал(а):
-------------------------------------------------------
> Александр Иосифович такие вопросы не любит, но как
> сделать сортировку найденных записей? Как быть с
> релевантностью и ранжированием?

Сортировка записей выполняется клиентом самостоятельно. Вы можете попросить сервер расформатировать найденные записи, например, по @brief. Как это сделать см. здесь. Сервер пришлёт набор строк вроде такого:
1234#Пушкин Сказка о рыбаке и рыбке
2345#Акунин Приключения Эраста Фандорина
3456#Донцова Евлампия Романова
Ваша задача - отсортировать эти строки по значению после #.

Re: Клиентская библиотека ИРБИС64 на языке PHP
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 07, June, 2019 22:21

Цитата:
Вы можете попросить сервер расформатировать найденные записи, например, по @brief.
Записи возвращаются в порядке возрастания MFN. На стороне клиента можно сделать сортировку только партии возвращаемых записей, но не более MAX_POSTINGS_IN_PACKET (32758).
Т. е. просортировать результаты поиска можно будет только в том случае, если записей будет не более чем 32 тысячи.

Например, в том же Web-IRBIS 2013 сортировку вообще нельзя применить, если количество найденных записей уже больше 5000

В принципе для библиографических данных это приемлимо.

Но как быть с полнотекстовым поиском в ИРБИСе. По сути это обычный поиск по словарю с русской морфологией. Усечение должно было дать стемминг. Но он не настраиваемый.

Такого понятия как ранжирование результатов вообще нет.

Re: Клиентская библиотека ИРБИС64 на языке PHP
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 08, June, 2019 03:34

woodyfon написал(а):
-------------------------------------------------------
> Записи возвращаются в порядке возрастания MFN. На
> стороне клиента можно сделать сортировку только
> партии возвращаемых записей, но не более
> MAX_POSTINGS_IN_PACKET (32758).

Собственно, АРМ "Каталогизатор" так и делает (см. параметр MAX_BRIEF_PORTION в INI-файле).

> Т. е. просортировать результаты поиска можно будет
> только в том случае, если записей будет не более
> чем 32 тысячи.

Можно повторить запрос (см. параметр "first_record" в запросе) и склеить результаты.

> Но как быть с полнотекстовым поиском в ИРБИСе. По
> сути это обычный поиск по словарю с русской
> морфологией. Усечение должно было дать стемминг.
> Но он не настраиваемый.

В новых версиях ИРБИС при поиске по ключевым словам можно применить суффикс "@" (поиск с учетом морфологии).

> Такого понятия как ранжирование результатов вообще
> нет.

Именно так! Ранжировать результаты в текущей модели "клиент-сервер" ИРБИС64 должен сам клиент, а как он это будет делать - сервер не интересует.

Re: Клиентская библиотека ИРБИС64 на языке PHP
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 09, June, 2019 00:48

Все время получаю ошибку CLIENT_IDENTIFIER_WRONG -3335 (неправильный уникальный идентификатор). Если изменить на идентификатор на тот, который имеет уже зарегистрированный пользователь, то ошибка -3337 (такой пользователь уже зарегистрирован). Команды, например, поиска записей при указании АРМа под которым был произведен вход выполняются.
+
Решено: не выполнил регистрацию пользователя.

Как правильно формировать уникальный идентификатор и номер команды?



Редактировано 1 раз. Последний раз 09.06.2019 00:54 пользователем woodyfon.

Re: Клиентская библиотека ИРБИС64 на языке PHP
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 09, June, 2019 03:34

woodyfon написал(а):
-------------------------------------------------------
> Как правильно формировать уникальный идентификатор
> и номер команды?

Я формирую так:
$this->clientId = rand(100000, 900000);
(см. https://github.com/amironov73/PhpIrbis/blob/master/Source/PhpIrbis.php#L3415)

С номером команды всё ещё проще: начинаю с 1 и добавляю по 1 после каждого обращения к серверу (см. https://github.com/amironov73/PhpIrbis/blob/master/Source/PhpIrbis.php#L3580).

и пока с этим проблем не было.

Страницы: <<123>>
Страница: 2 из 3


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