Sun Java System Web Server 7.0 管理ガイド

第 12 章 検索コレクションの操作

サーバーに含まれている検索機能を使用すると、ユーザーはサーバー上のドキュメントを検索して、結果を Web ページに表示できます。サーバー管理者は、検索対象となるドキュメントのインデックス (コレクションと呼ばれる) を作成し、ユーザーの要求に合うように検索インタフェースをカスタマイズできます。

検索コレクションのクエリー方法の詳細については、「検索機能のオンラインヘルプ」を参照してください。

検索について

検索機能は、Sun Java System Web Server のインストール時にほかの Web コンポーネントとともにインストールされます。検索の構成や管理は、サーバーインスタンスのレベルではなく仮想サーバーのレベルで行います。

管理コンソールの「仮想サーバー」タブの下にある「検索」タブから、次のことが行えます。

管理インタフェースから得られる情報は、<server-root>/config/server.xml ファイル内に格納されており、VS 要素内にマップされています。

サーバー管理者は、検索クエリーおよび検索結果ページをカスタマイズできます。これには、企業のロゴを使ってページのブランドを変更したり、検索結果の表示方法を変更したりすることが含まれます。以前のリリースでは、パターンファイルを使用することでこの機能が実現されていました。

検索には、グローバルな「オン/オフ」機能はありません。代わりに、デフォルトの検索 Web アプリケーションが提供されており、このアプリケーションを特定の仮想サーバー上で有効または無効にするようになっています。この検索アプリケーションは、コレクションのクエリーと結果の表示に使用する基本的な Web ページを提供します。この検索アプリケーションには、検索タグライブラリを使ってカスタマイズされた検索インタフェースを構築する方法を示すサンプル JSP が含まれています。


注 –

Sun Java System Web Server では、検索結果に対するアクセスチェック機能は提供されていません。使用される可能性のあるセキュリティーモデルやレルムが多岐にわたるため、セキュリティーチェックの実行と結果のフィルタリングを、検索アプリケーション内から行うことは不可能です。適切なセキュリティー機構を使ってコンテンツを確実に保護することは、サーバー管理者の責任です。


検索プロパティーの構成

仮想サーバーの検索を有効にするには、サーバーに含まれている検索アプリケーションを有効にします。


注 –

検索を有効にするには、Java Web コンテナが有効になっている必要があります。


構成する仮想サーバーの Java が有効になっているのを確認したあとで、次の手順を実行して検索を有効にします。

  1. 構成」タブをクリックします。

  2. 構成のリストから構成を選択します。

  3. 仮想サーバー」タブをクリックします。

  4. 仮想サーバーのリストから仮想サーバーを選択します。

  5. 検索」タブをクリックします。

  6. 検索アプリケーション」セクションで「有効 」チェックボックスをクリックすることで、検索アプリケーションを有効にします。

その他の構成可能なパラメータは、次のとおりです。


注 –

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

  2. ASCII プレーンテキスト — .txt

  3. PDF

検索コレクションの追加

新しいコレクションを追加するには、次のタスクを実行します。

  1. 構成」タブをクリックします。

  2. 構成のリストから構成を選択します。

  3. 仮想サーバー」タブをクリックします。

  4. 仮想サーバーのリストから仮想サーバーを選択します。

  5. 検索」タブをクリックします。

  6. 検索コレクション 」セクションで「ドキュメントの追加 」ボタンをクリックすることで、新しい検索コレクションを追加します。

