Search/Retrieve via URL

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.[1][2]

Introducció modifica

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.[3]

Problemàtica que vol arreglar modifica

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:

  • http://www.google.cat/search?q=Search%2FRetrieve+via+URL
  • http://www.search.yahoo.com/search;p=Search%2FRetrieve+via+URL
  • 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 sintaxi 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 sintaxi especifica per 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

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

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 dues cadenes següents són implementacions de l'operació explain valides:

  • http://example.org/
  • 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> 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

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:

  • 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

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> 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

Referències modifica

Enllaços externs modifica