IBM OpenSearch ライブラリーの使用例

/ibm_opensearch/data/demos フォルダーには、OpenSearchStore の使用例がいくつかあります。 これらのデモでは OpenSearch 記述文書を参照します。現在のブラウザーではクロスドメイン要求を行うことができないため、 ローカル・プロキシーを介して要求を送信するには、記述文書を取り出して編集する必要があります。

この例は、OpenSearch エンドポイントがこのパッケージと同じサーバー上でホストされている場合と同様に構成されています。 したがって、プロキシーのセットアップに労力を費やす必要はありません。 必要なエレメントのみが含まれている、次のサンプル OpenSearch 記述文書を参照してください。

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

記述文書は、http://example.com/osd.xml などの URL でホストされています。 その MIME タイプは application/opensearchdescription+xml です。 次に、ページ「http://example.com/index.html」内のデータ・ストアを次のマークアップでインスタンス化できます。

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

ページをロードし、構文解析すると、変数 openSearchStore を参照することによりストアが使用可能になります。 以下のキーワードに基づいて、ストアを使用して結果を取り出すことができます。

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

前述の例では、要求オブジェクトを形成し、searchTerms パラメーターを atom に設定しています。 これは、サーバーで検索するキーワードを示しています。 次に、ストア上に fetch(request) が呼び出されます。 これにより、onComplete 関数に結果が渡されます。 この関数は、結果ごとに繰り返され、OpenSearchStore 項目で使用できる唯一の属性である content 属性を取得し、 それをページに表示されているテーブル・セル内に入れます。

使用例についての詳細は、検索語を入力するテキスト・ボックスを含め、 デモ・ページに表示されます。