次の節では、新しい検索コレクションを作成するためのページに含まれるフィールドについて説明します。

  1. 検索コレクションの情報を入力します

    1. コレクション名 — 検索コレクションの一意名を入力します。


      注 –

      複数バイト文字はコレクション名として許可されません。


    2. 表示名 — (省略可能) これが検索クエリーページのコレクション名として表示されます。表示名を指定しないと、コレクション名が表示名として使用されます。

    3. 説明 — (省略可能) 新しいコレクションを説明するテキストを入力します。

    4. パス — デフォルトの場所にコレクションを作成することも、コレクションの格納先となる有効なパスを入力することもできます。

  2. インデックス作成の情報を入力します

    1. インデックスを作成するディレクトリ — インデックスを作成してコレクション内に格納するドキュメントが入っているディレクトリを入力します。インデックスを作成できるのは、この仮想サーバーから可視のディレクトリだけです。

    2. サブディレクトリ — インデックスを作成してコレクション内に格納するドキュメントが入っているサブディレクトリを入力します。サブディレクトリのパスは、上で指定したディレクトリパスからの相対パスにすべきです。

    3. パターン — インデックスを作成するファイルを選択するためのワイルドカードを指定します。

      ワイルドカードパターンは、特定のファイルだけが確実にインデックス作成されるよう、適切な使い方をしてください。たとえば、*.* と指定すると、実行可能ファイルや Perl スクリプトまでインデックス作成されてしまいます。

    4. サブディレクトリ — 有効/無効。このオプションを選択すると、選択されたディレクトリのサブディレクトリ内のドキュメントもインデックス作成されます。これがデフォルトの動作です。

    5. デフォルトエンコーディング

      コレクション内のドキュメントは、単一の言語やエンコーディングに制限されません。ドキュメントを追加するたびに、ある単一のエンコーディングのみを指定できます。しかし、次回ドキュメントをコレクションに追加するときには、異なるデフォルトエンコーディングを選択できます。

  3. 手順 3:概要を表示します

    1. 概要を表示したあと、「完了 」ボタンをクリックして新しいコレクションを追加します。


注 –

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) を参照してください。


検索コレクションの削除

検索コレクションを削除するには、次のタスクを実行します。

  1. 構成」タブをクリックします。

  2. 構成のリストから構成を選択します。

  3. 仮想サーバー」タブをクリックします。

  4. 仮想サーバーのリストから仮想サーバーを選択します。

  5. 検索」タブをクリックします。

  6. 検索コレクション」セクションでコレクション名を選択し、「削除 」ボタンをクリックします。そのコレクションが削除されます。


注 –

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) を参照してください。


コレクション更新のスケジュール

検索コレクション上で定期的に実行する保守タスクをスケジュールすることができます。スケジュールできるタスクにはインデックスの再作成と更新があります。特定のコレクションのタスクをスケジュールするには管理インタフェースを使用します。指定できる情報は次のとおりです。

コレクションのイベントをスケジュールするには、次のタスクを実行します。

  1. 構成」タブをクリックします。

  2. 構成のリストから構成を選択します。

  3. 仮想サーバー」タブをクリックします。

  4. 仮想サーバーのリストから仮想サーバーを選択します。

  5. 検索」タブをクリックします。

  6. スケジュールされたイベント」タブをクリックします。

  7. 検索イベント」タブで「新規」ボタンをクリックします。

次の表では、「新規検索イベントスケジュール」ページのフィールドについて説明します。

表 12–1 フィールド説明 > 新規検索イベントスケジュール

フィールド

説明

コレクション

保守をスケジュールするコレクションをドロップダウンリストから選択します。 

イベント

  1. コレクションのインデックスを再作成 — このスケジュールされたイベントは、指定された時刻に指定されたコレクションのインデックスを再作成します。

  2. コレクションを更新 — コレクションの作成後にファイルを追加または削除できます。ドキュメントの追加は、コレクション作成時に指定されたディレクトリの下でしか行えません。ドキュメントを削除する場合、そのファイルとメタデータのエントリだけがコレクションから削除されます。実際のファイル自体がファイルシステムから削除されるわけではありません。このスケジュールされたイベントは、指定された時刻にコレクションを更新します。

  3. パターン — インデックスを作成するファイルを選択するためのワイルドカードを指定します。

  4. 含まれているサブディレクトリ — このオプションを選択すると、選択されたディレクトリのサブディレクトリ内のドキュメントもインデックス作成されます。これがデフォルトの動作です。

  5. エンコーディング — インデックスを作成するドキュメントの文字エンコーディングを指定します。デフォルトは ISO-8859-1 です。インデックス作成エンジンは、HTML ドキュメントのエンコーディングを、そこに組み込まれているメタタグに基づいて決定しようとします。これが指定されていない場合にデフォルトエンコーディングが使用されます。

