検索結果は次のようにして生成されます。
<formAction> タグがすべてのフォーム要素の値を取得し、基本的な検証処理を行う。
<search> タグ、<resultIteration> タグ、およびその他のタグが <formAction> タグの内側で発生し、すべてのフォーム要素の値にアクセスする。
<search> タグが <formAction> からのクエリー文字列とコレクションを使って検索を実行し、その検索結果を pageContext に保存する。
続いて、<resultIteration> タグが結果セットを取得し、繰り返し処理を行う。
タグの属性値を変更するだけで、検索結果ページをカスタマイズできます。
次のサンプルコードは、まずタイトルバーを表示し、次に指定された件数のレコードを表示し、最後にナビゲーションバーを表示します。タイトルバーには、検索に使用されたクエリー文字列と、1– 10 などのような、返されたレコード合計数の範囲が含まれます。レコードセクションにはレコードごとに、ファイルへのリンクを含むタイトル、キーワードが強調表示された最大 3 つのパセッジ、URL、作成日付、およびドキュメントのサイズが表示されます。
このセクションの末尾にあるナビゲーションバーは、前ページと次ページへのリンク、および現在のページの前後にある 8 つの追加ページへの直接のリンクを提供します。
<s1ws:formAction />
<s1ws:formSubmission success="true" >
<s1ws:search scope="page" />
<!--search results-->
(...html を省略...)
<s1ws:resultStat formId="test" type="total" /></b> Results Found, Sorted by Relevance</span></td><td>
<span class="body"><a href="/search/search.jsp?">Sort by Date</a></span></td>
<td align="right"><span class="body">
<s1ws:resultNav formId="test" type="previous" caption="<img border=0 src=\\"images/arrow-left.gif\\" alt=\\"Previous\\">" />
<s1ws:resultStat formId="test" type="range" />
<s1ws:resultNav formId="test" type="next" caption="<img border=0 src=\\"images/arrow-right.gif\\" alt=\\"Next\\">" />
<!img alt="Next" src="images/arrow-right.gif" border="0" WIDTH="13" HEIGHT="9">
(...html を省略...)
<table border=0>
<s1ws:resultIteration formId="test" start="1" results="15">
<tr class=body>
<td valign=top>
<s1ws:item property=’number’ />.
</td>
<td>
<b><a href="<s1ws:item property=’url’ />"><s1ws:item property=’title’ /></a></b>
<br>
<s1ws:item property=’passages’ />
<font color="#999999" size="-2">
<s1ws:item property=’url’ /> -
<s1ws:item property=’date’ /> -
<s1ws:item property=’size’ /> KB
</font><br><br>
</td>
</tr>
</s1ws:resultIteration>
</table>
(...html を省略...)
<s1ws:resultNav formId="test" type="previous" />
<s1ws:resultNav formId="test" type="full" offset="8" />
<s1ws:resultNav formId="test" type="next" />
(...html を省略...)
</s1ws:formSubmission>
次の図に、カスタマイズ後の検索結果ページを示します。
カスタマイズ後の検索結果ページ
この基本的な検索結果インタフェースは、タグの操作や HTML の変更を行うことで、簡単にカスタマイズすることができます。たとえば、ナビゲーションバーをコピーし、それを検索結果の前に配置することができます。また、検索レコードの任意のプロパティーの表示/非表示を選択することもできます。
<search>、<resultIterate>、およびその関連タグは、フォームと組み合わせて使用できるだけでなく、特定のトピックを一覧表示するために使用することもできます。次のサンプルコードは、あるサイト上で Java Web サービスに関する記事のトップ 10 を一覧表示します。
<s1ws:search collection="Articles" query="Java Web Services" /> <table cellspacing="0" cellpadding="3" border="0"> <tr class="Title"><td>Java Web Services</td></tr> </table> <table cellspacing="0" cellpadding="3" border="0"> <s1ws:resultIteration> <tr> <td><a href="<s1ws:item property=’URL’ />"> <s1ws:item property=’Title’/></a></td> </tr> </s1ws:resultIteration> </table>