検索エンジンのプラグイン

ヘルプ・システムの新しい統合情報検索は、検索エンジン・タイプ検索エンジンの概念を使用します。エンジン・タイプは、多数の具体的な検索エンジンをパラメーター化によって作成することができるメタ・エンジンです。

新規エンジン・タイプは、 org.eclipse.help.ui.searchEngine でコントリビュートされています。

<extension point="org.eclipse.help.ui.searchEngine">
	<engineType
		scopeFactory="com.example.xyz.XYZScopeFactory"
		label="XYZ Search"
		class="com.example.xyz.search.XYZSearch"
		icon="icons/etool16/xyzsearch.gif"
		pageClass="com.example.xyz.search.XYZSearchPage"
		id="com.example.xyz.XYZSearch">
		<description>
			Instances of XYZ Search search the XYZ site.
		</description>
	</engineType>
この拡張ポイントは、情報検索の検索参加プログラムをプラグインとして組み込む場合に使用されます。各検索エンジンは、別々に構成することができます。検索が開始されると、各検索エンジンは、バックグラウンド・ジョブとして実行され、結果はクエリーで即時にヘルプ・ビュー内で照合されます。

ここで定義される検索エンジンは、エンジン製品バインディングが確立されると、統合検索参加プログラムとして自動的に表示されます。ただし、productId 属性が未定義のままの場合を除きます。属性を定義するエンジンの場合、特定の製品にバインドされたもののみが、製品の実行時に表示されます。

検索エンジンは、単に URL を構成して、その URL を href として含む 1 つのヒットのみを提供します。API がライセンスのサポートを必要とする一般的な検索エンジンは、このようにプラグインとして組み込み可能です。これに対し、検索エンジンはサーバーと通信し、ラベル、HREF、簡略説明、スコアなどの情報を持った個々のヒットを受信します。ローカルのヘルプ・エンジンは、ヒットをこのように作成します。

いずれの検索機構でも、エンジンは JFace 設定ダイアログを使用して、さまざまな検索の範囲の設定を提供することができます。これらのページは、「ヘルプ」ビューで「拡張設定」リンクの後に続く場合に表示されます。エンジンを使用して定義されたルート設定ページに加えて、追加の設定サブページがプラグインとして組み込まれ、より多くの拡張設定ができます。

範囲設定がロードされ、IPreferenceStore オブジェクトを使用して保管されます。すべてのエンジンに対する範囲設定は、「範囲セット (scope set)」として名前を付けて一緒にグループ化されます。最初に開かれたとき、デフォルトの範囲セット (「デフォルト」) が作成されますが、より多くの範囲セットを定義して、それらを切り替えて使用することもできます。

統合検索のサポートは、org.eclipse.help.base プラグインの一部なので、ファクトリーは設定ストアのデータから検索の範囲のオブジェクトを作成する必要があります。範囲の設定ダイアログをプラグインとして組み込むクライアントは、範囲ファクトリーも同様にプラグインとして組み込む必要があります。

この拡張ポイントで定義されたエンジンは、デフォルトでは UI に表示されません。そこに表示されるのは、別々に変更することができる検索エンジンの具象インスタンスです。製品は登録済みエンジン・タイプの多数のインスタンスを使用して、ヘルプ・システムを事前定義することが可能です。希望するとおりに実行するようパラメーター化される可能性があります。また、ユーザーは登録済みエンジンの独自のインスタンスを追加して、必要に応じて構成することができます。

<engine
	enabled="true"
	engineTypeId="com.example.xyz.search.XYZSearch"
	id="com.example.xyz.XYZSearch"
	label="XYZ Search">
</engine>
<engine
	enabled="true"
	engineTypeId="org.eclipse.help.ui.web"
	id="org.eclipse.sdk.Eclipse"
	label="%search.Eclipse.label">
	<description>
		%search.Eclipse.desc
	</description>
	<param 
		name="url" 
		value="http://eclipse.org/search/search.cgi?q={expression}&amp;ul=&amp;ps=20&amp;m=all">
	</param>
</engine>