時間

構成されたイベント起動時刻。ドロップダウンボックスから時間と分の値を選択します。 

毎日 — 指定されたイベントを指定された時刻に毎日起動します。

指定日 — 指定されたイベントを指定された日に起動します。

1. 曜日 — 日曜から土曜までの間で、任意の曜日を指定します。

2. 日付 — 1 から 31 までの間で、任意の日付をコンマ区切りエントリとして指定します。例: 4,23,9

指定月 — 指定された月の指定された時刻に指定されたイベントを起動します。1 月から 12 月までの間で、月を指定します。

間隔

この期間後に指定されたイベントを起動します。 

1. 時間おき — ドロップダウンボックスから時間数を選択します。

2. 秒おき — ドロップダウンリストから秒数を選択します。

   

検索の実行

ユーザーの主な関心事は、検索コレクション内のデータについて質問し、その応答としてドキュメントのリストを取得することです。Sun Java System Web Server にインストールされている検索 Web アプリケーションは、デフォルトの検索クエリーおよび検索結果ページを提供します。それらのページは、そのまま使用することも、「検索ページのカスタマイズ」で説明する一連の JSP タグを使ってカスタマイズすることもできます。

ユーザーは、サーバー管理者によって作成されたコレクションに対して検索を行います。ユーザーは次のことを行えます。

サーバー管理者は、仮想サーバーの検索クエリーページへのアクセスに必要な URL を、ユーザーに知らせる必要があります。

検索ページ

エンドユーザーが検索機能にアクセスするのに使用できるデフォルトの URL は、次のとおりです。

http://<server-instance >:port number/search

例:

http://plaza:8080/search

エンドユーザーがこの URL を呼び出すと、Java Web アプリケーションである「検索」ページが開きます。


注 –

キーワード、およびオプションのクエリ演算子を含む、基本および高度な検索を実行する詳細な手順については、検索エンジンに付属のオンラインヘルプを参照してください。これらの情報にアクセスするには、「検索」ページの「ヘルプ」リンクをクリックしてください。


クエリーの実行

あるコレクションに対して検索を行うには、検索クエリーページを使用します。一連のキーワードと省略可能なクエリー演算子を入力すると、ブラウザに表示された Web ページ上にその結果が表示されます。結果ページには、検索条件に一致するサーバー上のドキュメントへのリンクが含まれます。


注 –

サーバー管理者は、「検索ページのカスタマイズ」で説明した方法でこの検索クエリーページをカスタマイズできます。 


クエリーを行うには、次の手順を実行します。

Procedureクエリーの実行

  1. ブラウザのロケーションバーに次の形式で URL を入力することで、検索 Web アプリケーションにアクセスします。

    http://<server-instance>:port number /search

  2. 表示された検索クエリーページの「検索対象」フィールドで、検索するコレクションを表すチェックボックスをオンにします。

  3. 関連のある Web ページのリストを得るために、クエリーを記述するいくつかの単語を入力したあと、「Enter」キーを押すか「検索」ボタンをクリックします。

    検索時により細かい調整を行いたい場合は、「詳細検索」ページで提供される検索パラメータを使用できます。このページについては次の節で説明します。

詳細検索

キーワードを細かく調整する演算子を追加すれば、検索精度を高めることができます。これらのオプションは「詳細検索」ページから選択できます。

詳細検索クエリーを行うには、次の手順を実行します。

