Search/Retrieve via URL

De Viquipèdia
Dreceres ràpides: navegació, cerca

Search/Retrieve via URL és un protocol estàndard de recerca per a les consultes als motors de cerca i bases de dades d'Internet. Fa servir Llenguatge de consulta comú (CQL), una sintaxi de consulta estàndard per a la representació de les consultes.

Introducció[modifica | modifica el codi]

SRU és un servei web de tipus REST que pretén estandarditzar les consultes i respostes sobre bases de dades i motors de cerca. Està promocionat per la Biblioteca del Congrés dels Estats Units. Com a servei web de tipus REST que és, tracta de codificar les consultes del client en una cadena de variables-valors que serà el paràmetre d'entrada del servidor. Una vegada el servidor rebi la consulta, la processarà i retornarà el resultat com un text d'estil XML amb les pautes que estableix el protocol. Totes aquestes consultes i respostes sempre són transmeses, en aquest cas, sota HTTP.

Problematica que vol arreglar[modifica | modifica el codi]

Actualment es poden trobar molts motors de cerca a Internet i gran multitud de bases de dades. Cada un d'aquests motors presenta una forma concreta i diferent a l'hora de fer les peticions. Per exemple, a continuació es mostren peticions de cerca sobre "Search/Retrieve via URL" a tres cercadors d'Internet:

  • {{format ref}} http://www.google.com/search?q=Search%2FRetrieve+via+URL
  • {{format ref}} http://www.search.yahoo.com/search;p=Search%2FRetrieve+via+URL
  • {{format ref}} http://buscar.hispavista.com/?cadena=Search%2FRetrieve+via+URL&Submit=Buscar&str=Search%2FRetrieve+via+URL

Encara que les consultes són les mateixes, la sintaxis feta servir per implementar les peticions no és la mateixa. I encara pitjor, l'estructura de les respostes no és ni de bon tros semblant. SRU pretén arreglar això fent servir una sintaxis especifica per les les consultes i un format concret a l'hora de retornar els resultats de la cerca. Amb això es permet a les persones fer cerques globals a Internet d'una forma més efectiva.

Instruccions[modifica | modifica el codi]

Per tal de fer les cerques dins de les bases de dades, el protocol SRU proposa l'ús de tres instruccions diferents:

  1. Explain
  2. Scan
  3. SearchRetrieve.

Explain[modifica | modifica el codi]

L'operació "Explain" són consultes sobre la informació general de la base de dades del servidor i les seves funcionalitats. Com a mínim les respostes han de contenir la localització del servidor, una descripció del contingut i quines funcionalitats del protocol suporta el servidor. Implementada sobre SRU, una cadena buida s'interpreta com una operació del tipus explain. Si s'especifica l'operació, també cal afegir un paràmetre amb la versió de SRU que es fa servir. Per tant les dos cadenes següents són implementacions de l'operació explain valides:

  • {{format ref}} http://example.org/
  • {{format ref}} http://example.org/?operation=explain&version=1.1

L'XML que retorna el servidor en aquest cas és:

<explainResponse>
<version>1.1</version>
 <record>
 <recordSchema>{{format ref}} http://explain.z3950.org/dtd/2.0/</recordSchema>
 <recordPacking>xml</recordPacking>
 <recordData>
 <explain>
 <serverInfo>
 <host>example.org</host>
 <port>80</port>
 <database>/</database>
 </serverInfo>
 <databaseInfo>
 <title>Exemple SRU</title>
 <description lang='en' primary='true'>
 Aquest és un exemple de base de dades SRU
 </description>
 </databaseInfo>
 <indexInfo>
 <set identifier='info:srw/cql-context-set/1/dc-v1.1' name='dc' />
 <index>
 <title>title</title>
 <map>
 <name set='dc'>title</name>
 </map>
 </index>
 </indexInfo>
 <schemaInfo>
 <schema identifier='info:srw/schema/1/dc-v1.1'
 sort='false' name='dc'>
 <title>Dublin Core</title>
 </schema>
 </schemaInfo>
 <configInfo>
 <default type='numberOfRecords'>9999</default>
 </configInfo>
 </explain>
 </recordData>
 </record>
</explainResponse>

En la resposta se'ns informa que la base de dades està allotjada a "example.org", que conté informació d'exemple sobre SRU i que es poden trobar 9999 entrades diferents.

Scan[modifica | modifica el codi]

Amb aquesta instrucció el servidor retorna una llista amb el nombre d'entrades trobades a la base de dades. Amb l'operació Scan cal afegir també una variable scanClause que contindrà l'objecte a cercar i una variable amb la versió de SRU que es fa servir. Per tant la consulta per buscar quantes entrades sobre SRU existeixen a la base de dades quedaria tal que:

  • {{format ref}} http://example.org/?operation=scan&scanClause=SRU&version=1.1

La resposta del servidor seria tipus:

<scanResponse>
 <version>1.1</version>
 <terms>
 <term>
 <value>SRU</value>
 <numberOfRecords>3</numberOfRecords>
 </term>
 </terms>
</scanResponse>

En aquest cas el servidor ens informa que disposa de 3 entrades referents a SRU.

SearchRetrieve[modifica | modifica el codi]

Aquesta és l'operació més important del protocol. Com a resposta a una operació de SearchRetrieve, es donen les entrades que té el servidor sobre la consulta. Les consultes poden ser de tipus text pla o bé ser combinacions de funcions booleanes. En aquest cas a l'operació searchRetrieve, cal afegir-li com a mínim la variable query i la variable versió.

  • http://example.org/?operation=searchRetrieve&query=SRU&version=1.1

La resposta del servidor anirà estructurada en text pla o en llenguatge XML com es mostra a continuació:

<searchRetrieveResponse>
 <version>1.1</version>
 <numberOfRecords>3</numberOfRecords>
 <records>
 <record>
 <recordSchema>info:srw/schema/1/dc-v1.1</recordSchema>
 <recordPacking>xml</recordPacking>
 <recordData>
 <dc>
 <title>SRU a la "Library of Congress"</title> 
 <identifier>{{format ref}} http://example.org/library.html</identifier>
 </dc>
 </recordData>
 </record>
 <record>
 <recordSchema>info:srw/schema/1/dc-v1.1</recordSchema>
 <recordPacking>xml</recordPacking>
 <recordData>
 <dc>
 <title>Sintaxi de SRU</title> 
 <identifier>{{format ref}} http://example.org/sintaxi.html</identifier>
 </dc>
 </recordData>
 </record>
 <record>
 <recordSchema>info:srw/schema/1/dc-v1.1</recordSchema>
 <recordPacking>xml</recordPacking>
 <recordData>
 <dc>
 <title>Exemples SRU</title> 
 <identifier>{{format ref}} http://example.org/exemple.html</identifier>
 </dc>
 </recordData>
 </record>
 </records>
</searchRetrieveResponse>


Vegeu també[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]