Ejemplos de uso de la biblioteca IBM OpenSearch

Puede encontrar algunos ejemplos de uso de OpenSearchStore en la carpeta /ibm_opensearch/data/demos. Estas demostraciones hacen referencia a documentos de descripción de OpenSearch que deben captarse y editarse para enviar las peticiones a través de un proxy local, ya que las peticiones de dominios cruzados no son posibles en los navegadores actuales.

Este ejemplo se construye como si el punto final de OpenSearch se alojara en el mismo servidor que este paquete, por lo que no existe ninguna complejidad añadida a la configuración de un proxy. Consulte el siguiente documento de descripción de OpenSearch de ejemplo con sólo los elementos necesarios incluidos:

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  <ShortName>Motor de búsqueda de ejemplo</ShortName>
  <Description>Busca cada elemento en example.com</Description>
  <Url type="application/atom+xml"
       template="http://example.com/search/{searchTerms}" />
</OpenSearchDescription>

El documento de descripción se aloja en un URL como http://example.com/osd.xml, con un tipo MIME application/opensearchdescription+xml. Ahora puede crearse una instancia de un almacén de datos en la página "http://example.com/index.html" con la siguiente marcación:

<script src="dojo/dojo.js"></script>
<script>
	dojo.require("ibm_opensearch.data.OpenSearchStore");
	dojo.require("dojo.parser");
</script>
<div dojoType="ibm_opensearch.data.OpenSearchStore"
	 url="osd.xml"
	 jsId="openSearchStore">
</div>

Una vez cargada y analizada la página, el almacén está disponible haciendo referencia a la variable, openSearchStore. Puede utilizar este almacén para captar resultados basados en palabras clave:

<table>
	<tbody id="searchResults">
	</tbody>
</table>
<script>
dojo.addOnLoad(function(){
	function onComplete(items, request){
		if(items.length > 0){
			var tbody = dojo.byId("searchResults");
			var test;
			var tr, td;
			for(var i=0; i<items.length; i++){
				td = dojo.doc.createElement("td");
				td.innerHTML = openSearchStore.getValue(items[i], "content");
				tr = dojo.doc.createElement("tr");
				tr.appendChild(td);
				tbody.appendChild(tr);
			}
		}
	}
	//Qué hacer si falla una búsqueda
	function onError(error, request){
		statusWidget.setValue("PROCESSING ERROR.");
	}
	var request = {
		query: {searchTerms: "atom"},
		onComplete: onComplete,
		onError: onError
	};
	openSearchStore.fetch(request);
});
</script>

El ejemplo anterior forma un objeto de petición al establecer el parámetro searchTerms en atom, lo que indica la palabra clave que se busca en el servidor. A continuación, se invoca fetch(request) en el almacén, que pasa los resultados a la función onComplete. Esta función se itera en cada resultado, obtiene el atributo content, el único atributo disponible en un elemento OpenSearchStore, y lo incluye en una celda de tabla que aparece en la página.

En las páginas de demostración se muestran ejemplos de uso más detallados, incluida la utilización de un recuadro de texto para especificar los términos de búsqueda.