Построитель запросов
Класс Search
представляет собой построитель запросов в синтаксисе прямого поиска ИРБИС64. В нём имеются следующие статические методы:
all() – отбор всех документов в базе. Фактически строит запрос
I=$
.equals($prefix, …) – поиск по совпадению с одним из перечисленных значений. Возвращает построитель запросов для последующих цепочечных вызовов.
Экземплярные методы:
and_(….) – логическое И. Возвращает построитель запросов для последующих цепочечных вызовов.
not_($text) – логическое НЕ. Возвращает построитель запросов для последующих цепочечных вызовов.
or_(…) – логическое ИЛИ. Возвращает построитель запросов для последующих цепочечных вызовов.
sameField(…) – логический оператор “в том же поле”. Возвращает построитель запросов для последующих цепочечных вызовов.
sameRepeat(…) – логический оператор “в том же повторении поля”. Возвращает построитель запросов для последующих цепочечных вызовов.
Пример:
$expression = (string) Search::equals('TJ=', 'Аврора',
'Новый мир')->and_(Search::equals('G=', '199$', '200$'));
Поскольку вышеприведённый синтаксис довольно громоздкий, предоставляются следующие функции, значительно упрощающие формирование запроса:
Функция |
Поиск по |
---|---|
author |
автору |
bbk |
индексу ББК |
document_kind |
виду документа |
keyword |
ключевым словам |
language |
языку текста |
magazine |
заглавию журнала |
mhr |
месту хранения |
number |
инвентарному номеру |
place |
месту издания (городу) |
publisher |
издательству |
rzn |
разделу знаний |
subject |
предметной рубрике |
title |
заглавию |
udc |
индексу УДК |
year |
году издания |
Пример применения построителя с упрощённым формированием запроса:
$client = new Irbis\Connection();
$client->host = 'irbis.server';
$client->port = 5555;
$client->username = 'ninja';
$client->password = 'i_am_invisible';
$client->connect();
$expression = Irbis\author('Пушкин$')->and_(Irbis\title('СКАЗКИ$'));
$found = $client->searchCount($expression);
echo "Найдено: ", $found;
$client->disconnect();