この章のトピックは、次のとおりです。
セキュア・フェデレーテッド検索により、分散Oracle SESインスタンス間でセキュアなコンテンツを検索できます。エンド・ユーザーは、Oracle SESフェデレーション・ブローカに対して認証されます。フェデレーション・ブローカは、セキュアなコンテンツを独自索引で問い合せるとともに、認証済エンド・ユーザーに代わって問合せを各フェデレーション・エンドポイントに連携させます。このメカニズムでは、Oracle SESインスタンス間でユーザー・アイデンティティを伝播させる必要があります。セキュア・フェデレーテッド検索環境を構築する際に重要な考慮事項は、Oracle SESインスタンス間でユーザー・アイデンティティをセキュアに伝播させることです。この項では、Oracle SESによりセキュアなフェデレーションを実行する方法について説明します。
フェデレーション・エンドポイントでセキュア検索を実行する場合、フェデレーション・ブローカはログイン・ユーザーのアイデンティティをフェデレーション・エンドポイントに渡す必要があります。エンドポイント・インスタンスがブローカ・インスタンスを信頼した場合、ブローカ・インスタンスはエンド・ユーザーのプロキシとなることができます。この信頼関係を確立するためには、Oracle SESインスタンス間でなんらかの秘密を交換する必要があります。この秘密は、「信頼できるエンティティ」の形式で交換されます。
信頼できるエンティティは、エンティティ名とエンティティ・パスワードの2つの値で構成されます。各Oracle SESインスタンスは信頼できるエンティティを1つ以上持つことができ、これをセキュア・フェデレーテッド検索に使用できます(信頼できるエンティティはプロキシ・ユーザーとも呼ばれます)。
Oracle SESインスタンスは、ユーザーおよびグループを管理するためのアイデンティティ管理(IDM)システムに接続できます。IDMシステムは、Oracle Internet Directory、Active DirectoryなどのLDAP準拠ディレクトリです。
信頼できるエンティティは、IDMシステムによって認証されるか、または、IDMシステムに関係なくOracle SESインスタンスによって直接認証されます。IDMシステムによる認証の場合、信頼できるエンティティの作成時に、「アイデンティティ・プラグインを認証に使用」ボックスを選択します。この場合、エンティティ・パスワードは不要です。これは、プロキシ認証に使用できるIDMシステムで構成されたユーザーが存在する場合に役立ちます。エンティティ名が、IDMシステム内に存在するユーザーの名前であり、プロキシ・ユーザーとして使用されることを確認してください。
Oracle SESによるプロキシ・ユーザーの認証の場合、信頼できるエンティティの作成時に、「アイデンティティ・プラグインを認証に使用」ボックスの選択を解除します。その後、任意の名前とパスワードのペアを使用して信頼できるエンティティを作成します。
「認証属性」を使用して、Oracle SESフェデレーション・エンドポイントでプロキシ認証を行う際に、この信頼できるエンティティに対して期待される、ユーザー資格証明の形式を指定します。フェデレーション・エンドポイントに登録されているアイデンティティ・プラグインは、このユーザー・アイデンティティをフェデレーション・エンドポイントで使用されるデフォルト認証形式にマップできる必要があります。フェデレーション・ブローカが、フェデレーション・エンドポイントでのプロキシ認証に使用されるデフォルト認証形式ではユーザー・アイデンティティを送信できない場合に、フェデレーション・エンドポイントに登録されているアイデンティティ・プラグインが、プロキシ認証時にユーザー・アイデンティティを受信する属性から、フェデレーション・エンドポイントで使用されるデフォルト認証形式に値をマップできると役立ちます。
プロキシ・エンティティを使用するには、WebサービスAPI proxyLogin()
ユーザー名およびパスワードをエンティティ名およびエンティティ・パスワードに使用します。アイデンティティ・プラグインは、パスワードを格納するのではなく、検証できます。proxyLogin()
にリクエストが送信されると、Oracle SESは(コールを戻す)アイデンティティ・プラグインをコールしてエンティティを認証します。proxyLogin()
からは、フェデレーション・トラステッド・エンティティに登録されている、有効な、信頼できるエンティティの1つが提供されます。
セキュア・フェデレーテッド検索を実行するには、フェデレーションに関与するブローカ・インスタンスとエンドポイント・インスタンスの両方にアイデンティティ・プラグインが登録されている必要があります。アイデンティティ・プラグインは同じIDMシステムと通信する場合もあれば、通信しない場合もあります。
注意: 各ユーザー名は、すべてのOracle SESインスタンス全体で一意となるようにしてください。そうでない場合は、セキュアなフェデレーションに関係するIDM全体で一意となるようにし、ユーザー・マッピングを明確にする必要があります。 |
ブローカ・インスタンスでのフェデレーテッド・ソースの作成時に、「セキュアなフェデレーテッド検索」セクションで次のパラメータを慎重に指定してください。
「リモート・エンティティ名」: これは、フェデレーション・エンドポイント上のフェデレーション・トラステッド・エンティティの名前です。これは、エンドポイント・インスタンスの管理者によって提供されます。
「リモート・エンティティ・パスワード」: これは、フェデレーション・エンドポイント上のフェデレーション・トラステッド・エンティティのパスワードです。これは、エンドポイント・インスタンスの管理者によって提供されます。
「検索ユーザー属性」: この属性は、フェデレーション・エンドポイント・インスタンス上でユーザーを識別し、認証するために使用します。このパラメータはオプションですが、ブローカとエンドポイントがエンド・ユーザーの識別に異なる認証属性を使用する場合には必要です(たとえば、エンド・ユーザーを、ブローカ・インスタンス上ではユーザー名で識別し、エンドポイント・インスタンス上では電子メール・アドレスで識別する場合など)。
ブローカ・インスタンスに登録されているアイデンティティ・プラグインは、アイデンティティ・プラグインの登録時に使用された認証属性に基づいて、ユーザー・アイデンティティをこの属性にマップできる必要があります。フェデレーション・ソースの作成時にこの属性が指定されなかった場合は、ブローカ・インスタンス上のユーザー・アイデンティティがエンドポイント・インスタンス上での検索に使用されます。
注意: フェデレーテッド・ソースの作成時にこれらのパラメータが指定されなかった場合、フェデレーテッド・ソースはパブリック・ソースとして処理されます(つまり、検索ユーザーが取得できるのはパブリック・コンテンツのみとなります)。 |
セキュアなOracle HTTP Server-Oracle SESチャネル: Oracle HTTP Serverは潜在的にOracle SESインスタンス上のAJP13ポートに接続して特定のユーザーを装うことができるため、Oracle HTTP ServerとOracle SESインスタンスの間のチャネルをSSL対応にするか、Oracle HTTP Server全体とOracle SESインスタンスのコンピュータをファイアウォールで保護する必要があります。
この項では、Active Directoryに接続するフェデレーテッド・ソースの設定手順について説明します。
エンドポイントとブローカの両方のインスタンスでActive Directoryアイデンティティ・プラグインをアクティブ化します。たとえば、グローバル設定 - アイデンティティ管理設定ページで、次の情報を入力します。
「パラメータ名」: 値
ディレクトリURL: ldap://ad.oracle.com:389
ディレクトリ・アカウント名: administrator@ad.oracle.com
「ディレクトリ・アカウントのパスワード」: ****
ディレクトリ・サブスクライバ: dc=ad,dc=oracle,dc=com
Directoryセキュリティ・プロトコル: なし
エンドポイント・インスタンスでフェデレーション・トラステッド・エンティティを作成します。たとえば、エンドポイント・インスタンスでOracle SESにログインして、グローバル設定 - フェデレーション・トラステッド・エンティティ・ページにナビゲートし、次の情報を入力します。
「エンティティ名」: エンティティ名
「エンティティ・パスワード」: パスワード
ブローカ側でフェデレーテッド・ソースを作成します。たとえば、ブローカ・インスタンスでOracle SESにログインして、ホーム - ソース・ページにナビゲートし、「ソース・タイプ」に「連携」を選択した後、次の情報を入力します。
「ソース名」: Sourcename1
「WebサービスURL」: http://endpoint.cn.oracle.com:7777/search/query/OracleSearch
「リモート・エンティティ名」: エンティティ名
「リモート・エンティティ・パスワード」: パスワード
ブローカ側でフェデレーテッド・ソースを参照するには、ソース・グループを作成して、フェデレーテッド・ソースをそのグループに追加します。
ソース名、WebサービスURL、リモート・エンティティ名とパスワード、および検索ユーザー属性は、ホーム - ソース - フェデレーテッド・ソースのカスタマイズ・ページで変更できます。
この項では、フェデレーテッド・ソースの別のカスタマイズ方法について説明します。
フェデレーテッド・ソースに問合せをルーティングするための条件を設定するフィルタ・ルールは、ホーム - ソース - フェデレーテッド・ソースのカスタマイズ・ページで入力します。フィルタ・ルールにより、スケーラビリティが向上します。ルールが未定義の場合は、フェデレーション・エージェントがすべての問合せをフェデレーテッド・ソースに送信し、検索を実行します。このルールは、検索問合せフィルタに対してのみ適用されます。エンド・ユーザーによる属性ショートカット問合せの入力では、ルールは適用されません。
各ルールには、属性、コロン(:)および式があります。ルールは、エンド・ユーザーのプロパティ(名前や電子メール・アドレスなど)と問合せ情報(ドキュメント言語、作成者、ドキュメントの変更日など)をベースにすることができます。たとえば、アイデンティティ属性には、mailやdnなどがあります。また、問合せ属性には、authorやlastmodifieddateなどがあります。
ソースに関する複数のルールは、AND演算子やOR演算子を使用して連結されます。属性名と演算子は大/小文字の区別がありません。たとえば、次のルールは、フェデレーテッド・ソースが英語のドキュメントを対象にし、かつアイデンティティ管理システムで電子メール・アドレスがAで始まるユーザーを対象としていることを定義しています。
(language:en ) AND (idm::mail:a.*)
属性は、Date、StringおよびNumber型です。String属性の場合のルール式は、正規表現です。Oracle SESでは、Java JDK 1.4.2のPatternクラス(java.util.regex.Pattern)に使用されている正規表現構文がサポートされます。dateおよびnumber属性の場合の式には、演算子と値が含まれます。演算子は、=、>、>=、<、<=です。
次のルールは、フェデレーテッド・ソースが1MBを超えるドキュメントを対象としていることを定義しています。
content-length:>1000000
次のルールは、フェデレーテッド・ソースが2006年12月31日より後に発行されたドキュメントを対象としていることを定義しています。
lastmodifieddate:> 12/31/2006
次の例は、フェデレーテッド・ソースが先週のドキュメントのみを対象としていることを定義しています。
lastmodifieddate:> sysdate - 7
次のルールは、フェデレーテッド・ソースがログイン名を対象としていることを定義しています。ログイン名はアイデンティティ管理リポジトリの属性である可能性があります。
username:test00.*
ホーム - ソース - フェデレーテッド・ソースのカスタマイズ - 検索制限ページを使用して、検索対象をソース・グループの特定のリストに制限します。
フェデレーテッド・ソースから使用できるソース・グループは、ページがロードされる際に取得されます。「ソース・グループ制限検索」が選択されている場合は、「未検索」リストと「検索済」リスト間で、ソース・グループを移動できます。「無制限検索」が選択されている場合は、リモート・インスタンスのすべてのソース・グループが検索されます。
「ソース・グループのリフレッシュ」ボタンを使用して、リモート・インスタンスから使用できるソース・グループをリフレッシュします。使用できないソース・グループには、「(使用不可)」のマークが付きます。リフレッシュ後、新たに使用可能になったすべてのソース・グループは、デフォルトで「未検索」リストに表示され、既存のソース・グループはすべて現在と同じリストに引き続き表示されます。リモート・ソース・グループ名が変更された場合は、旧グループ名に「(使用不可)」のマークが付き、新規グループ名が「未検索」リストに表示されます。使用不可のソース・グループは、「検索済」リストに残されているかぎり使用不可の状態が続きます。
フェデレーテッド・ソースが使用不可の場合は、使用可能なソース・グループがローカル記憶域からロードされます。また、Oracle SESが使用可能なソース・グループをリモート・インスタンスから取得できないことを示す警告メッセージが表示されます。これは、使用可能なソース・グループの期限が切れている可能性があることを示しています。
注意: フェデレーテッド・ソースを制限できるのは、リモートのOracle SESインスタンス上で明示的に作成されたソース・グループに対してのみです。たとえば、フェデレーテッド・ソースをリモートのOracle SESインスタンスの「その他」グループに対して制限することはできません。 |
ホーム - ソース - フェデレーテッド・ソースのカスタマイズ - 属性の取得ページを使用して、フェデレーテッド・ソースから取得する属性を識別します。
フェデレーテッド・ソースから使用できる属性は、ページがロードされる際に取得されます。「未取得」列と「取得済」列の間で、取得する検索属性を移動します。デフォルトでOracle SESによって常に取得される属性は、「取得済」リストに表示され、「(必須)」のマークが付きます。これらの属性は、「未取得」リストに格納できません。
「属性のリフレッシュ」ボタンを使用して、リモート・インスタンスから使用できる属性をリフレッシュします。使用できない属性には、「(使用不可)」のマークが付きます。リフレッシュ後、新たに使用可能になったすべての属性は、デフォルトで「未取得」リストに表示され、既存の属性はすべて現在と同じリストに引き続き表示されます。リモート属性名が変更された場合は、旧属性名に「(使用不可)」のマークが付き、新規属性名が「未取得」リストに表示されます。使用不可の属性は、「取得済」リストに残されているかぎり使用不可の状態が続くか、明示的な属性マッピングに使用されます。
フェデレーテッド・ソースが使用不可の場合は、使用可能な属性がローカル記憶域からロードされます。また、Oracle SESが使用できる属性をリモート・インスタンスから取得できないことを示す警告メッセージが表示されます。これは、使用可能な属性の期限が切れている可能性があることを示しています。
ホーム - ソース - フェデレーテッド・ソースのカスタマイズ - 属性マッピング・ページを使用して、ローカル検索属性をフェデレーテッド検索属性にマップします。たとえば、Creatorというローカル検索属性名をAuthorというリモート属性名にマップできます。これは、明示的な属性マッピングです。サポートされるのは、同じデータ型の属性間での1対1のマッピングのみです。
注意: Oracle SESのデフォルトの検索属性の場合は、ローカル属性がリモート属性に暗黙的にマップされます。たとえば、Authorという名前のリモート属性は、常にAuthorという名前のローカル検索属性にマップされます。他のすべての属性については、明示的なマッピングを作成する必要があります。 |
ローカル検索属性は、ローカル・インスタンスで使用できる属性で、グローバル設定 - 検索属性ページで定義されます。マッピングに使用されるローカル検索属性は、グローバル設定 - 検索属性ページでは削除できません。初期状態でのマッピングはありません。
リモート検索属性は、フェデレーテッド・ソースで使用できる属性です。このリストは、ページがロードされる際に取得されます。ローカル属性にマップされたリモート属性が使用できない場合は、そのリモート属性に「(使用不可)」のマークが付きます。問合せの際に使用されるのは、使用可能なリモート属性が指定されている属性マッピングのみです。
Oracle SESの内部属性eqtopphrases
、eqtopsentences
、eqdatasourcename
、eqdatasourcetype
およびeqfedchain
は、10.1.8.2より前のOracle SESバージョンからは取得できません。これは、トピック・クラスタリングと結果リストの構成に影響を与えます。トピック・クラスタ・ツリーがeqtopphrases
またはeqtopsentences
を使用して構成されている場合、これらの属性の値は、10.1.8.2より前のフェデレーテッド・ソースからの結果には含まれず、したがって、クラスタ・ツリーにも反映されません。同様に、eqdatasourcename
、eqdatasourcetype
およびeqfedchain
が詳細結果リストの構成XSLTで使用されると、空の値になります。これは、現在、このようなソースに対してソース・レベルで結果をレンダリングできないことを意味します。
グローバル設定 - 検索結果リストの構成ページで拡張構成が有効な場合は、ハイライトされているキーワードに問題があります。XSLTの属性はすべてHTMLの安全性を配慮してエスケープ処理されます。ただし、ハイライトされた属性(タイトルや作成者など)は、XSLTで簡単にエスケープ処理できません。
ローカルの結果からハイライトされた属性には、キーワードの周囲に[[と]]のマーカーが付きます。これらはXSLTの太字タグで置換されます。これらのマーカーの使用をWebサービスに伝えるために、特別な属性IDが渡されます。この属性IDは、10.1.8.2より前のバージョンでは処理されないため、太字タグは常に戻され、重複してエスケープ処理されます。
属性値を取得し直した際にハイライトされた属性が常にエスケープ処理されることを保証できる場合は、XSLTでのエスケープ処理を無効にできます。
エスケープ処理の無効化を回避するには、XSLTを編集します。ハイライトされた属性を処理するために、XSLTには、次のテンプレートがあります。
<!-- Call bold-template on a given string for a fixed set of delimiters --> <xsl:template name="process-hilite-attr"> <xsl:param name="str" /> <xsl:call-template name="bold-template"> <xsl:with-param name="str" select="$str" /> <xsl:with-param name="startdelim" select="'[['" /> <xsl:with-param name="enddelim" select="']]'" /> <xsl:with-param name="doe" select="'no'" /> <!-- escape output --> </xsl:call-template> </xsl:template>
エスケープ処理をオフにするには、次の行をYes
に変更します。
<xsl:with-param name="doe" select="'no'" />
推奨コンテンツを使用すると、デフォルトの問合せアプリケーションの結果リストに加えてリアルタイムのデータ・コンテンツを表示できます。Oracle SESはコンテンツ・プロバイダからデータを取得し、そのデータにスタイル・シートを適用して、HTMLフラグメントを生成します。そのHTMLフラグメントは結果リストに表示され、WebサービスAPIを介して使用できるようになります。たとえば、エンド・ユーザーが同僚の連絡先を検索すると、Oracle SESは推奨コンテンツ・プロバイダからコンテンツをフェッチして、その人物の連絡先情報(電子メール・アドレス、電話番号など)を結果リストに戻します。推奨コンテンツの結果は、問合せ結果の上のタブ・ペインに表示されます。
管理ツールの検索 - 推奨コンテンツ・ページで、推奨コンテンツを構成します。Oracle SESの結果リストに含める推奨コンテンツの結果の最大数(20件以内)を入力します。これらの結果は、先着順で提供されます。
推奨コンテンツ・プロバイダの問合せパターンの定義には、正規表現(Java正規表現API java.util.regex
でサポートされているもの)が使用されます。正規表現ベースのパターン一致では、大/小文字が区別されます。たとえば、パターンdir¥s(¥S+)
を使用するプロバイダは、問合せdir james
ではトリガーされますが、問合せDir James
ではトリガーされません。問合せDir James
でトリガーするためには、パターンを[Dd][Ii][Rr]¥s+(¥S+)
または(?i)dir¥s+(¥S+)
のいずれかに定義できます。空の問合せパターンを使用するプロバイダは、すべての問合せでトリガーされます。
推奨コンテンツ・プロバイダ用に入力するURLには、$ora:q、$ora:lang、$ora:q1〜$ora:qnおよび$ora:usernameという変数を含めることができます。
$ora:qはエンド・ユーザーの全問合せです。
$ora:langはブラウザ言語用の2文字のコードです。
$ora:qnは、エンド・ユーザーの問合せからのn番目の正規表現一致グループです。Nは1から始まります。n番目のグループに一致するものがない場合、この変数は空の文字列で置き換えられます。
$ora:usernameはエンド・ユーザー名です。
プロバイダからのXMLコンテンツをHTMLフラグメントに変換するためのルール(サイズやスタイルなど)を定義するために、XSLTスタイル・シートを入力します。このHTMLフラグメントは結果リストに表示されるか、あるいはWebサービスAPIを介して戻されます。XSLTスタイル・シートが入力されていない場合、Oracle SESは推奨コンテンツ・プロバイダがHTMLを戻すものと仮定します。XSLTスタイル・シートが入力されておらず、プロバイダがXMLを戻す場合は、結果リストはプレーンXMLを表示します。
注意: 推奨コンテンツ・プロバイダから有効で安全なコンテンツが戻されるようにすることは、管理者の責任で行ってください。推奨コンテンツ・プロバイダから破損しているコンテンツや不完全なコンテンツが戻されると、デフォルトの問合せアプリケーションの結果ページのフォーマットに影響を与える可能性があります。 |
Oracle SESがエンド・ユーザーの認証情報を推奨コンテンツ・プロバイダに渡す方法に関しては、次の3つのセキュリティ・オプションがあります。
なし: この方法(デフォルト)では、セキュリティ・ポリシーは使用されません。
Cookie: この方法では、最初にエンド・ユーザーが推奨コンテンツ・プロバイダによって認証される必要があります。ユーザーがセッションを維持できるように、Cookieが設定されます。Oracle SESでは、プロバイダが認証に使用するCookieがわかっている必要があります。このCookieは、推奨コンテンツ・プロバイダの登録時に使用可能になります。ユーザーが問合せを入力すると、Oracle SESはユーザーのリクエスト・ヘッダーからCookieを取得し、それらをプロバイダに渡します。Cookieの範囲は、プロバイダによって、プロバイダ・サイトおよびOracle SESサイトの共通ドメインに設定される必要があります。
たとえば、プロバイダ・サイトがhttp://provider.company.comで、Oracle SESサイトがhttp://ses.company.comであるとします。エンド・ユーザーがプロバイダ・サイトにログインした後、このサイトではドメイン範囲である.company.comを使用して、セキュリティCookieであるloginCookieの値を設定できます。エンド・ユーザーがOracle SESで検索を行うと、Oracle SESはエンド・ユーザーのブラウザからloginCookieの値を取得し、(プロバイダ・サイトに再度ログインすることなく)推奨コンテンツを取得できるように、取得したloginCookieの値をプロバイダ・サイトに転送します。ただし、プロバイダ・サイトがhttp://providerとしてアクセスされる場合や、Oracle SESサイトがhttp://SESとしてアクセスされる場合は、この2つのサイト間で共有するために使用できるドメインCookieがなく、このセキュリティ・メカニズムが機能しません。
推奨コンテンツは使用できてもユーザーが推奨コンテンツ・プロバイダにログインしていない場合や、推奨コンテンツ・プロバイダのCookieが使用できない場合の対策を決定できます。「認証されていないユーザー・アクション」に対して「コンテンツを無視」を選択した場合は、そのプロバイダからのコンテンツは結果リストに表示されません。「ログイン・メッセージの表示」を選択した場合は、Oracle SESにより、このプロバイダから入手できるコンテンツはあるがユーザーがログインしていないという内容のメッセージが戻されます。このメッセージでは、そのプロバイダにログインするためのリンクも示されます。「ログインURL」フィールドに、推奨コンテンツ・プロバイダにログインするためのリンクを入力します。
サービス・ツー・サービス: この方法では、Oracle SESと推奨コンテンツ・プロバイダ間に、一方向の信頼関係が確立されます。すでにOracle SESにログインしているユーザーは、プロバイダによって再度認証される必要はありません。プロバイダはOracle SESアプリケーションについてのみ認証を行い、エンド・ユーザーとして機能するOracle SESアプリケーションを信頼します。
エンド・ユーザー・アイデンティティは、HTTPヘッダーORA_S2S_PROXY_USER
に入れられて、Oracle SESからプロバイダ・サイトへ送信されます。信頼できるエンティティは、プロバイダが使用するアイデンティティ管理システムで構成されたプロキシ・ユーザーの場合もあれば、名前/値ペアの場合もあります。
注意: セキュアなコンテンツ・プロバイダがエンド・ユーザーを認証する必要があり、ドメイン・レベルのセキュリティCookieを設定してエンド・ユーザーのログイン後のログイン情報を維持する場合は、フォーム認証のCookie方法を使用してください。Oracle SESのエンド・ユーザーはプロバイダ・サイトに手動でログインする必要があり、セキュリティCookieはブラウザに格納されます。これによって、Oracle SESはエンド・ユーザーのプロバイダを検索でき、追加のログインは不要になります。 ただし、ドメイン・セキュリティCookieをプロバイダが使用できない場合、プロバイダはサービス・ツー・サービス・セキュリティをサポートする必要があります。プロバイダは、HTTP Basic認証またはDigest認証を渡した後に、Oracle SESアプリケーション・アカウントによる検索を可能にする必要があります。また、プロバイダが異なるOracle SESエンド・ユーザーに対して異なるセキュアなコンテンツを提供する場合、プロバイダはOracle SES検索リクエストのエンド・ユーザー・セキュリティ(HTTPヘッダー HTTP Basic認証またはDigest認証を要求するプロバイダを登録するには、「エンティティ名」フィールドに認証ユーザー名を指定し、「エンティティ・パスワード」フィールドに認証パスワードを指定します。 |
既存のOneBoxプロバイダは、Oracle SESの推奨コンテンツ・プロバイダとして構成できます。たとえば、Google OneBoxプロバイダの場合、プロバイダURLがhttp://host.company.com/apps/directory.jsp
、トリガーがdir¥s(¥S+)
とします。ユーザーの問合せがdir jamesの場合、プロバイダはapiMaj=10&apiMin=1&oneboxName=app&query=james
のような問合せ文字列を持つリクエストを受信します。
推奨コンテンツ・プロバイダで、URLテンプレートをhttp://host.company.com/apps/directory.jsp?apiMaj=10&apiMin=1&oneboxName=app&query=$ora:q1
と設定します。プロバイダのパターンは同じで、dir¥s(¥S+)
となります。Google OneBoxに使用されるXSLTは、少しの変更で再利用できます。次の行を探します。
<xsl:template name="apps">
次に、その行を自分のテンプレートで次のように変更します。
<xsl:template match="/OneBoxResults">
デフォルトの問合せアプリケーションで使用する検索結果リストのデフォルトの外観は、グローバル設定 - 検索結果リストの構成ページでカスタマイズできます。
最初に、結果ドキュメントのXML表記に記載する必要がある属性を選択します。使用可能な属性は、ローカル属性、フェデレーテッド属性および内部属性です。各属性名は1回のみ記載されます。つまり、別の属性と同名のフェデレーテッド属性名や、ローカル検索属性に明示的にマッピングされているフェデレーテッド属性名の記載は1回のみです。
次の表で、Oracle SESの内部属性を説明します。
表8-1 Oracle SESの内部属性
名前 | タイプ | 説明 |
---|---|---|
|
String |
ドキュメントを発行したソースの名前(未変換)。この名前は、ドキュメントの発行元インスタンスに対してはローカルですが、ドキュメントの受取先インスタンスにはローカルではありません。 ドキュメントがフェデレーテッド・ソースから発行された場合、この属性の値は、ローカル・インスタンス上のフェデレーテッド・ソースの名前ではなく、フェデレーテッド・インスタンス上のソース名になります。 |
|
String |
ドキュメントを発行したソースのタイプ(未変換)。このタイプは、ドキュメントの発行元インスタンスに対してローカルです。たとえば、「Federated」はこの属性の値として有効ではありません。 |
|
String |
ドキュメントの抜粋またはコンテキスト内キーワード。 |
|
String |
元のドキュメントへのリダイレクトURL(つまり、デフォルト結果リストの「タイトル」リンクの値)。 |
|
String |
ドキュメントのキャッシュ・バージョンのURL(つまり、デフォルト結果リストの「キャッシュ」リンクの値)。 |
|
String |
ドキュメントへのリンク・リストが含まれているページのURL(つまり、デフォルト結果リストの「リンク」リンクの値)。 |
|
Number |
ドキュメントのサイズ(バイト数)。 |
|
String |
問合せ文字列。 |
|
String |
情報ソース・グループを参照するためのURL(つまり、デフォルト結果リストの「ソース・グループ」リンクの値)。 |
|
String |
情報ソース・パスを参照するためのURL(つまり、デフォルト結果リストの「パス」リンクの値)。 |
|
Number |
ドキュメントID。 |
|
String |
アンダースコア(_)で区切られたフェデレーテッド・ソースIDチェーン。 |
|
String |
フェデレーテッド・ドキュメントのパスを表すインスタンス名のチェーン。インスタンス名はセミコロン(;)で区切られます。 |
次に、選択した属性に対して機能するXSLTを指定します。これにより、XMLコンテンツが、結果リストに表示するHTMLフラグメントに変換されます。 XSLTが空白である場合、XMLは変換されません。その場合は、デフォルトの外観を使用して検索結果が表示されます。 無効なXSLTは保存できません。この変換の出力は、XSLTに次の指定を挿入してHTMLにする必要があります。
<xsl:output method="html" />
CSSを指定すると、XSLTで生成されたHTMLのスタイルを設定できます。このCSSは、デフォルトの問合せアプリケーション用に組み込まれているCSSファイルとともに使用されます。拡張構成のCSSファイルとデフォルトのCSSファイルの間に競合がある場合は、拡張構成の定義が使用されます。拡張構成には、デフォルトのXSLTとCSSのスタイル・シートが用意されています。
XSLTを適用するために、各ドキュメントは、問合せの際に次のスキーマを使用してXML表記に変換されます。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="result"> <!-- Useful internal non-search attributes --> <element name="eqdatasourcename" type="xsd:string" maxOccurs=1 /> <element name="eqdatasourcetype" type="xsd:string" maxOccurs=1 /> <element name="eqsnippet" type="xsd:string" maxOccurs=1 /> <element name="eqredirecturl" type="xsd:string" maxOccurs=1 /> <element name="eqcacheurl" type="xsd:string" maxOccurs=1 /> <element name="eqlinksurl" type="xsd:string" maxOccurs=1 /> <element name="eqdisplayurl" type="xsd:string" maxOccurs=1 /> <element name="eqcontentlength" type="xsd:integer" maxOccurs=1 /> <element name="equserquery" type="xsd:string" maxOccurs=1 /> <element name="eqgroupbrowseurl" type="xsd:string" maxOccurs=1 /> <element name="eqpathbrowseurl" type="xsd:string" maxOccurs=1 /> <element name="eqdocid" type="xsd:integer" maxOccurs=1 /> <element name="eqfedid" type="xsd:string" maxOccurs=1 /> <!-- Built-in search attributes --> <element name="author" type="xsd:string" maxOccurs=1 /> <element name="description" type="xsd:string" maxOccurs=1 /> <element name="headline1" type="xsd:string" maxOccurs=1 /> <element name="headline2" type="xsd:string" maxOccurs=1 /> <element name="host" type="xsd:string" maxOccurs=1 /> <element name="infosource" type="xsd:string" maxOccurs=1 /> <element name="infosourcepath" type="xsd:string" maxOccurs=1 /> <element name="keywords" type="xsd:string" maxOccurs=1 /> <element name="language" type="xsd:string" maxOccurs=1 /> <element name="lastmodifieddate" type="xsd:date" maxOccurs=1 /> <element name="mimetype" type="xsd:string" maxOccurs=1 /> <element name="referencetext" type="xsd:string" maxOccurs=1 /> <element name="subject" type="xsd:string" maxOccurs=1 /> <element name="title" type="xsd:string" maxOccurs=1 /> <element name="url" type="xsd:string" maxOccurs=1 /> <element name="urldepth" type="xsd:integer" maxOccurs=1 /> <!-- Custom search attributes --> … </xsd:element> </xsd:schema>
XMLには、要素名に関する次のルールがあります。
英数字、英語以外の文字、数字および表意文字を使用できます。
限られた句読点(アンダースコア、ハイフン、ピリオド)を使用できます。
名前の先頭に使用できるのは、文字、表意文字またはアンダースコアのみです。
カスタム属性名は、拡張検索のレンダリングに関するルールに準拠している必要があります。これらのルールを適用するために、これらのルールで許可されないすべての文字は空の文字列に置換されます。また、Oracle SESの検索属性は大/小文字が区別されないため、XML形式で使用される場合は、すべての属性が小文字に変換されます。
たとえば、次のような加工されていないXML結果データがあるとします。
<result> <eqdatasourcetype>WEB</eqdatasourcetype> <title>Oracle Secure Enterprise Search</title> <url> http://www.oracle.com/technology/products/oses/index.html </url> <author>Anonymous</author> <description> Oracle Secure Enterprise Search 10g, a standalone product from Oracle, enables a secure, high quality, easy-to-use search across all enterprise information assets. </description> </result>
次のXSLTは、Webソースからのドキュメントについて、タイトル、URLおよび作成者を抽出してフォーマットします。
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="result[eqdatasourcetype='WEB']"> <span class="title"> <xsl:text> "</xsl:text><xsl:value-of select="title" /><xsl:text>"</xsl:text> </span> <span class="author"> <xsl:text> By </xsl:text><xsl:value-of select="author" /> </span> <br/> <span class="url"> <a href="http://{url}"><xsl:value-of select="url" /></a> </span> </xsl:template> </xsl:stylesheet>
この出力のCSSスタイル・シートは、次のようになります。
.title { font-weight: bold; }
.url { font-style: italic; }
これらのスタイル・シートから、次の最終結果が作成されます。
"Oracle Secure Enterprise Search" By Anonymous
http://www.oracle.com/technology/products/oses/index.html
リアルタイム・クラスタリングでは、検索結果がグループに編成され、エンド・ユーザーに対して上位結果の様々なビューが提供されます。1つのグループ内でクラスタ化された複数のドキュメントは、クラスタ・ノードと呼ばれ、同じ共通トピックまたはプロパティ値を共有します。大規模なドキュメント・セットが含まれているクラスタ・ノードは、複数の子クラスタ・ノードに分類でき、階層が構築されます。ユーザーは、特定のクラスタ・ノードに直接ナビゲートできます。効果的なリアル・タイム・クラスタリングによって、クラスタリング品質とクラスタリング時間とのバランスが保たれます。
注意: 10.1.8.2の新しい問合せアプリケーションは、Internet Explorerバージョン6および7、Firefoxバージョン1.5および2.xで動作保証されています。10.1.8.1の既存の機能については、従来のユーザー・インタフェースhttp://<host>:<port>/search/query/search-classic.jspを介して、Oracle SESでサポートされるすべてのブラウザで動作保証されています。 |
検索属性(String、NumberまたはDate)は、クラスタ・ツリーの生成に使用されます。これらの属性は、ローカル検索属性、明示的にマップされていないフェデレーテッド属性、およびOracle SESの内部属性です。
Oracle SESでは、トピックとメタデータの2つのタイプのクラスタ・ツリーをサポートしています。各ツリーは、個別に有効または無効にできます。デフォルトの問合せアプリケーションのすべてのクラスタ・ツリーに適用するパラメータは、グローバル設定 - クラスタリング構成ページで構成できます。次のパラメータがあります。
クラスタ・ツリーの最大の深さ: クラスタ・ノード階層の最大レベル。
1ノード当たりの子の最大数: 各レベルでの最大クラスタ・ノード数。このパラメータは、「その他」ノードには適用されません。
1ノード当たりのドキュメント最小数: 1つのノード内での最小ドキュメント数。このパラメータは、「その他」ノードには適用されません。
注意: クラスタ・ツリーの各レベル内で、ノードに分類されていないドキュメントは、「その他」と呼ばれる特別なノードに配置されます。「1ノード当たりのドキュメント最小数」および「1ノード当たりの子の最大数」パラメータは、「その他」のノードには適用されません。 |
カスタマイズしたOracle SESアプリケーションの場合は、問合せWebサービスAPIを使用してクラスタリングを構成してください。
トピック・クラスタリングでは、ドキュメントの最も重要なフレーズを(必要な場合はセンテンスも)使用して、関連するクラスタ・ノードと階層を作成します。これらの重要なフレーズは、問合せの際とSecure Enterprise Searchドキュメント・サマライザの両方で抽出されます。ドキュメント・サマライザは、検索結果クラスタリングにデフォルトで組み込まれているドキュメント・サービスです。
トップ・フレーズのクロール時抽出は、グローバル設定 - ドキュメント・サービス・ページのドキュメント・サービス・パラメータを使用して構成します。トピック・クラスタリング・ツリーは、グローバル設定 - クラスタリング構成 - トピック・クラスタリング・ツリーの作成ページで作成します。
トピック・クラスタリングは、String型の1つ以上の検索属性とOracle SESの次の内部属性を使用して構成できます。
eqsnippet
: コンテキスト内にキーワードがあるドキュメントの抜粋。
eqtopphrases
: 1つのドキュメント内の同じワード数のフレーズ中で最も頻度の高いフレーズ。
eqtopsentences
: 1つのドキュメント内の重要なフレーズをベースにした重要なセンテンス。
デフォルトでは、keywords
、title
、eqsnippet
およびeqtopphrases
の各属性が、トピック・クラスタリングに対して構成されます。keywords
、eqtopphrases
およびeqtopsentences
には、事前に抽出されたワードとフレーズが含まれています。これらの属性に対する追加のフレーズ抽出は実行されません。
デフォルトの問合せアプリケーションに対する問合せの際のワードとフレーズ抽出を制御するパラメータは、グローバル設定 - クラスタリング構成ページで構成できます。次のパラメータがあります。
シングル・ワード抽出:
最小発生数: 抽出するワードの最小頻度。
最大抽出ワード数: 抽出するワードの最大数。
フレーズ抽出:
最小発生数: 抽出するフレーズの最小頻度。
最大抽出フレーズ数: 抽出するフレーズの最大数。
最大フレーズ長: 抽出する各フレーズの最大ワード数。
トピック・クラスタリングでは、ワードまたはフレーズがトピック・クラスタ結果ノードにならないように、フレーズ・ストップワード・リストとブラックリストが使用されます。
フレーズ・ストップワード・リストは、ドキュメント・サマライザ・ドキュメント・サービスでも使用されます。ストップワード・ファイルは、フレーズ抽出時に検討の対象外となったワードを格納した言語固有のファイルです。ブラックリスト・ファイルは、クラスタ・ノード名として表示されないワードやフレーズを格納した言語固有のファイルです。
たとえば、索引付けされたドキュメントのすべてに「Oracle Corporation」というフレーズが含まれていて、「oracle corporation」というクラスタ・ノードを保持することが無意味な場合は、このフレーズをブラックリストに追加します。
注意: 索引ストップワードには、独立したストップワード・リストがあります。これは、索引付けしないワードを記載したOracle SES内部ファイルです。このファイルはフレーズ抽出には関係ありません。 |
ストップワード・ファイルとブラックリスト・ファイルは両方ともプレーン・テキスト形式で、各行に1つのワードまたはフレーズが格納されます。フレーズ・ストップワード・ファイル名には、phrasestopwordsの後にピリオドと2文字の言語コードを指定する必要があります(例: 英語の場合はphrasestopwords.en
)。同様に、ブラックリスト・ファイル名には、blacklistの後にピリオドと2文字の言語コードを指定する必要があります。
デフォルトでは、これらのファイルは$ORACLE_HOME/search/lib/plugins/doc/extractor/phrasestopwords
ディレクトリに格納されます。また、その他の言語のフレーズ・ストップワード・ファイル・サンプルは、$ORACLE HOME/search/lib/plugins/doc/extractor/samples/phrasestopwords
にあります。これらの言語のドキュメントがある場合は、これらのファイルを$ORACLE HOME/search/lib/plugins/doc/extractor/phrasestopwords
にコピーしてください。
ファイル内でのワードまたはフレーズの順序は、フレーズ抽出に影響を与えません。たとえば、phrasestopwords.en
には、次のように指定できます。
a an me : z
blacklist.en
ファイルには、次のように指定できます。
site maps oracle corporation : term of use
注意: ストップワード・ファイルとブラックリスト・ファイルは、デフォルトの問合せアプリケーションとWebサービスAPIの両方に適用できます。他のパラメータは、デフォルトの問合せアプリケーションにのみ適用できます。 |
注意: バックアップおよびリカバリ操作では、新しい位置でインスタンスをリカバリする場合、ストップワード・ディレクトリは絶対パスであるため、これを更新して新しい位置を反映させてください。 |
現在、最も機能が発揮されるのは、英語のトピック・クラスタリングです。クローラのドキュメント・サマライザと問合せアプリケーションのクラスタリング・モジュールは、両方ともステマーを使用してワードをステミングし、同じ語幹を使用してワードとフレーズをマージします。オープン・ソース・ステマー・ライブラリSnowballは、この目的に使用されます。Oracle SESに付属しているライブラリ・バージョンは、次の言語をサポートしています。
オランダ語
英語
フィンランド語
フランス語
ドイツ語
ノルウェー語
ポルトガル語
ロシア語
スペイン語
スウェーデン語
ポーランド語サポート用に、Egothorステマーが含まれています。ステマー構成は、デフォルトの問合せアプリケーションとWebサービスAPI間で共有されます。
注意: 中国語および日本語ではトピック・クラスタリングはサポートされていません。 |
メタデータ・クラスタリングは、String、DateまたはNumber型の単一の属性に対して実行されます。1つのドキュメント内で同じ属性に対して複数の属性値がある場合は、最初の属性値のみがクラスタリングに使用されます。デフォルトでは、すべての値が現状のままクラスタリングに渡されます。
ただし、属性値をトークン化するためにデリミタを指定できるのは、String属性に対してのみです。トークン化デリミタが未入力の場合(または空白のみが入力された場合)、デリミタは空白にデフォルト設定されます。トークン化されると、単一の属性値は複数のセグメントに分割されます。各セグメントは、階層デリミタと呼ばれる別のデリミタに基づいて階層に対応付けることができます。空白はデフォルトの階層デリミタですが、トークン化と階層の両方を選択した場合は、異なるデリミタを使用する必要があります。解析は、最初にトークン化で実行され、次に結果のトークンから階層を解釈することで実行されます。
メタデータ・クラスタリング・ツリーは、グローバル設定 - クラスタリング構成 - メタデータ・クラスタリング・ツリーの作成ページで作成します。
トークン化と階層の両方に意味がある例には、カテゴリ属性がカンマで区切られたフィールドのリストで構成され、その各フィールドがスラッシュで区切られた階層的な分類を表現する例があります(java/j2ee/jdbc, oracle/search/connectorなど)。
トークン化と階層の構成は、DateまたはNumber属性には適用できません。Date型属性のメタデータ・ツリーでは、第1レベルが年、第2レベルが月、第3レベルが日という固定の表示形式が使用されます。年は降順にソートされ、月と日は昇順にソートされます。Number型属性のメタデータ・ツリーは、固定の範囲数(5)と固定のツリーの深さ(2)の範囲がベースとなります。空の範囲は表示されません。
クラスタ・ノードでは、上位結果がフィルタリングされますが、ドキュメントの順序は変更されません。ユーザーがクラスタ・ノードを選択した場合、結果の表示はそのクラスタ・ノード内のドキュメントに限定されます。ソートやページングなど結果内のすべての操作は、そのクラスタ・ノードに制限されます。
リアルタイム・クラスタのサイドバーは、デフォルトでは非表示です。ユーザーは、検索結果ページの左側にある矢印アイコンをクリックしてサイドバーを表示できます。サイドバー内に、結果クラスタが表示されます。
ユーザーは、他のインタフェースに影響を与えずに、クラスタ・ツリー内のノードを開閉できます。ユーザーがクラスタ・ノードをクリックすると、検索結果がフィルタ処理されます。子ノードがないクラスタ・ツリーは無効です。
問合せWebサービスAPIのメソッドには、カスタマイズされたOracle SESアプリケーションに対するクラスタリングが用意されています。 中心的なインタフェースは、doOracleOrganizedSearch
メソッドです。このメソッドは、問合せ情報、グループ化とソートのオプションおよびクラスタリング要求を受け入れます。このメソッドは、要求のバリエーションに基づいて、要求した結果を戻します。もう1つのメソッドdoOracleFetchSearch
は、ドキュメント・セットが明確な場合に使用されます。
doOracleOrganizedSearch
の入力には、次の情報が含まれます。
問合せ
上位N(グループ化、ソートおよびクラスタリングに使用される結果セットのサイズ)
重複の制御(削除、マーク)
データ・グループ・リスト
問合せおよびドキュメントの言語
グループ化とソートのオプション
クラスタ・ツリー構成情報(ツリーの深さ、各ノードの子、しきい値、ツリー形式のタイプ(JSON、XML)、トピック抽出の構成、メタデータ・クラスタリングの構成)
その他の問合せパラメータ(Boolean returnCount、String filterConnect、Filter[] filtersを含む)
出力は、検索結果、グループ化情報およびクラスタ・ツリー文字列リストが格納されている単一のオブジェクトです。検索結果リストの順序は、グループ化とソートのオプションで指定されています。このオプションが未指定の場合、関連性のスコアに従ってソートされます。戻されたクラスタ・ツリー文字列は、クラスタ・ツリー情報(ツリー構造、ノード名およびドキュメントID)を表します。
グループ化とソートのオプションをサポートするために、GroupAttribute
、SortAttribute
およびGroupResult
の3つのクラスが用意されています。
クラスタリング要求をサポートするために、クラスタリング要求を制御するClusterConfig
と、ツリー出力が格納されるClusterTree
の2つのクラスが用意されています。
クラスOracleResultContainer
は、検索ヒット結果、グループ化結果およびクラスタリング結果をまとめる際に定義されます。
doOracleFetchSearch
は、ドキュメントIDまたはフェデレーテッド・ソースID(あるいはその両方)によって識別されたドキュメントの選択リストをフェッチするために使用されます。
GroupAttribute
を指定すると、ソート属性の最上部にこのクラスが自動的に追加されます。たとえば、問合せがホスト名でグループ化され、タイトルでソートされている場合、検索ヒットは(hostname, title)でソートされます。
この結果には、ソート、グループ化またはクラスタリングのオプションを適用できます。ソートは、上位N結果に基づいて実行されます。一方、グループ化とクラスタリングは、(startIndex
, docsRequested
)によって割り出された結果ウィンドウに基づいて実行されます。
id
: ノードのID。この値は、親ノードのパスを備えたフルパスを表します。
name
: ノードの名前。この名前は、実際にはノードのトピックです。
level
: トップ・ノードの1から開始されるクラスタ・ノード・レベル。
size
: このクラスタ・ノードの下(直接および間接)のドキュメント数。
leaf
: クラスタ・ノードにドキュメントのみが格納され、子クラスタ・ノードがない場合は「1」です。それ以外の場合は「0」です。
keywords
: クラスタ・ノード内のすべてのキーワードとフレーズ。
ノードが単純なノードの場合、ノード要素にはXMLテキスト要素のドキュメントIDが含まれます。XMLファイル内のドキュメントIDの書式は、docID.SES_InstanceID
です。ローカル・インスタンスからのドキュメントの場合は、SES_instance_ID
部分が省略されます。
<cluster> <nodeset> <node id="1" name="all" level="1" size="100" leaf="0" keywords="all"/> <node id="1.4" name="java" level="2" size="99" leaf="0" keywords="java"/> <node id="1.4.1" name="data warehousing" level="3" size="38" leaf="0" keywords="technologies bi,data warehousing,linux .net office php security service"/> <node id="1.4.1.1" name="tutorials blogs" level="4" size="12" leaf="1" keywords="tutorials blogs"> 2773.,8031.,109.,8033.,806.,26940.,817.,8024.,8030.,2862.,8032.,8028. </node> <node id="1.4.1.2" name="stored procedure" level="4" size="4" leaf="1" keywords="stored procedure"> 4239.,4243.,2784.,4335. </node> <node id="1.4.1.3" name="miscellaneous" level="4" size="22" leaf="1"> 4017.,2836.,8029.,2767.,1502.,113814.,11731.,1138.,392.,2819.,2763.,1421.,221.,705.,7739.,2838.,2749.,2351.,2802.,1158.,15751.,15747. </node> : </nodeset> </cluster>
クラスタ結果は、AJAXアプリケーションと統合するために、JSON形式で戻すことができます。JSON形式には、クラスタ結果のツリー構造が直接反映されます。各ノードには子配列があります。この配列は、そのノードの直下の子を表すノード・リストか、ノードがリーフ・ノードの場合はそのノード内のドキュメントを表すドキュメント配列です。子配列内のノードには、複数の子が含まれている場合があります。
次に、JSON出力のサンプルを示します。
{"nodeset": {"id":"1", "name":"all", "level":1, "size":100, "leaf":false, "keywords":"all", "children": [{"id":"1.4", "name":"java", "level":2, "size":99, "leaf":false, "keywords":"java", "children": [{"id":"1.4.1", "name":"data warehousing", "level":3, "size":38, "leaf":false, "keywords":"technologies bi,data warehousing,linux .net office php security service", "children": [{"id":"1.4.1.1", "name":"tutorials blogs", "level":4, "size":12, "leaf":true, "keywords":"tutorials blogs", "docs":["2773","8031","10","803","806","26940","817","8024","8030","2862","803","8028"] }, {"id":"1.4.1.2", "name":"stored procedure", "level":4, "size":4, "leaf":true, "keywords":"stored procedure", "docs":["4239","4243","2784","4335"]}] }] }, {"id":"1.5", "name":"miscellaneous", "level":2, "size":1, "leaf":true, "docs":["265915"] }] } }
上位N処理やクラスタリング用に取得する多数のドキュメントを構成し、さらにグループ化やソートに使用できる属性を制御するには、search.properties
ファイルを変更します。これらの設定は、デフォルトの問合せアプリケーションに影響を与えます。search.properties
ファイルは、$ORACLE_HOME/search/webapp/config
ディレクトリに格納されています。
デフォルト上位Nドキュメントの設定は、デフォルトで取得するドキュメント数を、結果をクラスタリング、グループ化およびソートするためのAJAXコールの一部として指定します。
ses.qapp.default_topn_docs=100
500ドキュメントなどの大規模な結果セットに目を通すために、ユーザーはデフォルトの上位N値を超える結果ページを表示できます。上位Nがデフォルトの100に設定されているときに、ユーザーは150〜160の結果を表示する必要があるとします。結果のクラスタリングとソート/グループ化を提供するには、ブラウザで160の結果を要求する必要があります。ユーザーが490〜500のページを表示する場合、ブラウザでは、AJAXコールを介して500の結果を要求することになります。これによりパフォーマンスが低下する可能性があります。
最大上位Nドキュメントの設定は、問合せアプリケーションが単一の結果ページのみで表示するしきい値以上の値を表します。
このモードでは、ソート、グループ化または結果のクラスタリングは提供されません。ただし、ユーザーは、コストのかかる後続の上位N結果を取得せずに、結果セット全体を表示できます。
max_topn_docs
が200に設定されていると仮定し、エンド・ユーザーが30〜40の結果を表示する場合、ブラウザではデフォルトの100の結果を取得することになります。ユーザーが170〜180の結果を表示する場合、ブラウザでは180のドキュメントを要求することになります。ユーザーが200を超える結果を表示する場合、問合せアプリケーションで表示されるのは、現行の結果のページのみです。次に例を示します。
ses.qapp.max_topn_docs=300
問合せページの「グループ化」および「ソート」ドロップダウン・リストで使用できる一連の属性は、search.properties
ファイルにも構成できます。グループ化に使用できる属性は、ses.qapp.groupable_attrs
プロパティ値を設定することで構成され、ソートに使用できる属性は、ses.qapp.sortable_attrs
プロパティ値を設定することで構成されます。
グループ化またはソート用のプロパティ値は、表示名と検索属性名が交互に並ぶカンマ区切りのリストです。
次の表に、デフォルトのグループ化属性を示します。
表8-2 グループ化属性
説明 | 属性名 | 表示 |
---|---|---|
グループ化なし |
|
(なし) |
ソース・グループ |
|
ソース |
最終変更日 |
|
日付 |
作成者 |
|
作成者 |
ファイル・フォーマット |
|
ファイル・フォーマット |
このデフォルトのグループ化セットに対するプロパティ値は、次のとおりです。
ses.qapp.groupable_attrs=ses_none,-,ses_sourceGroup,-,lastModifiedDate,-, author,-,mimetype,-
次の表に、デフォルトのソート属性を示します。
表8-3 ソート属性
説明 | 属性名 | 表示 |
---|---|---|
関連性 |
|
関連性 |
最終変更日 |
|
日付 |
作成者 |
|
作成者 |
ファイル・フォーマット |
|
ファイル・フォーマット |
ドキュメント・タイトル |
|
タイトル |
URL |
|
パス |
言語 |
|
言語 |
このデフォルトのソート・セットに対するプロパティ値は、次のとおりです。
ses.qapp.sortable_attrs=ses_score,-,lastModifiedDate,-,author,-, mimetype,-,title,-,infosource path,-,language,-
固定の表示名を指定するかわりに、検索属性の変換後の名前を表示で使用するには、表示名のかわりに、ダッシュ(-)を挿入します。たとえば、検索属性Test1に、管理ツールのグローバル設定ページで構成した変換済の名前がある場合は、次のように、変換された名前を表示用に使用します。
ses.qapp.sortable_attrs=ses_score,-,Test1,-,lastModifiedDate,-, ...
Oracle SESのデフォルトのランキングをカスタマイズして、自社にとって関連性の高い検索結果リストを作成できます。ランキングは、デフォルト属性とカスタム属性によって決まります。デフォルト属性には、タイトル、キーワード、説明などが含まれます。様々な重みは、ドキュメント検索に対する各属性の重要性を示しています。たとえば、Oracle SESでは、キーワードよりもタイトルに大きい重みが与えられます。
検索結果の検索をカスタマイズするには、問合せWebサービスAPIまたはranking.xml
を使用して、デフォルト属性の重みを調整するか、カスタム属性を追加して重みを設定します。
拡張検索のメソッドのシグネチャは、次のとおりです。
public OracleSearchResult doOracleAdvancedSearch (String query, Integer startIndex, Integer docsRequested, Boolean dupRemoved, Boolean dupMarked, DataGroup groups[], String queryLang, String docLang, Boolean returnCount, String filterConnector, Filter filters[], Integer[] fetchAttributes, String searchControls) throws Exception
パラメータsearchControls
は、filter
およびranking
要素を記載したXML文字列を受け入れます。
<searchControls> <filter> </filter> <ranking> </ranking> </searchControls>
この項のトピックは、次のとおりです。
属性検索のフィルタは、filter
要素で渡されます。属性に関する様々なANDおよびOR条件はすべてXMLで指定されます。次に例を示します。
<filter> <operator type="and"> <operator type="or"> <attributefilter name="xxx" type="string" operation="equals" value="ttt"/> <attributefilter name="yyy" type="number" operation="greaterthan" value="22"/> …. </operator> … <attributefiler name="aaa" type="number" operation="equals" value="22"/> …. </operator> </filter
パラメータsearchControls
がNULLの場合、拡張検索の作成にはfilters
およびfilterConnector
が使用されます。それ以外の場合、このパラメータは無視されます。
ランキングのXML文字列は、searchControls
内のranking
要素として表されます。次に、ranking
要素の例を示します。
<ranking> <global-settings> <enable-all-default-factor>TRUE</enable-all-default-factor> </global-settings> <default-factor> <!--default ranking factor -- > … </default-factor> <default-factor> <!--default ranking factor -- > … </default-factor> <custom-factor> <!--default ranking factor -- > … </custom-factor> <custom-factor> <!--default ranking factor -- > … </custom-factor> </ranking>
ランキングXML文字列の構成には、次のルールが適用されます。
ランキングXML全体をNULLにできます。その場合は、デフォルトのランキングが使用されます。
ランキングXMLにはdefault-factor
およびcustom-factor
の要素が含まれています。両方の要素を同時にNULLにしたり、省略することができます。
default-factor
がNULLまたは省略されていて、custom-factor
がNULLでない場合は、custom-factor
の効果でデフォルト・ランキングが使用されます。
custom-factor
がNULLまたは省略されている場合、ランキングへの影響はありません。
ランキング・スキームの適用対象は、空でない問合せパラメータを渡された関数doOracleAdvancedSearch
のコールのみです。
この項のトピックは、次のとおりです。
global-settings
要素には、ランキング・ファクタ全体のパラメータ設定が含まれます。次の2つのサブ要素があります。
enable-all-default-factor
ranking
要素には、enable-all-default-factor
と呼ばれる属性があります。この属性は、true
またはfalse
の2つの値を受け入れます(この属性が省略されている場合は、true
がデフォルト値として使用されます)。
enable-all-default-factor
がtrue
の場合は、default-factor
要素で一部のデフォルト属性が明示的に除外されていないかぎり、デフォルト属性のすべてがランキング問合せに挿入されます。
enable-all-default-factor
がfalse
の場合は、default-factor
要素で一部のデフォルト属性が明示的に挿入されていないかぎり、デフォルト属性のすべてがランキング問合せから除外されます。
<default-factor> <name>title</name> <weight>VERY HIGH</name> </default-factor>
デフォルト・ファクタ(属性)名は大/小文字が区別されません。
default-factor
がランキングXML文字列にない場合は、このランキング・ファクタがデフォルトの重みとみなされます(デフォルト・ファクタがenable-all-default-factor
で無効化されていない場合)。
Oracle SESでサポートする重み要素の値は、empty(この場合はデフォルトの重みが使用されます)、none(この属性はランキング問合せでは使用されません)、very high、high、medium、lowおよびvery lowです。
次の表に、default-factor
の名前と重みを示します。
custom-factor
要素を使用すると、ランキングの属性をさらに追加できます。索引付けされた検索属性をカスタム・ランキング属性にできます。
注意: 検索ランキングにカスタム属性を追加すると、検索のパフォーマンスが低下する可能性があります。 |
custom-factor
要素には、attribute-name
、attribute-type
、factor-type
およびweight
(またはfactor-type
によってはmatch
)の4つの要素があります。
<custom-factor> <attribute-name>author manager</attribute-name> <attribute-type>STRING</attribute-type> <factor-type>QUERY_FACTOR</factor-type> <weight>LOW</weight> </custom-factor>
または
<custom-factor> <attribute-name>document quality</attribute-name> <attribute-type>STRING</attribute-type> <factor-type>STATIC_FACTOR<factor-type> <match> <value>good</value> <weight>HIGH</weight> </match> <match> <value>fair</value> <weight>MEDIUM</weight> </match> <match> <value>bad</value> <weight>VERY LOW</weight> </match> </custom-factor>
attribute-name
値は、Oracle SESの属性名と1語ずつ照合されます。索引付けされた検索属性名は、attribute-name
の値にできます。attribute-name
要素の値は、大/小文字が区別されません。
attribute-type
要素は、属性のタイプを定義します。サポートされるのは、String型の属性のみです。attribute-nameとattribute-typeを組み合せて、有効なOracle SES属性を定義します。
factor-type
では、カスタム・ランキング属性に対して2つのランキング・タイプがサポートされます。
QUERY_FACTOR
: 属性値が問合せ条件と照合されます。一致すると、指定の重みに基づいてドキュメントが追加されます。QUERY_FACTOR
は、titleやreftextなどの問合せベースのランキング・ファクタです。このカスタム・ランキング・ファクタの場合は、weight
要素が必要です。たとえば、「Tiger Woods」という問合せでは、ドキュメントに「Tiger Woods」という値のカスタム属性パブリッシャがある場合は、これが検索されます。
STATIC_FACTOR
: 属性値が、カスタム・ランキング・ファクタに指定されている固定値と照合されます(このカスタム・ランキング・ファクタの場合は、match
要素が必要です)。STATIC_FACTOR
は、問合せベースのランキング・ファクタではありません。固定値は、ドキュメントの品質(linkscoreなど)とドキュメントのソースを指定します。たとえば、品質に基づいてドキュメントが分類されたと仮定します。適切に記述されたドキュメントは「good」に分類され、記述が不十分なドキュメントは「bad」に分類されています。問合せに対しては両方が照合されますが、「good」のドキュメントは「bad」のドキュメントより高いランキングに設定する必要があります。このAPIでは、「good」品質のドキュメントに指定の重みを検索で追加するように指定できます。
factor-type
がSTATIC_FACTOR
の場合は、match
要素によって、照合値および対応する照合加重が指定されます。次のXML文字列は、match
要素の例です。
<match> <value>bad</value> <weight>VERY LOW</weight> </match>
value
要素は、このランキング・ファクタの対応する属性値の照合に使用されます。属性値に使用できるのは、英数字のみです。照合では大/小文字は区別されません。
weight
要素の構文は、デフォルトのランキング要素のweight
要素の構文と同じです。
XMLランキング・テキストは、2つの場所に適用できます。
searchControls
要素の一部としてのランキング・ファクタは、Webサービス・メソッドを使用した各問合せ実行に対する高度な制御として使用できます。これは、問合せ単位のランキング制御と呼ばれます。
OC4Jの起動の都度、$ORACLE_HOME/search/webapp/config
ディレクトリの個別の構成ファイルranking.xml
として、構成ファイルが読み取られて適用されます。構成ファイルに指定されているランキング・ファクタは、すべての問合せに適用されます。これは、インスタンス全体のランキング制御と呼ばれます。
フェデレーテッド検索では、インスタンス全体のランキング制御は単一のインスタンスにのみ適用されます。ランキングを個別にカスタマイズするには、各インスタンスを構成する必要があります。
競合が発生した場合は、Webサービス・メソッドに指定されている問合せ単位のランキング制御によって、インスタンス全体のランキング制御に指定されている設定が上書きされます。次のようなケースがあります。
問合せ単位のランキング制御とインスタンス全体のランキング制御が同じファクタを指定した場合、Oracle SESでは、問合せ単位のランキング制御によって設定されたファクタが採用されます。
インスタンス全体のランキング制御ではランキング・ファクタを設定し、問合せ単位のランキング制御では設定していない場合、 Oracle SESでは、インスタンス全体のランキング制御によって設定されたファクタが採用されます。
問合せ単位のランキング制御ではランキング・ファクタを設定し、インスタンス全体のランキング制御では設定していない場合、 Oracle SESでは、問合せ単位のランキング制御によって設定されたファクタが採用されます。
インスタンス全体のランキング制御ではenable-all-default-factor
をfalseに設定し、問合せ単位のランキング制御ではenable-all-default-factor
をtrueに設定した場合、Oracle SESでは、インスタンス全体のランキング制御によって明示的に設定されたデフォルトの属性に、問合せ単位のランキング制御によって設定された属性を加えた属性が採用され、インスタンス全体のランキング制御が問合せ単位のランキング制御で上書きされます。
グローバル設定 - 構成データのバックアップとリカバリ・ページでは、ハードウェア障害後に構成設定のリカバリに使用できるメタデータをバックアップします。ソースを作成または編集するなど、構成データを変更した場合は、バックアップを実行してください。
バックアップを実行すると、Oracle SESではデータがバイナリ・ファイルmetaData.bkp
にコピーされます。このファイルの位置は、グローバル設定 - 構成データのバックアップとリカバリ・ページに表示されます。バックアップが正常終了した場合は、このファイルを他のホストにコピーする必要があります。
インストールが正常終了した時点で、metaData.bkp
ファイルを管理ツールに表示される位置にコピーします。検索結果を表示するには、ソースを再クロールする必要があります。
バックアップおよびリカバリには、次のような注意事項があります。
バックアップを実行する前に、実行中のスケジュールをすべて停止する必要があります。
リカバリは、バックアップしたOracle SESと同じバージョンの新規インストールに対して実行する必要があります。
リカバリ後に、セキュア検索を再度有効化する必要はありません。バックアップ・インスタンスでセキュア検索が有効化されている場合は、リカバリ後に、アイデンティティ・プラグインを再登録したり、再度有効化する必要はありません。アイデンティティ・プラグインは、再度有効化する必要も、再登録する必要もありません。インスタンスがバックアップされたときにプラグインが有効になっていた場合は、リカバリされたインスタンスでは、同じプラグインが同じパラメータを使用して有効化されます。
ファイル・ソースまたは表ソースがOracle SESを実行中のコンピュータにある場合、およびリカバリに異なるコンピュータを使用する場合は、ソースの作成時に(localhostではなく)実際のホスト名を使用する必要があります。
データベース表ソースの場合は、リモート表が存在することを確認します。
ファイル・ソースの場合は、リカバリ後にファイルとパスが有効であることを確認します。
リカバリ時には、既存のメーリング・リスト・ソースおよび電子メール・ソースのメール・アーカイブ・ディレクトリ設定が変更されます。リカバリ後の場所は<cache-dir>/mail
で、新規の電子メール・ソースとメーリング・リスト・ソースのデフォルトです。リカバリ前にカスタマイズしていたディレクトリ位置は失われます。
新しい位置でインスタンスをリカバリする場合、ストップワード・ディレクトリは絶対パスであるため、これを更新して新しい位置を反映させる必要があります。 ストップワード・ディレクトリの詳細は、「トピック・クラスタリング」を参照してください。
コールド・バックアップを停止時間を最短化する予防措置として実行すると、Oracle SES索引の実クロール・データをバックアップできます。
コールド・バックアップを実行する手順は、次のとおりです。
Oracle SESインスタンスをシャットダウンします。
% $ORACLE_HOME/search/bin/searchctl stopall
Oracleのデータ格納場所にあるデータ・ファイルすべてをコピーします。
この場所は、Oracle SESのインストール時に指定した場所です。データの格納場所が/mnt1/oracle/ses/oradata
の場合は、そのディレクトリの下にあるすべてのファイルをコピーします。複数のコピー方法があります。たとえば、zipコマンドを使用できます。
% cd /mnt1/oracle/ses/ % zip -r oradata.zip oradata
(オプション)キャッシュ・ファイルをバックアップします。
キャッシュ・ファイルを確保しておくと、ユーザーは、結果リストの「キャッシュ」リンクをクリックできます(キャッシュ・ファイルは、多くのディスク領域を占有する可能性があります)。
キャッシュ・ディレクトリの位置は、グローバル設定 - 問合せ構成ページにリストされます。たとえば、キャッシュ・ディレクトリが/mnt1/oracle/ses/cache
の場合は、次のコマンドを実行します。
% cd /mnt1/oracle/ses % zip -r cache.zip cache
バックアップ・ファイルを安全な場所に配置します。
コールド・バックアップからファイルをリカバリする手順は、次のとおりです。
Oracle SESインスタンスをシャットダウンします。
% $ORACLE_HOME/search/bin/searchctl stopall
すべてのバックアップ・ファイルをリストアします。すべてのバックアップ・ファイルを同じ場所に配置します。
Oracle SESインスタンスを起動します。
% $ORACLE_HOME/search/bin/searchctl startall
各ソースには独自のドキュメント属性セットがあります。ドキュメント属性では、メタデータと同様に、ドキュメントのプロパティが記述されます。クローラは値を取得し、それを検索属性の1つにマップします。このマッピングにより、ユーザーは属性に基づいてドキュメントを検索できます。ソースをクロールした後に、そのソースの属性を参照できます。ドキュメント属性情報の取得方法は、ソース・タイプに応じて異なります。この項では、Oracle SESの各ソース・タイプの属性をリストします。
関連項目:
|
表およびデータベース・ソース・タイプには、事前定義の属性はありません。クローラは、ソース作成時に定義された列から属性を収集します。Oracle SES管理者は、列を検索属性にマップする必要があります。
Oracle E-Business SuiteおよびSiebelのソース・タイプの場合、属性はユーザーによって指定されます。Oracle E-Business Suite 11iおよびSiebel 7.8のソース・タイプの属性は、ソースの作成時に問合せで指定されます。Oracle E-Business Suite 12およびSiebel 8のソース・タイプの属性は、XMLデータ・フィードで指定されます (つまり、自分のXMLデータ・フィードで属性を指定できます)。
多くのソース・タイプの場合(OracleAS Portal、電子メール、NTFS、Microsoft Exchangeソースなど)、クローラはターゲット・システムが提供する主要属性を選択します。次の各項で主要属性のリストを示します。
注意: その他のすべてのソース(Documentum eRoomまたはLotus Notesなど)については、ホーム - ソース - ユーザー定義ソースのカスタマイズ・ページに「属性リスト」パラメータがあります。ユーザーが入力した属性はクローラによって収集され、検索で使用できます。 |
システム定義の検索属性もあります。 「システム定義の検索属性」を参照してください。
Title
Author
Description
Host
Keywords
Language
LastModifiedDate
Mimetype
Subject: これはDescriptionにマップされます。HTMLファイルにdescriptionメタ・タグがない場合は無視されます。
Headline1: 最上位のHタグ・テキスト。たとえば、ページにH1タグがない場合、<H2>Annual Report</H2>の「Annual Report」が該当します。
Headline2: 上位から2番目のHタグ・テキスト。
Reference Text: このページを指す別のWebページからのアンカー・テキスト。
追加のHTMLメタ・タグを定義して、ホーム - ソース - メタ・タグのマッピング・ページで文字列属性にマップできます。
Title
Author
Description
Host
Keywords
Language
LastModifiedDate
Mimetype
Subject
author
title
subject
language
lastmodifieddate
表8-5 OracleAS Portalソース属性
属性 | 説明 |
---|---|
createdate |
ドキュメントが作成された日付。 |
creator |
ドキュメントを作成した個人のユーザー名。 |
author |
ユーザーが編集可能なフィールド。作成者のフルネームまたは任意の内容を指定できます。 |
page_path |
ポータル・ツリー内のポータル・ページ/アイテムの階層パス(ページ・タイトルを含む)。 |
portal_path |
参照および境界ルールに使用される、ポータル・ツリー内のポータル・ページ/アイテムの階層パス(ページ・タイトルを含む)。 OracleAS Portal 10.1.2を検索すると、参照には、portal_pathが大文字で表示されます。OracleAS Portal 10.1.4を検索すると、portal_pathは小文字で表示されます。 |
title |
ドキュメントのタイトル。 |
description |
ドキュメントの簡潔な説明。 |
keywords |
ドキュメントのキーワード。 |
expiredate |
ドキュメントの失効日。 |
host |
ポータルのホスト。 |
infosource |
ブラウザ階層内でのポータル・ページのパス。 |
language |
ポータルのページまたはアイテムの言語。 |
lastmodifieddate |
ドキュメントの最終変更日。 |
mimetype |
ポータルの場合、通常はtext/htmlです。 |
perspectives |
INTERNAL ONLY、REVIEWED、DESIGN SPECなど、ページまたはアイテムに適用可能なユーザー作成のマーカー。たとえば、レシピが表示されるポータルには、「朝食」、「お茶」、「ナッツ入り」、「ヘルシー」などレシピの特徴を表すアイテムが含まれ、1つのアイテムに複数の特徴を割り当てることができます。 |
wwsbr_name_ |
ポータルのページまたはアイテムの内部名。 |
wwsbr_charset_ |
ポータルのページまたはアイテムのキャラクタ・セット。 |
wwsbr_category_ |
ポータルのページまたはアイテムのカテゴリ。 |
wwsbr_updatedate_ |
ポータルのページまたはアイテムが最後に更新された日付。 |
wwsbr_updator_ |
ページまたはアイテムを最後に更新した個人。 |
wwsbr_subtype_ |
ポータルのページまたはアイテムのサブタイプ(例: コンテナ)。 |
wwsbr_itemtype_ |
ポータル・アイテム・タイプ。 |
wwsbr_mime_type_ |
ポータルのページまたはアイテムのMIMEタイプ。 |
wwsbr_publishdate_ |
ポータルのページまたはアイテムが公開された日付。 |
wwsbr_version_number_ |
ポータル・アイテムのバージョン番号。 |
ReceivedTime
From
To
CC
Subject
Lastmodifieddate
ACLS_
FILEDATE
Host
Language
LastModifiedDate
Mimetype
Title
Description
Priority
Status
start date
end date
event Type
Author
Created Date
Title
Location
Dial_info
ConferenceID
ConferenceKey
Duration
AUTHOR
CREATE_DATE
DESCRIPTION
FILE_NAME
LASTMODIFIEDDATE
LAST_MODIFIED_BY
TITLE
ACL_CHECKSUM: ドキュメントに対して発行されたACLについて計算されるチェックサム。
DOCUMENT_LANGUAGE: Oracle Content Database言語文字列から取得されるOracle SES言語コード。たとえば、Oracle Content Databaseで「American」を使用する場合、Oracle SESでは「en-us」として発行します。
DOCUMENT_CHARACTER_SET: Oracle Content Databaseドキュメントのキャラクタ・セット。
MIMETYPE
Oracle SESでは、Oracle Content Databaseでユーザーが作成したカテゴリまたはカスタマイズ属性も検索できます。
カテゴリはファイルおよびリンクに適用できます。カテゴリはサブカテゴリに分割でき、1つ以上の属性を割り当てることができます。Oracle Content Databaseのドキュメントをカテゴリに添付すると、カテゴリの属性を検索できます(属性が検索属性リストに表示されます)。
たとえば、testAttr1とtestAttr2という属性を持つtestCategoryというカテゴリを作成するとします。ドキュメントXを作成してtestCategoryに割り当てます。testCategoryの属性には値を割り当てる必要があります。クロール後に、testAttr1とtestAttr2が検索属性リストに表示されます。
カスタマイズ属性値には次の型があります。String、Integer、Long、Double、Boolean、Date、User、Enumerated String、Enumerated IntegerおよびEnumerated Long。
索引でのLong、Double、Integer、Enumerated IntegerおよびEnumerated Long型のカスタマイズ属性は、Oracle SESではNumber型の属性(表示名に_N接尾辞が付きます)になります。
索引でのDateカスタマイズ属性は、Oracle SESではDate型の属性(接尾辞は_D)になります。
索引でのString、String EnumerationおよびUserカスタマイズ属性は、Oracle SESではString型の属性になります。
制限事項
Oracle Content Database SDKはOracle Content Database Web GUIより機能が豊富です。Web GUIでは文字列の配列をサポートしていませんが、SDKではサポートしています。SDKを使用して、文字列の配列型をサポートするカスタマイズされた管理およびユーザーGUIを構築する場合は、1つのカスタマイズ属性に複数の属性値を割り当てることができます。
Oracle Content Databaseのドキュメントがカテゴリに添付され、そのカテゴリの属性を空白のままにすると、ユーザーがOracle SESで(拡張検索を使用して)検索を実行するとき、その属性はリストに表示されません。
たとえば、3つの属性を持つtestCategoryを作成するとします。ドキュメントを作成してこのテスト・カテゴリに割り当てます。testCategoryの属性に値を割り当てます。テストのために、1つの属性に「test」という値を割り当て、他の属性は空白のままにします。クロール後に検索すると、値「test」を割り当てた属性がリストに表示されます。しかし、空白のままにした属性はリストに表示されません。属性の値がNULLの場合、クローラはその属性をスキップします。ただし、別のドキュメントに、値が割り当てられている同じ属性がある場合、そのドキュメントは索引付けされます。
Urldepth
およびInfosource Path
という2つのシステム定義の検索属性があります。
Urldepth
は、ルート・ディレクトリからのレベル数を示します。 この値はURL文字列から導出されます。 一般に、この深さはスラッシュの数であり、ホスト名の直後のスラッシュおよび最後のスラッシュはカウントされません。 ホーム・ページにはマイナス2の調整が行われます。 動的ページ(例: 次の表でURLに疑問符が含まれるサンプル)にはプラス1の調整が行われます。
次の表に、いくつかのサンプルURLのUrldepth
を示します。
URL | Urldepth |
---|---|
http://my.company.com/portal/page/myo/Employee_Portal/MyCompany | 4 |
http://my.company.com/portal/page/myo/Employee_Portal/MyCompany/ | 4 |
http://my.company.com/portal/page/myo/Employee_Portal/MyCompany.htm | 4 |
http://us.rd.foo.com/finance/finhome/topstories/wall_street.html?.v=46 | 4 |
http://my.company.com/portal/page/myo/Employee_Portal/home.htm | 2 |
Urldepth
は、URLの深さの値が小さいURLの方が重要であるという発見的方法に基づいて関連性ランキングの計算を行うために、内部で使用されます。
Infosource Path
は、ドキュメントのソースを表すパスです。 これは内部属性です。 この属性は、ドキュメントをソースで参照できるという場合に使用されます。 Infosource Path
は、一般的にURL文字列から導出されます。 たとえば、Urldepth
に指定されたURLでは、Infosource Path
は次のようになります。
portal/page/myo/Employee_Portal
ドキュメントがコネクタを介して送信される場合、この値はDocumentMetadata.setSourceHierarchy()
APIを使用して明示的に設定できます。
この項のトピックは、次のとおりです。
表ソース・タイプとデータベース・ソース・タイプは類似しており、両方ともデータベース表をクロールします。
この項のトピックは、次のとおりです。
この項では、表ソース・タイプとデータベース・ソース・タイプのメリットと制限事項について説明します。
注意: パフォーマンスの理由から、両方のソース・タイプとも KEY 列が索引で補足されていることが必要です。 |
Oracle以外のデータベースを表ソースとしてクロールするには、Oracle以外の表にOracleデータベース内のビューを作成する必要があります。次に、Oracleビューに表ソースを作成します。Oracle SESでは、データベース・リンクを使用してデータベースにアクセスします。
表ソースごとに指定できる表またはビューは1つのみです。複数の表またはビューのデータが必要な場合は、最初に必要なデータをすべて含む単一ビューを作成します。
表の列のマッピングをLOB列に適用できません。
表ソースについてサポートされるデータ型は、BLOB
、CLOB
、CHAR
、VARCHAR
、VARCHAR2
です。
コンテンツ列にデータ型CLOBまたはBLOBが含まれ、ビューから選択するとORA-01445
エラーが発生する場合は、そのビューに基づいて表ソースを作成すると同じエラーが発生します。
データベース・ソースには柔軟性があります。データベース・ソース・タイプはJDBCに基づいて構築されているため、JDBC対応のすべてのデータベースをクロールできます。
データベース・ソースでは、結合条件を使用するSQL問合せがサポートされ、ビューの作成は不要です。データベースによっては、オブジェクトの作成ができない場合があります。
データベース・ソースでは、ATTACHMENT_LINK
列に格納されているURLが指すコンテンツのクロールがサポートされます。
データベース・ソースでは、情報ソース・パス階層およびMIMEタイプがサポートされます。
データベース・ソースでは、追加のセキュリティが提供されます。データベース・ソースでは、行レベルでセキュリティが提供されます。データベース・ソースでは、表ソースでは使用できない3番目のセキュリティ・オプション「ソース別に提供されるACL」が提供されます。
データベース・オブジェクト名は、引用識別子を使用して表すことができます。引用識別子は大/小文字が区別され、最初と最後を二重引用符(")で囲みます。データベース・オブジェクト名を引用識別子を使用して表す場合、そのオブジェクトを参照する際は、常に二重引用符および同じ大/小文字を使用する必要があります。
表ソースをOracle SESで作成するとき、表名が引用識別子("1 (Table)"など)の場合、「表名」フィールドには、同じ大/小文字と二重引用符を使用して"1 (Table)"と入力します。同様に、主キー列またはコンテンツ列の名前に引用識別子を使用する場合は、二重引用符を使用して、データベースに表示されているとおりに正確にその名前を入力します。
関連項目: スキーマ・オブジェクトの名前と修飾子の詳細は、『Oracle Database SQLリファレンス』(Oracle Technology Networkから入手可能)を参照してください。 |
マルチバイト環境でファイル・ソースを正常にクロールして表示するには、Oracle SESサーバーを起動するコンピュータのロケールをターゲット・ファイル・システムと同じにする必要があります。これにより、Oracle SESクローラはマルチバイトのファイルとパスを認識できます。
インストール環境のロケールが異なる場合は、適切なロケールが設定されている環境からOracle SESを再インストールする必要があります。たとえば、韓国語環境の場合は、LC_ALL
をko_KR
に設定するか、またはLC_LANG
とLANG
の両方をko_KR.KSC5601
に設定します。次に、Windowsではコマンド・プロンプトから、UNIXではxtermから、searchctl restartall
を実行して、Oracle SESを再起動します。
UNIXでファイル・ソースをクロールする場合、クローラはシンボリック・リンクを実際のディレクトリ・パスに解決し、そのパスに対して境界ルールを規定します。たとえば、ディレクトリ/tmp/A
にB
およびC
という2つの子があり、C
が/tmp2/beta
へのリンクであるとします。クロールのURLは次のようになります。
/tmp/A
/tmp/A/B
/tmp2/beta
/tmp/A/C
包含ルールが/tmp/A
の場合、/tmp2/beta
は除外されます。シードURLはそのまま処理されます。
ファイルの取得で、Oracle SESを通過せずにファイルURLをそのまま使用する場合は、URLに含まれる「file」を大文字の「FILE」にする必要があります。たとえば、FILE://localhost/...
とします。
そのまま使用すると、ユーザーがドキュメントの検索リンクをクリックした場合に、ブラウザはクライアント・コンピュータ上で指定のファイルURLを使用してファイルを取得しようとします。Oracle SESで「FILE」ではなく「file」を使用した場合は、このファイルURLがサーバー・コンピュータ上で使用され、HTTPを介してドキュメントがクライアント・コンピュータに送信されます。
ファイルがネットワーク・ドライブからクロールされる場合は、ドライブへのアクセスを許可されているユーザーとしてOracleプロセスを再起動します。
Oracle SESクローラは、IMAP4に準拠しています。メーリング・リスト・ソースをクロールするには、IMAP電子メール・アカウントが必要です。Oracle SESでメーリング・リストのメッセージをクロールする目的でのみ使用される電子メール・アカウントを作成することをお薦めします。クローラは、すべてのメーリング・リスト・ソースに対して1つのIMAPアカウントをクロールするように構成されています。したがって、クロールされるメーリング・リストのメッセージはすべて、このページで指定される電子メール・アカウントの受信トレイに入っている必要があります。この電子メール・アカウントは、すべてのメーリング・リストにサブスクライブされる必要があります。すべてのメーリング・リストの新規ポストがこの単一のアカウントに送信され、その後クロールされます。
メッセージは、グローバル・メーリング・リストの電子メール・アカウントから削除されても、Oracle SESの索引からは削除されません。実際には、メーリング・リストのクローラ自体が、クロール時にIMAP電子メール・アカウントからメッセージを削除します。メーリング・リスト用のIMAPアカウントが次にクロールされるときには、以前のメッセージはありません。このアカウントに新しいメッセージがあれば、それらが索引に追加されます(また、その結果として、このアカウントから削除されます。)これにより、グローバル・メーリング・リストのIMAPアカウントは常にクリーンな状態に保たれます。Oracle SESの索引は、メーリング・リストのメッセージすべての完全なアーカイブとして機能します。
URLアイテムについては、URL境界ルールは適用されません。URLアイテムとは、OracleAS Portalサーバーに存在するメタデータのことです。Oracle SESは、表示URLにも、URLアイテムの境界ルールにも関与しません。
portal_path
属性は、境界ルールの比較に使用されます。Portalのページおよびアイテムは、ツリー構造に編成されます。ページが挿入または除外されると、そのノードで始まるサブツリー全体が挿入または削除されます。
OracleAS Portalのユーザー権限が変更されると、クローラが収集するコンテンツが適切に認可されない可能性があります。たとえば、ポータルのクロール時に、ホーム - ソース - 認証ページで指定したユーザーに、特定のポータル・ページを参照する権限がない場合があります。ただし、ユーザーに権限を付与しても、後続の増分クロールではクローラはコンテンツを選択しません。同様に、ユーザーから権限を取り消した場合でも、クローラがコンテンツを選択する可能性があります。
ユーザーの権限が変更されるたびにOracle SESで正しいドキュメント・セットが選択されるようにするには、ホーム - スケジュール - スケジュールの編集ページで、クローラの再クロール・ポリシーを「全ドキュメントの処理」に更新し、クローラを再起動します。
Oracle SESのcrawler.dat
ファイルには、OracleAS Portalソースのスマート増分クロールを有効にするためのオプションが用意されています。このオプションを有効にすると、変更されたページやアイテムのリストをOracleAS Portalから直接取得することによって、再クロールがより効率的になります。
プラグインでクローラにファイルURLを戻す場合は、ファイルURLを完全修飾する必要があります。たとえば、file://localhost/
とします。
ファイルの取得で、Oracle SESを通過せずにファイルURLをそのまま使用する場合は、URLに含まれる「file」を大文字の「FILE」にする必要があります。たとえば、FILE://localhost/...
とします。
Oracle SESフェデレータは、フェデレータ構成(フェデレーテッド・ソースなど、フェデレーション関連のすべてのパラメータ)をキャッシュします。結果として、この構成が変更されると、5分以内にその変更が有効になります。
グローバル設定 -プロキシ設定ページでプロキシ設定を入力する場合は、必ずフェデレーテッド・ソースのWebサービスURLをプロキシ例外として追加してください。
フェデレーション・エンドポイント・インスタンスがセキュア・モード3(セキュアなコンテンツおよびパブリック・コンテンツを検索するためにはログインを要求)に設定されている場合は、すべてのドキュメントが(ACLでスタンプされているものも、スタンプされていないものも)セキュアとなります。セキュア・フェデレーテッド検索を実行するには、フェデレーション・エンドポイント・インスタンス内で信頼できるエンティティを作成し、作成した信頼できるエンティティのユーザー名とパスワードを使用して、フェデレーテッド・ソースを編集します。
BIG-IPシステムを次のように構成すると、一貫性の問題が発生する場合があります。
BIG-IPロード・バランサの内側に、単一の論理Oracle SESインスタンスとして機能するように2つのOracle SESインスタンスを同様に(同じクロール、同じソースなど)構成した場合。
それぞれのインスタンスのフロントエンドとなり、両方ともBIG-IPの内側にあるOracle HTTP ServerとOracleAS Web Cacheとともに、別の2つのOracle SESインスタンスを同様に構成した場合。それぞれの2つのインスタンスは論理Oracle SESインスタンスに連携しています。Web Cacheは2つのノード間にクラスタ化されて、ブローカ・インスタンスと呼ばれる単一の論理Oracle SESインスタンスとして機能しています。
ユーザーがブローカOracle SESインスタンスで検索を実行し、結果に表示されたドキュメントにアクセスしようとすると、毎回のアクセス先のドキュメントが一貫しない場合があります。回避策として、ロード・バランサがすべてのリクエストを1つのユーザー・セッション内で毎回同じノードに送信することを確認してください。
フェデレーション・エンドポイント上に存在するキャッシュされたドキュメントをOracle SESフェデレーション・ブローカ・インスタンスに表示する場合、200KBというサイズ制限があります。
情報ソースを参照する際に、1つのソース・グループにあるローカル・ソースとフェデレーテッド・ソースの両方について、ソース階層が同じトップレベル・フォルダで始まる場合、参照ページでその2つの階層を識別するために、フェデレーテッド・ソースに属するフォルダ名にシーケンス番号が追加されます。
フェデレーテッド情報ソースを参照する際に、フェデレーテッド・ソースを、明示的に作成されたソース・グループの下に配置する必要があります。
Oracle SESフェデレーション・ブローカでは、次のソース・タイプの検索結果リスト内の表示URLを介してフェデレーション・エンドポイント上のドキュメントに直接アクセスできません。
ファイル(ローカル・ファイル、非UNC)
表
電子メール
メーリング・リスト
これらのソース・タイプについて、アクセスできるのはドキュメントのキャッシュ・バージョンのみです。
Webクロール・ポリシーは、組織の他のほとんどのイントラネット・サイトへのリンクを含む既知のサイトを少数のみ識別する程度に単純化できます。このポリシーは、これらのサイトを索引付けせずにクロールすることでテストできます。初期クロール後は、イントラネットに存在するホストを使用することをお薦めします。その後、個別サイトでのクロールと索引付けが容易になるように、Webソースを個別に定義できます。
ただし、組織のイントラネットやインターネットを検出およびクロールするプロセスは通常は対話形式で、クロール結果を定期的に分析してクロール・パラメータを変更するという特性があります。たとえば、クローラが1つのWebホストのクロールに数日かかっていることが判明した場合は、そのホストでのクロールを除外してクロールの深さを制限できます。
この項では、クロール・パフォーマンス改善のための一般的な考慮事項について説明します。
スケジュールにより、各ソースの情報でOracle SES索引を更新する頻度を定義します。この項では、Oracle SESクローラ・スケジュールの特性について説明します。
ホーム - 一般ページの「失敗したスケジュール」セクションには、失敗したすべてのスケジュールがリストされます。失敗したスケジュールとは、クローラで、索引付けエラーやソース固有のログイン・エラーなどの致命的なエラーが発生し、先の処理に進むことができなかったスケジュールです。ドキュメントの一部が収集され索引付けされた結果、スケジュールに失敗することがあります。
スケジュール間隔の最小粒度は1時間です。たとえば、スケジュールを午前1:30に開始することはできません。
クロールの終了までに時間がかかり、スケジュールされた間隔に入った場合は、現在のクロールが終了すると同時にスケジュールが開始されます。現在、スケジュールされた時間を次のスケジュール時間に自動的に移動するオプションはありません。
複数のソースが1つのスケジュールに割り当てられた場合、ソースは、スケジュールに割り当てられた順序で1つずつクロールされます。
スケジュールは、割り当てられたソースのクロールを指定された順序で開始します。1つのスケジュールでは、常に1つのソースのみがクロールされます。ソース・クロールに失敗した場合、それ以降に割り当てられている残りのソースはクロールされません。スケジュールは再起動されません。失敗の原因を解決してスケジュールを再開するか、失敗したソースをスケジュールから削除する必要があります。
スケジュールの成功または失敗は、電子メールで自動的に通知されません。
デフォルトでは、Oracle SESはイントラネット内のWebサイトをクロールするように構成されます。つまり、内部Webサイトをクロールする場合、追加構成は不要です。ただし、Oracle SESでインターネット上のWebサイト(外部Webサイト)をクロールするには、HTTPプロキシ・サーバー情報が必要です。これは、グローバル設定 - プロキシ設定ページで設定します(プロキシに認証が必要な場合は、グローバル設定 - 認証ページにプロキシ認証情報を入力します)。
プロキシ・サーバーを設定する場合は、内部Webサイトがプロキシ・サーバーを経由しないようにする必要があるため、プロキシ・ドメイン例外を指定します。プロキシを経由しないようにするホスト名の接尾辞を例外フィールドに入力します。ドメイン全体を除外するには、httpを付けずに*で開始して、ホスト名の接尾辞を使用します(例: *.us.example.com、*.example.com)。*.接尾辞のない入力は、単一のホストとみなされます。IPアドレスは、クロールされたURLがホスト名のIPにも指定される場合にのみ使用できます。つまり、双方で矛盾しないことが必要です。
ソースの作成時に入力したシードURLは包含ルールになります。たとえば、www.example.comがシードURLの場合、Oracle SESでは文字列www.example.comを含むURLのみがクロールされるように包含ルールが作成されます。
ただし、Webサイトexampleにwww.exa-mple.comで始まるURLまたはexa-mple.com(wwwなし)で始まるURLがあるとします。多くのページでは、サイト名に接頭辞が付いています。たとえば、サイトのinvestorセクションにはinvestor.example.comで始まるURLがあります。
必ずクロール前に包含ルールをチェックし、クロール後にログをチェックして除外されたパターンを確認してください。
この場合、包含ルールにはwww.example.com、www.exa-mple.comおよびinvestor.example.comを追加できます。または、exampleのみを追加することもできます。
シード・サイトの外部でクロールするには(たとえば、text.us.oracle.comをクロールしていて、text.us.oracle.comの外部からoracle.comへのリンクをたどる場合)、包含ルールをすべて削除することを検討します。削除は慎重に行ってください。削除すると、クローラが膨大なサイトをクロールする可能性があります。
ファイル・ソースの場合、境界ルールを指定しなければ、クロールは基礎となるファイル・システムのアクセス権限に限定されます。指定したシード・ファイルURLからアクセス可能なファイルは、デフォルトのクロールの深さに従ってクロールされます。深さのデフォルトは2で、グローバル設定 - クローラ構成ページで設定します。たとえば、シードがfile://localhost/home/user_a/
の場合、クロールではアクセス権限を持つuser_a
の下にあるファイルとディレクトリがすべて選択されます。クロールの深さの制限により、ディレクトリ/home/user_a/level1
のドキュメントはすべてクロールされます。/home/user_a/level1/level2
ディレクトリにあるドキュメントはレベル3です。
ファイルURLにはUNC(汎用命名規則)形式を使用できます。UNCファイルURLの書式は、file://localhost///<LocalComputerName>/<SharedFolderName>
です。
たとえば、¥¥stcisfcr¥docs¥spec.htm
はfile://localhost///stcisfcr/docs/spec.htm
として指定する必要があります。
一部のコンピュータでは、パス名やファイル名に非ASCII文字やマルチバイト・キャラクタが含まれる場合があります。URLは常にASCIIキャラクタ・セットで表されます。非ASCII文字は、UTF-8エンコーディングの16進表現で表されます。たとえば、空白は%20としてエンコードされ、マルチバイト・キャラクタは%E3%81%82などのようにエンコードされます。
ファイル・ソースの場合、空白を単純な(正規表現でない)境界ルールに入力できます。Oracle SESでは、これらのURL境界ルールが自動的にエンコードされます。(Home Alone)を指定すると、内部的には(Home%20Alone)として格納されます。このエンコーディングは次の情報に対して実行されます。
ファイル・ソースの単純な境界ルール
テストURL文字列
ファイル・ソースのシードURL
注意: Oracle SESでは、正規表現ルールは変更されません。管理者は、指定された正規表現ルールをエンコーディングされたファイルURLと対照させて確認する必要があります。正規表現ルールには、空白を挿入できません。 |
動的ページの索引付けにより、必要以上に多数のURLが生成されることがあります。ターゲットWebサイトから数ページを手動で移動して、ページを重複してクロールするのを避けるために設定する必要のある境界ルールを確認します。
クローラの深さの設定値が大きすぎる場合(または無制限に設定した場合)、クローラが多数のサイトをクロールする可能性があります。境界ルールがない場合、20程度の設定で、ほとんどのロケーションからWWW全体がクロールされると考えられます。
サイト内の、ロボットによりアクセス可能な部分を制御できます。ロボット除外が使用可能な場合(デフォルト)、WebクローラはWebサーバーのrobots
.txt
ファイルに指定されているアクセス・ポリシーに基づいてページを横断します。
次のサンプル/robots.txt
ファイルでは、/cyberworld/map/
、/tmp/
または/foo.html
で始まるURLにはロボットがアクセスしないように指定しています。
# robots.txt for http://www.example.com/ User-agent: * Disallow: /cyberworld/map/ Disallow: /tmp/ Disallow: /foo.html
Webサイトがユーザーにより制御されている場合は、Oracle SESクローラ・プラグイン名「User-agent: Oracle Secure Enterprise Search」を指定して、特定のロボット・ルールをクローラにあわせて調整できます。次に例を示します。
User-agent: Oracle Secure Enterprise Search Disallow: /tmp/
ロボットのmeta
タグでは、クローラに対してWebページを索引付けするかWebページ内のリンクをたどるように指示できます。次に例を示します。
<meta name="robots" content="noindex,nofollow">
Oracle SESでは常に、重複した(同一の)ドキュメントを削除します。Oracle SESでは、前に参照したページと重複しているとみなされるページは索引付けされません。Oracle SESが処理済のURLを介してページにアクセスした場合も、索引付けされません。
WebサービスAPIでは、近似重複ドキュメントの検出と結果リストからの削除を有効または無効にできます。近似重複ドキュメントとは、相互に類似したドキュメントです。 これらは、相互に同一の可能性のあるドキュメントです。
クローラは、リダイレクト先ページのみをクロールします。たとえば、Webサイトにユーザーを同じタイトルの他のサイトにリダイレクトするJavaスクリプトがあるとします。リダイレクト先サイトのみが索引付けされます。
リダイレクトからの包含ルールをチェックします。これは、リダイレクトのタイプに基づきます。EQ$URL
には、次の3種類のリダイレクトが定義されています。
一時リダイレクト: 一時リダイレクト(HTTPステータス・コード302、307)の場合は、リダイレクト先のURLが常に許可されます。一時リダイレクトは、元のURLを将来も使用する必要があるという理由がある場合に使用されます。EQ$URL
表から一時リダイレクトを検出するには、ログ・ファイルから残りの部分をフィルタする必要があります。
永続リダイレクト: 永続リダイレクト(HTTPステータス301)の場合、リダイレクト先URLには境界ルールが適用されます。永続リダイレクトは、元のURLが無効になり、ユーザーは新規の(リダイレクト先)URLの使用を開始する必要があることを意味します。EQ$URL
では、HTTP永続リダイレクトのステータス・コードは954になっています。
メタ・リダイレクト: メタタグ・リダイレクトは、永続リダイレクトとして処理されます。メタ・リダイレクトのステータス・コードは954です。これは、常に境界ルールと対照してチェックされます。
URLループは、多数の一意URLがすべて同じドキュメントを指している状況を指します。特に困難な状況の1つは、1つのサイトに多数のページがあり、各ページにサイト内の他の各ページへのリンクが含まれている場合です。クローラは最終的にはサイト内のドキュメントをすべて分析するため、通常、これは問題ではありません。
ただし、一部のWebサーバーは、リクエスト間で情報を追跡するために、生成されたURLにパラメータを添付します。この種のWebサーバーは、すべてが同一ドキュメントを指す多数の一意URLを生成する可能性があります。
たとえば、http://example.com/somedocument.html?p_origin_page=10
がhttp://example.com/somedocument.html?p_origin_page=13
と同じドキュメントを参照していても、参照側ページが異なるためp_origin_page
パラメータがリンクごとに異なる場合があります。多数のパラメータが指定されている場合や、参照するリンクが多い場合は、1つの一意ドキュメントを参照するリンクが数千または数万になる可能性があります。これは、URLループがどのように発生するかを示す一例です。
Oracle SES管理ツールでクローラ統計をモニターして、クロール頻度が最大のURLおよびWebサーバーを判別します。特定のサイトやURLにアクセスするURLの数が極端に多い場合は、次のいずれかを実行できます。
Webサーバーの除外: これにより、そのホストのURLはクローラによりクロールされなくなります。(除外対象をホストの特定のポートに制限することはできません。)
クロールの深さの減少: これにより、クローラがたどる参照先リンクのレベル数を制限します。URLループが特定のホストに影響していることが判明した場合は、サイトを目視で調査して、そのサイトのリーフ・ページの深さを見積もる必要があります。リーフ・ページとは、他のページへのリンクを持たないページです。一般的なガイドラインとして、クロールの深さはリーフ・ページの深さ + 3に設定します。
パラメータを1つでも変更した場合は、クローラを再起動してください。変更内容を有効にするには、クローラを再起動する必要があります。
Oracle SESでは、インストール時にREDOログ用に200MBが割り当てられます。200MBは、比較的大規模な資料をクロールするには十分な領域です。ただし、REDOログを増やすのに十分なディスクの空き領域があり、大規模な資料(例: 正味300GBを超えるテキスト・サイズ)をクロールする場合は、クロール・パフォーマンスを向上させるためにREDOログ・ファイル・サイズを増やします。
注意: クロール時の最大のトランザクションは、Oracle Textによる SYNC INDEX です。AWRレポートまたはv$sysstat ビューをチェックして、クロール時の実際のREDOサイズを確認してください。最大300GBをクロールするのに十分なサイズは約200MBです。 |
SQL*Plusを起動し、SYSTEM
ユーザーとして接続します(パスワードはEQSYS
です)。
次のSQL文を実行して、現在のREDOログ・ステータスを確認します。
SQL> SELECT vl.group#, member, bytes, vl.status 2 FROM v$log vl, v$logfile vlf 3 WHERE vl.group#=vlf.group#; GROUP# MEMBER BYTES STATUS ------ -------------------------------------------------- ---------- ---------- 3 /scratch/ses10181/oradata/o10181/redo03.log 209715200 INACTIVE 2 /scratch/ses10181/oradata/o10181/redo02.log 209715200 CURRENT 1 /scratch/ses10181/oradata/o10181/redo01.log 209715200 INACTIVE
INACTIVE
のREDOログ・ファイルを削除します。たとえば、グループ3を削除します。
SQL> ALTER DATABASE DROP LOGFILE group 3; Database altered.
サイズを増やしたREDOログ・ファイルを作成します。ファイルの場所を変更する場合は、新しい場所を指定します。
SQL> ALTER DATABASE ADD LOGFILE '/scratch/ses10181/oradata/o10181/redo03.log' 2 size 400M reuse; Database altered.
ステータスをチェックして、ファイルが作成されたことを確認します。
SQL> SELECT vl.group#, member, bytes, vl.status 2 FROM v$log vl, v$logfile vlf 3 WHERE vl.group#=vlf.group#; GROUP# MEMBER BYTES STATUS ------ -------------------------------------------------- ---------- ---------- 3 /scratch/ses10181/oradata/o10181/redo03.log 419430400 UNUSED 2 /scratch/ses10181/oradata/o10181/redo02.log 209715200 CURRENT 1 /scratch/ses10181/oradata/o10181/redo01.log 209715200 INACTIVE
CURRENT
ステータスのログ・ファイルを削除するには、次のSQL文を実行します。
SQL> ALTER SYSTEM SWITCH LOGFILE; System altered. SQL> SELECT vl.group#, member, bytes, vl.status 2 FROM v$log vl, v$logfile vlf 3 WHERE vl.group#=vlf.group#; GROUP# MEMBER BYTES STATUS ------ -------------------------------------------------- ---------- ---------- 3 /scratch/ses10181/oradata/o10181/redo03.log 419430400 CURRENT 2 /scratch/ses10181/oradata/o10181/redo02.log 209715200 ACTIVE 1 /scratch/ses10181/oradata/o10181/redo01.log 209715200 INACTIVE
グループ2のステータスがACTIVE
に変更されます。次のSQL文を実行して、ステータスをINACTIVE
に変更します。
SQL> ALTER SYTEM CHECKPOINT; System altered. SQL> SELECT vl.group#, member, bytes, vl.status 2 FROM v$log vl, v$logfile vlf 3 WHERE vl.group#=vlf.group#; GROUP# MEMBER BYTES STATUS ------ -------------------------------------------------- ---------- ---------- 3 /scratch/ses10181/oradata/o10181/redo03.log 419430400 CURRENT 2 /scratch/ses10181/oradata/o10181/redo02.log 209715200 INACTIVE 1 /scratch/ses10181/oradata/o10181/redo01.log 209715200 INACTIVE
REDOログ・グループ1と2について、ステップ3から5を繰り返します。
大量のドキュメントをクロールする場合は、Oracle SESの表領域サイズではクロールを完了するのに十分でない可能性があります。Oracle SES表領域にデータファイルを追加して、クロールを再開してください。
たとえば、次の手順で2つのデータファイルをOES
表領域に追加します。
SQL*Plusを起動し、SYSTEM
ユーザーとして接続します(パスワードはEQSYS
です)。
次のSQL文を実行し、現在のデータファイル情報を確認します。
SQL> SELECT FILE_NAME FROM dba_data_files WHERE tablespace_name ='OES'; FILE_NAME ------------------------------------------------------------------------------ /home/ses1018/oracle/product/oradata/ses1018/OES_01.dbf /home/ses1018/oracle/product/oradata/ses1018/OES_02.dbf
次のSQL文を実行し、2つのデータファイルを追加します。
SQL> ALTER TABLESPACE OES ADD DATAFILE 2 '/home/ses1018/oracle/product/oradata/ses1018/OES_03.dbf' SIZE 10M 3 AUTOEXTEND ON MAXSIZE UNLIMITED; tablespace altered. SQL> ALTER TABLESPACE OES ADD DATAFILE 2 '/home/ses1018/oracle/product/oradata/ses1018/OES_04.dbf' SIZE 10M 3 AUTOEXTEND ON MAXSIZE UNLIMITED; tablespace altered.
次のSQL文を実行し、現在のデータファイル情報を確認します。
SQL> SELECT FILE_NAME FROM dba_data_files WHERE tablespace_name ='OES'; FILE_NAME ------------------------------------------------------------------------------ /home/ses1018/oracle/product/oradata/ses1018/OES_01.dbf /home/ses1018/oracle/product/oradata/ses1018/OES_02.dbf /home/ses1018/oracle/product/oradata/ses1018/OES_03.dbf /home/ses1018/oracle/product/oradata/ses1018/OES_04.dbf
注意: 十分なディスク領域が使用可能でない場合は、データファイルを追加できません。 |
それでも必要と思われるページがすべてクロールされていない場合は、次のいずれかを実行してクロール済のページをチェックします。
クローラ・ログ・ファイルをチェックします(ホーム - スケジュール・ページにはリンクがあり、ホーム - スケジュール - ステータス・ページには完全ログの位置が表示されます)。
検索ソース・グループを作成します((「検索」 - 「ソース・グループ」 - 「新規ソース・グループの作成」)。このグループにソースを1つのみ含めます。検索ページで、そのグループを検索します。(「検索」ボックスの上部のグループ名をクリックします。)または、検索ページで「ソース・グループの参照」をクリックします。グループ名をクリックして階層を表示します。グループ名の横にある数値をクリックして、クロール対象ページのリストを表示することもできます。
この項では、Oracle SESのレスポンス時間とスループット・パフォーマンスの改善方法に関する提案について説明します。
この項では、検索品質改善のための一般的な考慮事項について説明します。
推奨リンクを使用すると、特定の問合せキーワードに対し、ユーザーに特定のWebサイトを示すことができます。たとえば、ユーザーが「Oracle Secure Enterprise Search documentation」、「Enterprise Search documentation」または「Search documentation」を検索する場合に、http://www.oracle.com/technology
を推奨できます。
推奨リンクのキーワードは、問合せに対して(推奨として)戻される推奨リンクを決定するルールです。このルールは、問合せ条件と論理演算子で構成されます。たとえば、「secure AND search」というルールを使用できます。このルールを使用すると、問合せ「secure enterprise search」に対して対応する推奨リンクが戻されますが、問合せ「secure database」に対しては戻されません。
索引付けされた問合せで使用するルール言語では、次の演算子がサポートされています。
表8-6 推奨リンクのキーワード演算子
演算子 | 例 |
---|---|
AND |
dog and cat |
OR |
dog or cat |
PHRASE |
dog sled |
ABOUT |
about(dogs) |
NEAR |
dog ; cat |
STEM |
$dog |
WITHIN |
dog within title |
THESAURUS |
SYN(dog) |
注意: 特殊文字(例: #、$、=、&)はキーワードに使用できません。 |
推奨リンクは検索結果リストの上部に表示されます。各問合せについて最大2つの推奨リンクが表示されます。
この機能は、Oracle Secure Enterprise Searchでクロールされない重要なWebページへのリンクを提供する際に特に役立ちます。管理ツールの検索 - 推奨リンク・ページで、推奨リンクを追加または編集します。
索引を最適化すると、断片化が減少し、検索を大幅に高速化できます。索引最適化を定期的にスケジュールしてください。また、クローラにより大幅に更新された場合や、50%以上が断片化された場合も、索引を最適化します。索引最適化がピーク時間外にスケジュールされていることを確認します。非常に大きい索引の最適化には、数時間かかることがあります。
管理ツールのグローバル設定 - 索引最適化ページで、断片化レベルを確認して索引最適化を実行します。最適化を実行する最大時間数を指定できますが、最適なパフォーマンスを得るために、最適化が終了するまで実行してください。これによって、より小型の索引コピーが作成され、元の索引とコピーが切り替えられます(このため、元の索引とコピーの両方を格納する領域が必要です)。最適化が終了すると元の索引は削除され、その領域は再利用できます。
索引付けのパフォーマンスを改善するには、管理ツールのグローバル設定 - 索引付けパラメータの設定ページで、次のパラメータを調整してください。
キャッシュ・ディレクトリ内のクロール・データが索引付けバッチ・サイズに達すると、Oracle SESで索引付けが開始されます。バッチ・サイズが大きいほど、各索引付けバッチの開始までの時間が長くなります。検索できるのは索引付けされたデータのみで、キャッシュ内のデータは検索できません。デフォルト・サイズは250MBです。
ドキュメントのフェッチと索引付けは同時に実行されます。Oracle SESクローラは、索引付けの実行中もドキュメントをフェッチして、キャッシュ・ディレクトリに格納し続けます。
これは、索引をディスクにフラッシュするまでに、索引付けに使用されるメモリーの上限です。
メモリー・サイズが大きいと索引付けのパフォーマンスが(I/Oが少なくなるため)向上し、問合せのパフォーマンスも(作成される索引には最初から断片化が少ないため)向上します(断片化された索引は後で最適化できます)。このサイズは、メモリー・ページングが発生しない範囲で可能なかぎり高く設定してください。
索引付けの進行を追跡する必要がある場合や、ランタイム・メモリーが不足している場合は、メモリー・サイズが小さいほうが便利なことがあります。デフォルト・サイズは275MBです。一般に、索引付けメモリー・サイズ・パラメータを増やすと、断片化を少なくできます。
管理ツールのホーム - 統計ページで、最もよく使用される問合せ、失敗した問合せおよび無効な問合せのリストを確認します。この情報に基づいて次のアクションを実行できます。
検索 - 推奨リンク・ページで、失敗した問合せに関してユーザーに特定のWebサイトを参照させます。
検索 - 代替語ページで、ユーザーが検索時に犯す一般的な誤りを修正します。
検索 - 検索オプション・ページで、重要なドキュメントを検索しやすくします。
検索オプションを使用すると、管理者は特定の検索の結果リストにドキュメントが表示される順序を変更できます。次の理由でデフォルトの結果をオーバーライドできます。
使用頻度の高い検索について、ユーザーに最適の結果を示す場合。
結果を戻さない検索について、ユーザーになんらかの結果を示す場合。
クリックスルーのない検索について、ユーザーに適切な結果を示す場合。
検索時には、各結果に検索との関連性(結果の適切度)を示すスコアが割り当てられます。一部の検索に対する関連性が高いことを管理者がわかっているドキュメントが存在する場合があります。たとえば、会社のWebサイトにXML用のホーム・ページ(http://example.com/XML-is-great.htm)があり、「XML」という検索結果ではそのページを上位に表示する必要があるとします。「XML」の検索については、そのホーム・ページ(http://example.com/XML-is-great.htm)のスコアを100に増やします。
検索オプション用のURLを指定するには、検索による指定および手動によるURLの入力という2つの方法があります。
注意: スコアを増やした問合せの1つでない検索を入力した場合も、ドキュメントのスコアは計算されます。 |
エンド・ユーザー検索と同様に、検索オプションでは大/小文字が区別されません。たとえば、「oracle」と入力すると、「Oracle」についてスコアを増やしたドキュメントが上位に表示されます。
Oracle SESサーバーに重い負荷がかかると予想される場合は、Java Virtual Machine(JVM)のヒープ・サイズをパフォーマンスが向上するように構成します。
このヒープ・サイズは、$ORACLE_HOME/search/config/searchctl.conf
ファイルで定義されます。デフォルトでは、次の値が指定されます。
max_heap_size
= 1024MB
min_heap_size
= 512MB
これらのパラメータの値を適切に増加します。最大サイズが物理的なメモリー・サイズを超過しないようにしてください。
その後、searchctl restart
を使用して中間層を再起動します。
問合せの負荷が高いときに、同時に、負荷の高いクロール・アクティビティが行われないようにする必要があります。特に、ターゲット・サイトで大規模な変更がある場合は、このような状況が発生しないようにしてください。たとえば、24時間通してクロールが実行されるようにスケジュールする必要がある場合など、前述の状況が発生する場合は、UNDO_RETENTION
パラメータを使用して、Oracle UNDO表領域のサイズを拡大してください。
関連項目: Oracle UNDO領域の拡大の詳細は、『Oracle Database SQLリファレンス』および『Oracle Database管理者ガイド』(Oracle Technology Networkから入手可能)を参照してください。 |
検索エンジンの起動と停止には、コマンドライン・ツールsearchctl
を使用します。
注意: UNIXプラットフォームで searchctl コマンドを実行すると、パスワード入力を求めるプロンプトが表示されます。Windowsプラットフォームでは、パスワードは不要です。これは、WindowsにインストールされたOracle SESでは、ユーザーに管理者権限が必要であるためです。ユーザーが管理者グループのメンバーであれば、検索エンジンの起動または停止コマンドを実行するときにパスワードは不要です。 |
関連項目: Oracle SES管理チュートリアルの起動/シャットダウンに関する項目: http://st-curriculum.oracle.com/tutorial/SESAdminTutorial/index.htm |
デバッグ・モードはトラブルシューティングに役立ちます。Oracle SES管理ツールのデバッグ・モードを有効化するには、$ORACLE_HOME/search/webapp/config
ディレクトリにあるsearch.properties
ファイルを更新します。debug=true
に設定して、searchctl
restart
によってOracle SES中間層を再起動します。
トラブルシューティングの終了時にデバッグ・モードをオフにするには、debug=false
に設定して、searchctl
restart
によって中間層を再起動します。
注意: $ORACLE_HOME は、Oracle SESがインストールされているディレクトリを表します。
デバッグ情報は、OC4Jログ・ファイル |
ロード・バランサや他のモニタリング・ツールを使用してシステムの可用性が保証される本番環境では、URL http://<host>:<port>/monitor/check.jsp
を介してOracle Secure Enterprise Search(SES)も容易にモニターできます。このURLでは、「Oracle Secure Enterprise Search instance is up.」というメッセージが戻されます。
注意: システム・モニタリング・ツールが文字列のバイト比較を実行する必要がある場合のために、このメッセージの他の言語への翻訳は行いません。 |
Oracle Secure Enterprise Searchには、Google Desktop for Enterprise(GDfE)との統合用プラグイン(コネクタ)が用意されています。Google Desktopでの結果をOracle SESのヒットリストに含めることができます。また、GDfEインタフェースからOracle SESにリンクすることもできます。
関連項目: GDfEとの統合方法の詳細は、 http://<host>:<port>/search/query/gdfe/gdfe_readme.html にある『Google Desktop for Enterprise Readme』を参照してください。 |
Oracle Enterprise Manager 10g Application Server ControlコンソールはWebベースのユーザー・インタフェースで、Oracle SES中間層の現在のステータスが表示されます。たとえば、ホーム・ページにはレスポンスとロードのグラフが表示され、パフォーマンス・ページにはヒープ使用量のグラフが表示されます。
Application Server ControlコンソールはOC4Jとともにインストールされ、自動的に構成されます。Oracle SES中間層は埋込みのスタンドアロンOC4Jで実行されるため、Oracle SESが起動すると、デフォルトでApplication Server Controlコンソールも起動します。
コンソールにアクセスするには、Webブラウザに次のURLを入力します。
http://<host>:<port>/em
host
とport
は、Oracle SESが稼働するホスト名とポートです。
Oracle SES管理者パスワードを使用して、oc4jadmin
ユーザーとしてログインします。
関連項目:
|