yaz_search

(PHP 4 >= 4.0.1, PHP 5)

yaz_search -- Prépare une recherche

Description

int yaz_search ( resource id, string type, string query )

yaz_search() prépare une recherche sur le serveur identifié par id. type représente le type de requête : seul RPN est supporté actuellement, et dans ce cas, le troisième argument est un préfixe de notation de requête utilisé par YAZ. Comme pour yaz_connect(), yaz_search() n'est pas bloquante, et ne fait que préparer la recherche pour exécution ultérieure, avec yaz_wait().

Requêtes RPN

Les requêtes RPN sont des représentation textuelles des requêtes de type Type-1, comme définit dans le standard Z39.50. Cependant, dans la représentation textuelle utilisée par YAZ, une notation à préfixage est utilisée, c'est-à-dire que l'opérateur précède l'opérande. La chaîne de requête est une séquence de mots réservés, où les espaces sont ignorés, à moins qu'ils n'aient été mis entre guillemets doubles. Les mots réservés qui commencent par un arobase (@) sont considérés comme des opérateurs et traités comme tels.

Tableau 1. Opérateurs RPN

SyntaxeDescription
@and query1 query2intersection des requêtes query1 et query2
@or query1 query2union des requêtes query1 et query2
@;not query1 query2requêtes "query1 et non(query2)"
@set namenomme le résultat
@attrset set queryspécifie le jeu d'attributs de la requête. Cette construction n'est autorisée qu'une seule fois, au début d'une requête.
@attr set type=value queryApplique les attributs à une requête. Le type et la valeur sont des entiers indiquant les types et valeurs des attributs, dans cet ordre. Le jeu, si fourni, spécifie le jeu d'attributs utilisé.

Exemple 1. Exemples de requêtes

Vous pouvez rechercher des termes simples comme
ordinateur
qui identifieront les documents où "ordinateur" apparaît. Aucun attribut n'est spécifié.

La requête
"knuth donald"
recherche les documents où "knuth donald" apparaît (en supposant que le serveur supporte la recherche par phrase).

Cette requête applique deux attributs à la phrase recherchée :
@attr 1=1003 @attr 4=1 "knuth donald"
Le premier attribut est de type 1 (Bib-1), et sa valeur est 1003 (Auteur). Le second attribut est de type 4 (structure), valeur 1 (phrase), ce qui fait que la requête recherche les documents dont Donald Knuth est l'auteur.

Cette requête
@and @or a b @not @or c d e
sera traduite en notation infix comme ceci : (a or b) and ((c or d) not e).

Un autre exemple plus complexe :
@attrset gils @and @attr 1=4 art @attr 1=2000 company
. La requête utilise l'ensemble de sous attributs GILS. La requête recherche les documents où le mot art apparaît dans le titre (GILS,BIB-1) et dont la société (company) apparaît comme distributeur (GILS).

Vous pouvez trouver plus d'informations sur les requêtes et attributs sur le site de Z39.50 Maintenance Agency.

Note : Si vous préférez une notation plus conviviale, utilisez l'analyseur CCL : yaz_ccl_conf() et yaz_ccl_parse().