• 検索結果がありません。

SESにおけるCustom Searchインタフェースの実装 - search.oracle.comでのケース・スタディ

N/A
N/A
Protected

Academic year: 2021

シェア "SESにおけるCustom Searchインタフェースの実装 - search.oracle.comでのケース・スタディ"

Copied!
13
0
0

読み込み中.... (全文を見る)

全文

(1)

Oracle Secure Enterprise Search における

カスタム検索インタフェースの実装 -

search.oracle.com の事例

オラクル・ホワイト・ペーパー

(2)

Oracle Secure Enterprise Search におけるカスタム検索

インタフェースの実装 - search.oracle.com の事例

概要 ... 3

カスタム検索UI ... 3

ハイレベル設計 ... 3

Webサービスを使用したカスタムUIの実装... 5

Webサービスのエンド・ポイント ... 5

インポートのためのパッケージ ... 5

検索コンテキストの初期化 ... 5

検索 ... 6

データ・グループ ... 6

属性 ... 6

フィルタ ... 6

推奨リンク ... 7

代替語 ... 8

類似文書 ... 9

検索結果 ... 9

セキュア検索 ... 9

パッケージのデプロイ... 9

CLASSPATHの設定 ... 9

構成 ... 10

検索カスタムUIのデプロイ... 10

SESのデフォルト・ネームスペース ... 10

別のネームスペースの作成 ... 10

結論 ... 12

付録 ... 12

FreeMarkerの実装... 12

(3)

Oracle Secure Enterprise Search におけるカスタム検索

インタフェースの実装 - search.oracle.com の事例

概要

Oracle Secure Enterprise Search 10g は、設定済のソリューションで、Oracle データ ベースと Portal、Web サイト、電子メール・システム、ディスク上のファイルな ど、複数の様々なリポジトリで検索機能を提供します。

このホワイト・ペーパーでは、Oracle Secure Enterprise SearchのWebサービスAPI を使用してカスタムUIを開発するための概要を、その実装の経験に基づいて説明 します。ここでの目的は、oracle.comでSESのWebサービスAPIを使用して、検索ユー ザー・インタフェースの実装がどのように機能するかを理解することです。この UIはsearch.oracle.comで参照できます。Oracle Secure Enterprise Searchにはデフォル トの検索UIがありますが、search.oracle.comでカスタムUIが必要でした。それは、 Oracle Technology Network (OTN)には独自のルック・アンド・フィールがあり、UI も一貫性のあるものとして、検索エンジンでカスタムUIが必要であったためです。 Oracle Secure Enterprise Searchの詳細およびサンプル・コードは、

http://www.oracle.com/technology/products/oses/index.html (英語)を参照してくだ さい。

この実装では、インタフェースのテキスト出力を生成するテンプレート・エンジ ンとして、FreeMarker を使用します。

カスタム検索 UI

Oracle Secure Enterprise Search で索引付けされたデータを検索するカスタム検索ア プリケーションを作成するには、Web Services API を使用します。Oracle SES では、 Web Services Proxy Java ライブラリを提供しています。

ハイレベル設計

カスタム UI は、SES の WSDL で生成された Java クライアント・スタブを利用し ます。この実装のアプローチでは、FreeMarker をテンプレート・テクノロジとし て使用して、スクリプレットと UI を分離させます。これにより、プレゼンテーショ ン・レイヤーからアプリケーション・ロジックを適切に分離することができます。 この実装には、initialize.jsp と search.jsp の 2 つの jsp があります。initialize.jsp は検 索のコンテキストを初期化し、Web サービスのエンド・ポイントを設定します。 search.jsp はエントリ・ポイントで、検索クエリーを処理し、ハッシュマップで UI を正しく表示するために必要な動的コンテンツを保持します。

(4)

カスタム検索 UI 用に設計されたテンプレートには、query.ftl、result.ftl および noresult.ftl の 3 つがあります。query.ftl は、デフォルトの検索 UI に対応したテン プレートです。デフォルトの検索 UI でサブミットされたクエリーに対する検索結 果によって、アプリケーションは、result.ftl または noresult.ftl のテンプレートをロー ドします。実際には、これにより UI のルック&フィールが決定されます。result.ftl から生成された結果の UI は、検索結果を保持します。サブミットされたキーワー ドに対して検索結果がない場合は、noresult.ftl から生成される noresult 画面が表示 されます。

カスタム検索のスナップショット

− search.oracle.com

問合せ画面

結果画面

(5)

結果なしの画面

Web サービスを使用したカスタム UI の実装

Oracle Secure Enterprise Search で索引付けされたデータを検索するカスタム検索ア プリケーションを作成するには、Web サービス API を使用します。

