サーバーに含まれている検索機能を使用すると、ユーザーはサーバー上のドキュメントを検索して、結果を Web ページに表示できます。サーバー管理者は、検索対象となるドキュメントのインデックス (コレクションと呼ばれる) を作成し、ユーザーの要求に合うように検索インタフェースをカスタマイズできます。
検索コレクションのクエリー方法の詳細については、「検索機能のオンラインヘルプ」を参照してください。
検索機能は、Sun Java System Web Server のインストール時にほかの Web コンポーネントとともにインストールされます。検索の構成や管理は、サーバーインスタンスのレベルではなく仮想サーバーのレベルで行います。
管理コンソールの「仮想サーバー」タブの下にある「検索」タブから、次のことが行えます。
検索機能を有効および無効にする
検索コレクションの作成、変更、削除、およびインデックスの再作成を行う
検索コレクションのスケジュールされた保守タスクを作成、変更、および削除する
管理インタフェースから得られる情報は、<server-root>/config/server.xml ファイル内に格納されており、VS 要素内にマップされています。
サーバー管理者は、検索クエリーおよび検索結果ページをカスタマイズできます。これには、企業のロゴを使ってページのブランドを変更したり、検索結果の表示方法を変更したりすることが含まれます。以前のリリースでは、パターンファイルを使用することでこの機能が実現されていました。
検索には、グローバルな「オン/オフ」機能はありません。代わりに、デフォルトの検索 Web アプリケーションが提供されており、このアプリケーションを特定の仮想サーバー上で有効または無効にするようになっています。この検索アプリケーションは、コレクションのクエリーと結果の表示に使用する基本的な Web ページを提供します。この検索アプリケーションには、検索タグライブラリを使ってカスタマイズされた検索インタフェースを構築する方法を示すサンプル JSP が含まれています。
Sun Java System Web Server では、検索結果に対するアクセスチェック機能は提供されていません。使用される可能性のあるセキュリティーモデルやレルムが多岐にわたるため、セキュリティーチェックの実行と結果のフィルタリングを、検索アプリケーション内から行うことは不可能です。適切なセキュリティー機構を使ってコンテンツを確実に保護することは、サーバー管理者の責任です。
仮想サーバーの検索を有効にするには、サーバーに含まれている検索アプリケーションを有効にします。
検索を有効にするには、Java Web コンテナが有効になっている必要があります。
構成する仮想サーバーの Java が有効になっているのを確認したあとで、次の手順を実行して検索を有効にします。
「構成」タブをクリックします。
構成のリストから構成を選択します。
「仮想サーバー」タブをクリックします。
仮想サーバーのリストから仮想サーバーを選択します。
「検索」タブをクリックします。
「検索アプリケーション」セクションで「有効」チェックボックスをクリックして、検索アプリケーションを有効にします。
その他の構成可能なパラメータは、次のとおりです。
URI:カスタム検索アプリケーションを使用する予定である場合は、その URI を入力します。デフォルトの検索アプリケーションを使用する場合、ここに値を指定する必要はありません。
有効:デフォルトの検索アプリケーションを有効にするには、これをチェックします。
CLI の使用
CLI 経由で検索プロパティーを設定するには、CLI で次のコマンドを実行します。
wadm> set-search-prop --user=admin --password-file=admin.pwd --host=serverhost --port=8888 --no-ssl --rcfile=null --config=config1 --vs=config1_vs_1 enabled=true max-hits=1200 |
CLI リファレンスの set-search-prop(1) を参照してください。
検索を行うには、その検索対象となる検索可能データのデータベースが必要となります。このコレクションと呼ばれるデータベースはサーバー管理者によって作成されます。コレクションは、サーバー上のドキュメントに関する情報のインデックスを作成し、それを格納します。サーバー管理者がサーバーのドキュメントの全部または一部のインデックスを作成し終わると、タイトル、作成日付、作成者などの情報を検索できるようになります。
検索コレクションについて
コレクションは管理対象の仮想サーバーに固有である
仮想サーバーから可視のドキュメントのみが、管理インタフェースに表示され、インデックス作成可能となる
サーバー上に存在できるコレクションの数に制限はない
検索コレクション内のドキュメントは 1 つの文字エンコーディングに固有のものではない。つまり、検索コレクションは、複数のエンコーディングに関連付けることができる。
インデックス作成および検索が可能なファイルの形式は、次のとおりです。
HTML ドキュメント — .html および .htm
ASCII プレーンテキスト — .txt
新しいコレクションを追加するには、次のタスクを実行します。
「構成」タブをクリックします。
構成のリストから構成を選択します。
「仮想サーバー」タブをクリックします。
仮想サーバーのリストから仮想サーバーを選択します。
「検索」タブをクリックします。
「 検索コレクション 」セクションで「ドキュメントの追加 」ボタンをクリックすることで、新しい検索コレクションを追加します。
次の節では、新しい検索コレクションを作成するためのページに含まれるフィールドについて説明します。
検索コレクションの情報を入力します
コレクション名 — 検索コレクションの一意名を入力します。
複数バイト文字はコレクション名として許可されません。
表示名 — (省略可能) これが検索クエリーページのコレクション名として表示されます。表示名を指定しないと、コレクション名が表示名として使用されます。
説明 — (省略可能) 新しいコレクションを説明するテキストを入力します。
パス — デフォルトの場所にコレクションを作成することも、コレクションの格納先となる有効なパスを入力することもできます。
インデックス作成の情報を入力します
インデックスを作成するディレクトリ — インデックスを作成してコレクション内に格納するドキュメントが入っているディレクトリを入力します。インデックスを作成できるのは、この仮想サーバーから可視のディレクトリだけです。
サブディレクトリ — インデックスを作成してコレクション内に格納するドキュメントが入っているサブディレクトリを入力します。サブディレクトリのパスは、上で指定したディレクトリパスからの相対パスにすべきです。
パターン — インデックスを作成するファイルを選択するためのワイルドカードを指定します。
ワイルドカードパターンは、特定のファイルだけが確実にインデックス作成されるよう、適切な使い方をしてください。たとえば、*.* と指定すると、実行可能ファイルや Perl スクリプトまでインデックス作成されてしまいます。
サブディレクトリ — 有効/無効。このオプションを選択すると、選択されたディレクトリのサブディレクトリ内のドキュメントもインデックス作成されます。これがデフォルトの動作です。
デフォルトエンコーディング —
コレクション内のドキュメントは、単一の言語やエンコーディングに制限されません。ドキュメントを追加するたびに、ある単一のエンコーディングのみを指定できます。しかし、次回ドキュメントをコレクションに追加するときには、異なるデフォルトエンコーディングを選択できます。
手順 3: 概要を表示します
概要を表示したあと、「完了 」ボタンをクリックして新しいコレクションを追加します。
CLI の使用
CLI 経由で検索コレクションを追加するには、次のコマンドを実行します。
wadm> create-search-collection --user=admin --password-file=admin.pwd --host=serverhost --port=8989 --config=config1 --vs=config1_vs_1 --uri=/search_config1 --document-root=../docs searchcoll |
CLI リファレンスの create-search-collection(1) を参照してください。
検索コレクションを削除するには、次のタスクを実行します。
「構成」タブをクリックします。
構成のリストから構成を選択します。
「仮想サーバー」タブをクリックします。
仮想サーバーのリストから仮想サーバーを選択します。
「検索」タブをクリックします。
「 検索コレクション」セクションでコレクション名を選択し、「削除 」ボタンをクリックします。そのコレクションが削除されます。
CLI の使用
CLI 経由で検索コレクションを削除するには、次のコマンドを実行します。
wadm> delete-search-collection --user=admin --password-file=admin.pwd --host=serverhost --port=8989 --config=config1 --vs=config1_vs_1 searchcoll |
CLI リファレンスの delete-search-collection(1) を参照してください。
検索コレクション上で定期的に実行する保守タスクをスケジュールすることができます。スケジュールできるタスクにはインデックスの再作成と更新があります。特定のコレクションのタスクをスケジュールするには管理インタフェースを使用します。指定できる情報は次のとおりです。
実行するタスク (インデックスの再作成、更新のいずれか)
タスクを実行する時間
タスクを実行する曜日
コレクションのイベントをスケジュールするには、次のタスクを実行します。
「構成」タブをクリックします。
構成のリストから構成を選択します。
「仮想サーバー」タブをクリックします。
仮想サーバーのリストから仮想サーバーを選択します。
「検索」タブをクリックします。
「スケジュールされたイベント」タブをクリックします。
「検索イベント」タブで「新規」ボタンをクリックします。
次の表では、「新規検索イベントスケジュール」ページのフィールドについて説明します。
表 12–1 フィールド説明 > 新規検索イベントスケジュール
ユーザーの主な関心事は、検索コレクション内のデータについて質問し、その応答としてドキュメントのリストを取得することです。Sun Java System Web Server にインストールされている検索 Web アプリケーションは、デフォルトの検索クエリーおよび検索結果ページを提供します。それらのページは、そのまま使用することも、「検索ページのカスタマイズ」で説明する一連の JSP タグを使ってカスタマイズすることもできます。
ユーザーは、サーバー管理者によって作成されたコレクションに対して検索を行います。ユーザーは次のことを行えます。
検索する一連のキーワードと省略可能なクエリー演算子を入力する
仮想サーバーから可視のコレクション内でのみ検索する
仮想サーバーから可視の単一コレクションに対して、あるいは複数のコレクションをまたがって、検索を行う
サーバー管理者は、仮想サーバーの検索クエリーページへのアクセスに必要な URL を、ユーザーに知らせる必要があります。
エンドユーザーが検索機能にアクセスするのに使用できるデフォルトの URL は、次のとおりです。
http://<server-instance >:port number/search
例:
http://plaza:8080/search
エンドユーザーがこの URL を呼び出すと、Java Web アプリケーションである「検索」ページが開きます。
キーワード、およびオプションのクエリ演算子を含む、基本および高度な検索を実行する詳細な手順については、検索エンジンに付属のオンラインヘルプを参照してください。これらの情報にアクセスするには、「検索」ページの「ヘルプ」リンクをクリックしてください。
あるコレクションに対して検索を行うには、検索クエリーページを使用します。一連のキーワードと省略可能なクエリー演算子を入力すると、ブラウザに表示された Web ページ上にその結果が表示されます。結果ページには、検索条件に一致するサーバー上のドキュメントへのリンクが含まれます。
サーバー管理者は、「検索ページのカスタマイズ」で説明した方法でこの検索クエリーページをカスタマイズできます。
クエリーを行うには、次の手順を実行します。
ブラウザのロケーションバーに次の形式で URL を入力することで、検索 Web アプリケーションにアクセスします。
http://<server-instance>:port number /search
表示された検索クエリーページの「検索対象」フィールドで、検索するコレクションを表すチェックボックスをオンにします。
関連のある Web ページのリストを得るために、クエリーを記述するいくつかの単語を入力したあと、「Enter」キーを押すか「検索」ボタンをクリックします。
検索時により細かい調整を行いたい場合は、「詳細検索」ページで提供される検索パラメータを使用できます。このページについては次の節で説明します。
キーワードを細かく調整する演算子を追加すれば、検索精度を高めることができます。これらのオプションは「詳細検索」ページから選択できます。
詳細検索クエリーを行うには、次の手順を実行します。
ブラウザのロケーションバーに次の形式で URL を入力することで、検索 Web アプリケーションにアクセスします。
http://<server-instance>:port number /search
「詳細」リンクをクリックします。
次の情報のいずれかまたはすべてを入力します。
検索対象:検索対象となるコレクションを選択します。
検索:次の 4 つのオプションがサポートされています。
すべての単語に一致:「検索」に指定されたすべてのキーワードを含むページを検索します。
いずれかの単語に一致:「検索」に指定されたいずれかのキーワードを含むページを検索します。
完全に一致:「検索」に指定された語句に完全に一致するページを検索します。
パセッジ検索:取得されたページ内でキーワードまたは単語を含むパセッジを強調表示します。
対象外の単語:検索時に、指定された単語を含む Web ページが除外されます。
タイトルに「含む/含まない」:指定されたキーワードを含むタイトルを持つページに、検索を制限します。
検索対象期間:選択された期間内にインデックス作成された Web ページに、検索処理を制限します。
Sun Java System Web Server はドキュメントのインデックスを維持します。インデックスには各ドキュメントのエントリが含まれます。各インデックスエントリには、Title、Author、URL などのフィールドが 1 つ以上含まれます。クエリーを特定のドキュメントフィールドに制限することができますが、その場合、その指定されたフィールドで条件に一致するドキュメントのみが検出されます。
たとえば、Einstein を単純に検索した場合、Title、Author、Keywords のいずれかのフィールドに単語 Einstein を含むドキュメントのすべてが検出されます。これには、Einstein に関するドキュメント、Einstein を参照しているドキュメント、Einstein によって書かれたドキュメントなどが含まれます。これに対し、Author = "Albert Einstein" と指定した場合、Albert Einstein によって書かれたドキュメントのみが検出されます。
デフォルトで検索可能なインデックスフィールドは、次のとおりです。
Author — <author> メタタグに指定された、ドキュメントを作成した著者、一連の著者、または組織。
Keywords — <keywords> メタタグに指定されたキーワード。
Date — このドキュメントが最後に編集または変更された日付。
Title — HTML の <title> タグに指定された、ドキュメントのタイトル。
PDF ファイルには、著者、タイトル、および主題に関する FTS 情報が含まれます。PDF ファイル内でこれらの情報を検索する場合、 <title> contains Java、<subject> contains web server のようなクエリーを作成できます。
検索クエリー演算子の詳細な一覧については、『Administration Console Search Online Help』を参照してください。
検索結果はユーザーのブラウザ内の Web ページ上に表示されます。このページには、検索条件に一致するサーバー上のドキュメントへの HTML ハイパーリンクが含まれます。各ページにはデフォルトで 10 レコード (ヒット) が表示され、それらは関連性に基づいて降順でソートされます。 各レコードには、ファイル名、サイズ、作成日付などの情報が表示されます。さらに、一致した単語が強調表示されます。
Sun Java System Web Server には、基本的な検索クエリーおよび検索結果ページを提供するデフォルトの検索アプリケーションが含まれています。これらの Web ページは、そのまま使用することも、ユーザーの特定の要求に合うようにカスタマイズすることもできます。そのようなカスタマイズには、別のロゴを使って Web ページのブランドを変更するような単純なものから、検索結果の表示順を変更するような複雑なものまであります。
デフォルトの検索アプリケーションは、検索タグライブラリを使ってカスタマイズされた検索インタフェースを構築する方法を示すサンプル JSP を提供しています。/bin/https/webapps/search に格納されているデフォルト検索アプリケーションを、カスタマイズ可能な検索タグの使用方法を示すサンプルアプリケーションとして参照することができます。
デフォルト検索インタフェースの主要コンポーネントは 4 つあります。 ヘッダー、フッター、クエリーフォーム、および結果です。
これらの基本要素は、タグの属性の値を変更するだけで簡単にカスタマイズすることができます。より細かなカスタマイズは、タグライブラリを使用することで実現できます。
検索インタフェースは次のコンポーネントから構成されています。
ヘッダーにはロゴ、タイトル、および簡略説明が含まれます。
フッターには著作権情報が含まれます。
クエリーフォームには、検索コレクションを表す一連のチェックボックス、クエリー入力ボックス、および送信ボタンとヘルプボタンが含まれます。
結果はデフォルトで、1 ページに 10 レコードずつ表示されます。レコードごとに、タイトル、パセッジ、サイズ、作成日付、URL などの情報が表示されます。パセッジとはページの短い断片のことですが、そこでは一致した単語が強調表示されます。
クエリーフォームには、検索コレクションの一連のチェックボックス、クエリー入力ボックス、および送信ボタンが含まれます。フォームは、<s1ws:form> タグに加えて <collElem>、<queryBox>、<submitButton> の各タグ、およびそれらのデフォルト値を使って作成されます。
<s1ws:form> <s1ws:collElem> <s1ws:queryBox> <s1ws:submitButton> </s1ws:form>
クエリーフォームは、ページの中央やサイドバー上など、ページ内の任意の場所に配置できます。また、コレクション選択ボックス、クエリー文字列入力ボックス、送信ボタンが水平方向に一直線に並ぶクロスバーや、コレクションがチェックボックスとして表示され、その下にクエリー入力ボックスと送信ボタンが配置されるブロックなど、さまざまな形式で表示することもできます。
次の各例は、<searchForm> タグセットを使ってさまざまな形式のクエリーフォームを作成する方法を示しています。
次のサンプルコードは、すべてのコレクションの選択ボックス、クエリー入力ボックス、および送信ボタンがすべて 1 行に配置されたフォームを作成します。
<s1ws:form> <table cellspacing="0" cellpadding="3" border="0"> <tr class="navBar"> <td class="navBar"><s1ws:collElem type=”select”></td> <td class="navBar"> <s1ws:querybox size="30"> <s1ws:submitButton class="navBar" style="padding: 0px; margin: 0px; width: 50px"> </td> </tr> </table> </s1ws:form>
フォーム要素がサイドバーに配置され、サイドバーのほかの項目と同じ形式のタイトル「Search」を含むようなフォームブロックを作成できます。
次に示すサンプルコードでは、フォームの本体部分に、選択可能な検索コレクションを表示するチェックボックスが 3 つ含まれており、それらは 1 列に並んでいます。クエリー入力ボックスと送信ボタンはその下に配置されています。
<s1ws:searchForm> <table> <!--... other sidebar items ... --> <tr class="Title"><td>Search</td></tr> <tr class="Body"> <td> <table cellspacing="0" cellpadding="3" border="0"> <tr class="formBlock"> <td class="formBlock"> <s1ws:collElem type="checkbox" cols="1" values="1,0,1,0" /> </td> </tr> <tr class="formBlock"> <td class="formBlock"> <s1ws:querybox size="15" maxlength="50"> </td> </tr> <tr class="formBlock"> <td class="formBlock"> <s1ws:submitButton class="navBar" style="padding: 0px; margin: 0px; width: 50px"> </td> </tr> </table> </td> </tr> </table> </s1ws:searchForm>
検索結果は次のようにして生成されます。
<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 omitted...) <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 omitted...) <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 omitted...) <s1ws:resultNav formId="test" type="previous" /> <s1ws:resultNav formId="test" type="full" offset="8" /> <s1ws:resultNav formId="test" type="next" /> (...html omitted...) </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>
フォームページと結果ページをそれぞれ独立させる必要がある場合、<form> タグセットを使ってフォームページを作成し、<formAction> タグセットを使って結果ページを作成する必要があります。
スムーズなページフローを実現できるよう、フォームページへのリンクを結果ページに追加する必要があります。
次のタグ規約に注意してください。
タグのクラスはパッケージ com.sun.web.search.taglibs に属する。
pageContext のすべての属性は、プレフィックス com.sun.web を持つ。たとえば、検索結果に対する属性は com.sun.web.searchresults.form_id である。ここで、form_id はフォームの名前である。
タグライブラリはプレフィックス s1ws を使って参照される。タグとその属性の名前は大文字と小文字の混在形式にする。具体的には、pageContext のように、名前に含まれる各単語の先頭文字を大文字にする。
Sun Java System Web Server には、検索インタフェースの検索クエリーページと検索結果ページのカスタマイズに使用可能な一連の JSP タグが含まれています。
検索ページのカスタマイズに使用可能な JSP タグの完全な一覧については、『Sun Java System Web Server 7.0 Developer’s Guide to Web Applications』を参照してください。