# yaz_search

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_search — Prepara una búsqueda

### Descripción

yaz_search(resource `$id`, string `$type`, string `$query`): bool

yaz_search() prepara una búsqueda en la conexión dada.

Como yaz_connect() esta función es no bloqueante y únicamente prepara una búsqueda para ser ejecutada posteriormente cuando se llame a la función yaz_wait() .

### Parámetros

`id`

  El recurso de conexión devuelto por yaz_connect().

`type`

  Este parámetro representa el tipo de la consulta - únicamente `"rpn"` está soportado ahora, en cuyo caso el tercer argumento especifica una consulta de tipo Type-1 en notación de prefijo de consulta.

`query`

  La consulta RPN es una representación textual de la consulta Type-1 tal y como está definida por el estandard Z39.50 . Sin embargo, en la representación del texto utilizada por YAZ se necesita una notación de prefijo, es decir que el operador precede a los operandos. El string de la consulta es una secuencia de tokens donde se ignora el espacio en blanco a menos que esté rodeado de dobles comillas. Los Tokens que empiecen con una arroba (`@`) se considerarán operadores, de otro modo, se tratarán como términos de búsqueda.

  Operadores RPN
  Sintaxis | Descripción
  --- | ---
  `@and` query1 query2 | intersección de las consultas query1 y query2
  `@or` query1 query2 | unión de las consultas query1 y query2
  `@not` query1 query2 | query1 y no query2
  `@set` name | conjunto resultado de referencia
  `@attrset` set query | especifica el conjunto de atributos para la consulta. Esta construcción sólo se permite una sola vez - en el inicio de la consulta
  `@attr` [set] type=value query | aplica atributos a la consulta. El tipo y valor son enteros especificando el tipo del atributo y valor del atributo respectivamente. El conjunto, si se informa, especifica el conjunto atributo.

  Se muestra más información sobre atributos en el link » Z39.50 Maintenance Agency site.

  > Nota:

  > Si se desea utilizar una notación más amigable, utilizar el interpretador CCL - functiones yaz_ccl_conf() y yaz_ccl_parse().

### Valores devueltos

Devuelve `true` en caso de éxito o `false` en caso de error.

### Ejemplos

Ejemplo #1 Query Examples

Se puede buscar por términos sencillos, como en el caso siguiente:

    computer

que busca documentos donde aparece "computer" . No se han especificado atributos.

La consulta

    "knuth donald"

busca documentos donde aparece "knuth donald" (suponiendo que el servidor soporta búsqueda de frases).

Esta consulta aplica dos atributos para la misma frase.

@attr 1=1003 @attr 4=1 "knuth donald"
El primer atributo es de tipo type 1 (usa Bib-1), el valor del atributo es 1003 (Autor). El segundo atributo es de tipo type 4 (estructura), valor 1 (frase), así que debe buscar documentos donde Donald Knuth es el autor.

La consulta

    @and @or a b @not @or c d e

en notación infija tendría el aspecto: `(a or b) and ((c or d) not e)`.

Otro ejemplo, más complejo:

    @attrset gils @and @attr 1=4 art @attr 1=2000 company

La consulta utiliza el conjunto de atributos GILS . La consulta busca documentos en los que `art` aparece en el título (GILS,BIB-1) y en los que `company` aparece como Distributor (GILS).