联合搜索引擎类型

“帮助”系统中新的联合信息搜索功能使用了搜索引擎类型搜索引擎的概念。引擎类型是一个元引擎,通过参数化,可以根据该引擎创建许多具体的搜索引擎。

新引擎类型是通过 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 的匹配项。API 支持需要其许可证的常用搜索引擎可以以此方式插入。另一方面,搜索引擎可以与服务器进行通信并接收各个包含诸如标注、href、简短描述和分数之类信息的匹配项。本地帮助引擎可以以此方式生成匹配项。

无论使用哪种搜索机制,引擎都可以使用 JFace 首选项页面来提供各种搜索作用域设置。当您从“帮助”视图中选择“高级设置”链接时,就会显示这些页面。除了引擎定义的根首选项页面以外,可以插入其它首选项子页面以提供更高级的设置。

作用域设置是使用 IPreferenceStore 对象来装入和存储的。所有引擎的作用域设置都分组在一起,这称为作用域集。当第一次打开时,将创建缺省作用域集(“Default”),但用户可以定义多个作用域集并在它们之间进行切换。

由于联合搜索支持是 org.eclipse.help.base 插件的一部分,所以需要一个工厂来根据首选项库中的数据创建搜索作用域对象。插入作用域首选项页面的客户机还需要插入作用域工厂。

缺省情况下,此扩展点中定义的引擎不会显示在用户界面中。显示在用户界面中的引擎是可以被单独修改的具体搜索引擎实例。产品可以使用已注册的引擎类型的许多实例来对帮助系统进行预先配置,并可能对这些实例进行参数化以便按期望的方式执行它们。此外,用户可以添加他们自己的注册引擎实例并根据他们的要求配置它们:

<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>