SES が提供する Web サービス API の全体像については、『Oracle® Secure Enterprise Search 管理者ガイド』を参照してください。

Web サービスのエンド・ポイント

SESのWebサービスAPIへアクセスするためのデフォルトのエンド・ポイントは、 http://hostname:port/search/query/OracleSearchです。デフォルトのエンド・ポイント を変更する方法は、「検索カスタムUIのデプロイ」で説明します。 注意: デフォルトのネームスペースを/default/searchに変更すると、エンド・ポイン トはhttp://hostname:port/default/query/OracleSearchになります。

インポートのためのパッケージ

SES の Web サービス API を実装するには、次のパッケージをインポートする必要 があります。

oracle.search.query.webservice.client.*;

検索コンテキストの初期化

検索コンテキストは次のように初期化できます。

OracleSearchService ctx = new OracleSearchService(); ctx.setSoapURL( <endpoint> );

例えば、次のようにします。

ctx.setSoapURL(http://hostname:port/default/query/Orac leSearch);

(6)

検索

検索は、ノード内だけではなくグループ内でも実行できます。何も指定しない場 合は、SES の管理 UI で構成した有効なすべてのソースに対して検索が実行されま す。グループ内で検索の指定が必要な場合は、グループ名を指定します。同様に、 ノード内の検索では、ノード ID およびフェデレーテッド ID を指定します。ロー カル検索では、fid(フェデレーテッド ID)のデフォルトは − 1 です。フェデレー テッド・ソース内でノードを検索する場合は、対応する fid を入力して指定する必 要があります。

データ・グループ

SES は、構成されたソース・グループを取得するための API を提供します。この 情報を使用して、有効なグループを UI に表示すること、およびソース・グループ 内で検索を制限することができます。 フェデレーテッド検索を使用している間は、ソースをグループに追加できます。 また、このグループ検索の使用を、フェデレーテッド・ソース内に制限すること ができます。

属性

SES には、検索で利用できる属性を取得するための API があります。この属性リ ストを使用することで、渡された全ての属性を利用可能な属性として有効にでき る高度な検索を行うことができます。これは、特定の属性に対して一致するもの を制限することによって、検索を絞り込む場合に有効です。

フィルタ

フィルタを使用して検索のクエリーを制限することができます。検索の際、複数 のフィルタを指定できます。各フィルタは、検索結果における制約として機能し ます。フィルタは、filterConnector によってコネクトされます。明示的に設定して いない場合、フィルタは検索結果に適用されません。 フィルタは、次のように作成できます。

Filter filter = new Filter(attributeId, attributetype,searchOpName, searchAttValue);

AttributeId および attributeType は、getAttributes という API を使用して取得される attributeList で属性名を一致させることで取得できます。

たとえば、属性 LastModifiedDate の attributeId と type が「1」と「Date」で、演算 名と属性値が「greaterthan」と「10/10/2005」の場合、オブジェクトは次のように 作成されます。

Filter filter = new Filter(1, “Date”, “greaterthan”, “10/10/2005”);

(7)

推奨リンク

推奨リンクは、検索の全体的な質を向上させる機能です。たとえば、oracleという キーワードに対して、http://www.oracle.comやhttp://partners.oracle.comなどの推奨リ ンクを追加しおくと、エンド・ユーザーがoracleというキーワードで検索したとき に、UI上で推奨リンクが高い優先度で表示されます。検索キーワードに対する推 奨リンクは、SESの管理UIに追加することができます。この情報は、必要に応じ てカスタムUIに表示できます。検索APIで返されるOracleSearchResultオブジェクト は、推奨リンク・クラス・オブジェクトの配列を保持します。これは、推奨リン クのタイトルおよびURLをメンバー変数として持ちます。推奨リンク機能を使用 したカスタムUIのスクリーン・ショットを次に示します。 このスクリーン・ショットでは、推奨リンクを追加できる管理 UI のページを示し ています。

(8)

代替語

代替語は、検索の全体的な質を向上させるもう 1 つの機能です。代替語は、汎用 キーワード検索で使用されるため、ユーザーは、検索したいキーワードそのもの を簡単に指定できます。たとえば、crm というキーワードに対して、管理 UI に customer relationship management として登録されている場合、ユーザーが crm で検 索すると、結果のページには、もしかして “customer relationship management”? と 表示され、これをクリックすると、customer relationship management に対する検索 結果が表示されます。すべての検索キーワードに対する代替語は、SES の管理 UI 画面で構成することができます。必要な場合、これを UI に表示できます。検索 API で返される OracleSearchResult オブジェクトには、代替語を保持するメンバー 変数があります。代替語を使用したカスタム UI のスクリーン・ショットを次に示 します。 このスクリーン・ショットでは、代替語を追加できる管理 UI のページを示してい ます。

(9)

類似文書

検索結果において、重複した文書または、ほぼ重複した文書はすべて、「類似文 書」という語で参照されます。検索結果で、重複した文書を表示しない場合、 dupRemoved フラグを true にして検索クエリーを作成することが必要になります。 検索結果に類似文書を表示する場合は、dupRemoved フラグを false に設定し、 dupMarked フラグを true に設定します。「類似文書」のリンクをクリックして表 示させるには、isDuplicate フラグの値に基づいて、最初に重複文書を隠し、リン クをクリックしたときに文書の ID を渡して文書を表示するコードを作成します。

検索結果

検索結果は、OracleSearchResult のオブジェクトとして返されます。 OracleSearchResult オブジェクトは、ResultElement オブジェクトの配列を持ってい ます。 全てのメンバー変数を業務要件ごとに表示できます。

セキュア検索

セキュア検索は認証 API を使用して実装できます。認証 API を使用するために、 カスタム UI はエンド・ユーザーの要求を同じコンテキスト内に保持する必要があ ります。 ctx = (OracleSearchService) request.getSession().getAttribute("SearchContext"); if (ctx == null) { ctx = new OracleSearchService(); ctx.setSoapURL( endpoint ); request.getSession().setAttribute("SearchContext ",ctx); }

パッケージのデプロイ

CLASSPATH の設定

Oracle SES のクライアント側 Java プロキシ・ライブラリを使用して、クライアン ト・アプリケーションをコンパイルおよび実行するには、Java CLASSPATH に次 のファイルを含める必要があります。これらのファイルは、Oracle SES サーバー 上のディレクトリから取得できます。 • $ORACLE_HOME/search/lib/search_query.jar(プロキシ Java ライブラリ) • $ORACLE_HOME/oc4j/soap/lib/soap.jar • $ORACLE_HOME/oc4j/j2ee/home/lib/http_client.jar • $ORACLE_HOME/xdk/lib/xmlparserv2.jar

(10)

• $ORACLE_HOME/lib/mail.jar • $ORACLE_HOME/lib/activation.jar

アプリケーションは search.ear 内にパッケージされます。この ear デプロイ時に oc4j を再起動する必要はありません。

構成

Web サービスのエンド・ポイントは web.xml に構成されます。同一の ear を別の SES にデプロイするには、orion-web.xml を使用して、web.xml に記載されたエン トリを上書きします。 FreeMarker テンプレートの場所も構成可能で、パスを ear の外部に設定できます。 これにより、ear を再デプロイせずに UI を簡単に変更できます。この実装におい て、構成されたパスにテンプレートが示されない場合は、ear から取得されます。

検索カスタム UI のデプロイ

SES のデフォルト・ネームスペース

SES の検索 UI のデフォルトのネームスペースは/search/search です。カスタム UI で同じネームスペースを使用するには、デフォルトの UI のネームスペースを変更 する必要があります。ここで説明する実装では、デフォルト検索 UI のネームス ペースを/default/search に変更して、/search/search をカスタム UI で使用します。 注意: カスタム UI が、異なる oc4j インスタンスにデプロイされている場合は、ネー ムスペースを変更する必要はありません。 デフォルトのネームスペースを変更する方法は次のとおりです。

別のネームスペースの作成

1. ネームスペースの変更について http-web-site.xml を変更します。 http-web-site.xml ファイルを次の場所にバックアップします。 $ORACLE_HOME/oc4j/j2ee/OC4J_SEARCH/config/ 変更前: <default-web-app application="search_query" name="welcome"/>

<web-app application="search_query" name="query" load-on-startup="true" root="/search/query" /> <web-app application="search_admin" name="admin" load-on-startup="true" root="/search/admin" /> <web-app application="search_admin" name="ohw" load-on-startup="true" root="/search/ohw" />

<web-app application="monitor" name="monitor" load-on- startup="true" root="/monitor" />

(11)

次に太字で示した行を追加/変更し、アプリケーションに、デフォルト・ クエリーのルートを含めます。新しいネームスペースのクエリーは次の とおりです。

<default-web-app application="search_query" name="welcome"/>

<web-app application="search_query" name="query" load-on-startup="true" root="/default/query" />

<web-app application="search_admin" name="admin" load-on-startup="true" root="/search/admin" /> <web-app application="search_admin" name="ohw" load-on-startup="true" root="/search/ohw" />

<web-app application="monitor" name="monitor" load-on- startup="true" root="/monitor" />

<web-app application="search" name="search" load-on- startup="true" root="/search" /> 2. 次の場所で index.jsp をバックアップし、修正します。 $ORACLE_HOME/oc4j/j2ee/home/default-web-app/. 新しいファイルには、次のエントリのみが含まれます。 <% response.sendRedirect(response.encodeRedirectUrl("/sea rch/search")); %> この変更の目的は、http://hostname:portと入力した場合に、デフォルトの 検索UIではなくカスタムUIへ自動的にリダイレクトされるようにするこ とです。 3. 次の場所で index.html をバックアップします。 $ORACLE_HOME/oc4j/j2ee/oc4j_applications/applica tions/search_query/welcome/ 次のエントリによって、新しい index.html ファイルを作成します。 <head> <meta http-equiv="refresh" content="0;url=/search/search"/> </head> この変更の目的は、http://hostname:port と入力した場合に、デフォルトの検索 UI ではなくカスタム UI へ自動的にリダイレクトされるようにすることです。

(12)

結論

業務要件に基づいてカスタム UI を開発することは必須です。Oracle Secure Enterprise Search Web サービス API により、ネットワーク上で Oracle SES に問合 せをする独自のアプリケーションを作成することができます。これは、Java でも 機能することが証明されています。この API には、次のメリットがあります。 • 標準のインターネット・プロトコルを介して、Oracle SES サーバーへ接続 されたすべてのマシンへアプリケーションをデプロイできる。 • Web サービス・プロトコルが XML ベースであり、簡単にアプリケーショ ンを統合できる。

付録

FreeMarker の実装

ここで説明したカスタム UI の実装では、UI を実装するために FreeMarker を使用 しています。FreeMarker はテンプレート・エンジンで、テンプレートに基づいた 出力を生成する一般的なツールです。このテンプレートは、jsp から実際の UI の 定義を分離させ、テンプレートを変更しても ear を再デプロイする必要がありま せん。UI に表示される動的なコンテンツは、jsp 内のハッシュマップに保存され、 静的な部分はテンプレートに保存されます。動的な部分はテンプレートに関連付 けられ、名前を使用してテンプレート内でアクセスすることができます。この名 前により、ハッシュマップ内で${<name>}のように格納されます。 ここでは、時間(秒単位)の設定を構成することができます。これは、FreeMarker がテンプレートの新しいバージョンをチェックするまでの間隔を測定するために 必要です。この値が 0 に設定されている場合、FreeMarker は、テンプレートがロー ドされるたびに新しいバージョンをチェックし、変更があれば速やかに反映しま す。FreeMarker の詳細は、http://freemarker.sourceforge.net/を参照してください。

(13)

SES におけるカスタム検索インタフェースのデプロイ - search.oracle.com での事例 2006 年 6 月 著者: Ann Jacob 寄稿者: Sudhir Dureja Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話: +1.650.506.7000 ファックス: +1.650.506.7200 www.oracle.com Copyright © 2006, Oracle. 無断転載を禁ず。 この文書はあくまで参考資料であり、掲載されている情報は予告なしに変更されることがあります。 オラクル社は、本ドキュメントの無謬性を保証しません。また、本ドキュメントは、法律で明示的または暗黙的に記載 されているかどうかに関係なく、商品性または特定の目的に対する適合性に関する暗黙の保証や条件を含む一切の保証 または条件に制約されません。オラクル社は、本書の内容に関していかなる保証もいたしません。また、本書により、 契約上の直接的および間接的義務も発生しません。本書は、事前の書面による承諾を得ることなく、電子的または物理 的に、いかなる形式や方法によっても再生または伝送することはできません。

Oracle、JD Edwards、PeopleSoft および Siebel は、Oracle Corporation および関連会社の登録商標です。他の製品名 は、それぞれの所有者の商標です。

参照

関連したドキュメント

Different from the tradition LS algorithm, the SDLS introduced stochastic dynamics into the local search that permits temporary increase of error function, thus resulting in escape

The tested methods are full search (FS), double annulus (DA), Cardinal (CARD) [6], which is the most acceleration method for ECVQ, and angular constraint with hyperplane

redex search token passing reduction diagram rewriting. computation

A Tabu search procedure is then used to select a subset of financial ratio variables which best predict bankruptcy from among a larger initial set of 20 variables, and use that

A Tabu search procedure is then used to select a subset of financial ratio variables which best predict bankruptcy from among a larger initial set of 20 variables, and use that

このマニュアル全体を読んで、Oracle Diagnostics Pack に同梱の Oracle Performance Manager、Oracle Capacity Planner、Oracle TopSessions および Oracle Event

本装置は OS のブート方法として、Secure Boot をサポートしています。 Secure Boot とは、UEFI Boot

When relativistic quantum mechanics and field the- ory emerged, the half-integer internal angular momentum was interpreted in terms of the complex special linear group SL(2, C ) as