Beispiele für die Verwendung der IBM OpenSearch-Bibliothek

Einige Beispiele für die Verwendung des OpenSearchStore sind im Ordner /ibm_opensearch/data/demos verfügbar. Diese Demonstrationen verweisen auf OpenSearch-Beschreibungsdokumente, die abgerufen und bearbeitet werden müssen, um Anforderungen über einen lokalen Proxy senden zu können, da derzeitige Browser keine domänenübergreifenden Anforderungen zulassen.

Dieses Beispiel wurde so konstruiert, als würde der OpenSearch-Endpunkt von demselben Server wie dieses Paket bereitgestellt werden, damit die Einrichtung des Proxy nicht zu komplex wird. Sehen Sie sich das folgende Beispiel für ein OpenSearch-Beschreibungsdokument an, das nur die erforderlichen Elemente enthält:

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  <ShortName>Sample Search Engine</ShortName>
  <Description>Searches each element at example.com</Description>
  <Url type="application/atom+xml"
       template="http://example.com/search/{searchTerms}" />
</OpenSearchDescription>

Das Beschreibungsdokument wird unter einem URL wie http://example.com/osd.xml mit dem MIME-Typ application/opensearchdescription+xml bereitgestellt. Jetzt kann mit der folgenden Markup eine Datenspeicherinstanz auf der Seite "http://example.com/index.html" erstellt werden.

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

Nachdem die Seite geladen und syntaktisch analysiert wurde, steht der Speicher über eine Referenz auf die Variable openSearchStore zur Verfügung. Sie können den Speicher zum Abrufen von Ergebnissen auf der Basis von Schlüsselwörtern verwenden:

<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);
			}
		}
	}
	//What to do if a search fails
	function onError(error, request){
		statusWidget.setValue("PROCESSING ERROR.");
	}
	var request = {
		query: {searchTerms: "atom"},
		onComplete: onComplete,
		onError: onError
	};
	openSearchStore.fetch(request);
});
</script>

Im obigen Beispiel wird ein Anforderungsobjekt erstellt, indem der Parameter searchTerms auf atom gesetzt wird. Dieser Parameter gibt das Schlüsselwort an, nach dem auf dem Server gesucht werden soll. Danach wird fetch(request) für den Speicher aufgerufen, der die Ergebnisse an die Funktion onComplete übergibt. Diese Funktion geht die Ergebnisse einzeln durch, ruft das (einzige für ein OpenSearchStore-Element verfügbare) Attribut content ab und stellt es in eine Tabellenzelle, die auf der Seite angezeigt wird.

Auf den Demo-Seiten finden Sie ausführlichere Verwendungsbeispiele, unter anderem ein Beispiel für die Verwendung eines Textfensters zum Eingeben der Suchbegriffe.