Procedure詳細検索クエリーを行う

  1. ブラウザのロケーションバーに次の形式で URL を入力することで、検索 Web アプリケーションにアクセスします。

    http://<server-instance>:port number /search

  2. 「詳細」リンクをクリックします。

  3. 次の情報のいずれかまたはすべてを入力します。

    • 検索対象: 検索対象となるコレクションを選択します。

      • 検索: 次の 4 つのオプションがサポートされています。

        • すべての単語に一致: 「検索」に指定されたすべてのキーワードを含むページを検索します。

        • いずれかの単語に一致: 「検索」に指定されたいずれかのキーワードを含むページを検索します。

        • 完全に一致: 「検索」に指定された語句に完全に一致するページを検索します。

        • パセッージ検索: 取得されたページ内でキーワードまたは単語を含むパセッジを強調表示します。

        対象外の単語: 検索時に、指定された単語を含む Web ページが除外されます。

      • タイトルに「含む/含まない」: 指定されたキーワードを含むタイトルを持つページに、検索を制限します。

      • 検索対象期間: 選択された期間内にインデックス作成された Web ページに、検索処理を制限します。

ドキュメントフィールド

Sun JavaTMSystem Web Server はドキュメントのインデックスを維持します。インデックスには各ドキュメントのエントリが含まれます。各インデックスエントリには、Title、Author、URL などのフィールドが 1 つ以上含まれます。クエリーを特定のドキュメントフィールドに制限することができますが、その場合、その指定されたフィールドで条件に一致するドキュメントのみが検出されます。

たとえば、Einstein を単純に検索した場合、Title、Author、Keywords のいずれかのフィールドに単語 Einstein を含むドキュメントのすべてが検出されます。これには、Einstein に関するドキュメント、Einstein を参照しているドキュメント、Einstein によって書かれたドキュメントなどが含まれます。これに対し、Author = "Albert Einstein" と指定した場合、Albert Einstein によって書かれたドキュメントのみが検出されます。

デフォルトで検索可能なインデックスフィールドは、次のとおりです。

  1. Author <author> メタタグに指定された、ドキュメントを作成した著者、一連の著者、または組織。

  2. Keywords<keywords> メタタグに指定されたキーワード。

  3. Date — このドキュメントが最後に編集または変更された日付。

  4. Title — HTML の <title> タグに指定された、ドキュメントのタイトル。

検索クエリー演算子

検索クエリー演算子の詳細な一覧については、『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>
<!--... ほかのサイドバー項目 ... -->
    <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>

検索結果ページのカスタマイズ

検索結果は次のようにして生成されます。

タグの属性値を変更するだけで、検索結果ページをカスタマイズできます。

次のサンプルコードは、まずタイトルバーを表示し、次に指定された件数のレコードを表示し、最後にナビゲーションバーを表示します。タイトルバーには、検索に使用されたクエリー文字列と、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\\">" />
        &nbsp;<s1ws:resultStat formId="test" type="range" />
        &nbsp;<s1ws:resultNav formId="test" type="next" caption="<img border=0 src=\\"images/arrow-right.gif\\" alt=\\"Next\\">" />
        &nbsp; <!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’ />.&nbsp;&nbsp;
                </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>

フォームと結果をカスタマイズしてそれぞれ独立したページに格納する

フォームページと結果ページをそれぞれ独立させる必要がある場合、<form> タグセットを使ってフォームページを作成し、<formAction> タグセットを使って結果ページを作成する必要があります。

スムーズなページフローを実現できるよう、フォームページへのリンクを結果ページに追加する必要があります。

タグ規約

次のタグ規約に注意してください。

タグの仕様

Sun Java System Web Server には、検索インタフェースの検索クエリーページと検索結果ページのカスタマイズに使用可能な一連の JSP タグが含まれています。

検索ページのカスタマイズに使用可能な JSP タグの完全な一覧については、『Sun Java System Web Server 7.0 Developer’s Guide to Web Applications』を参照してください。