検索結果は次のようにして生成されます。
<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>