除非保留 productId
属性未定义,否则,在建立引擎产品绑定前,此处定义的搜索引擎不会自动作为联合搜索参与者出现。对于定义了该属性的引擎来说,只有那些与特定产品绑定的引擎才会在该产品运行时出现。
搜索引擎可以仅仅构造一个 URL 并且只提供一个包含该 URL 作为 href 的匹配项。可以按此方式插入那些需要向 API 支持提供其许可证的常用搜索引擎。另一方面,搜索引擎可以与服务器进行通信并接收各个包含诸如标签、href、简短描述和分数之类信息的匹配项。本地帮助引擎可以按此方式生成匹配项。
无论使用哪种搜索机制,引擎都可以使用 JFace 首选项页来提供各种搜索范围设置。当您从“帮助”视图中选择“高级设置”链接时,就会显示这些首选项页。除了引擎定义的根首选项页以外,可以插入其他首选项子页以提供更高级的设置。
范围设置是使用 IPreferenceStore
对象来装入和存储的。所有引擎的范围设置都分组到名为范围集的组中。在第一次打开时,将创建缺省范围集(“Default”),但用户可以定义多个范围集并在它们之间进行切换。
由于联合搜索支持是 org.eclipse.help.base
插件的组成部分,所以需要一个工厂来根据首选项库中的数据创建搜索范围对象。插入了范围首选项页的客户机还需要插入范围工厂。
缺省情况下,此扩展点中定义的引擎不会显示在 UI 中。UI 中显示的引擎是可以单独修改的具体搜索引擎实例。产品可以使用已注册的引擎类型的许多实例来对帮助系统进行预先配置,并可以将这些实例参数化以便按期望的方式执行它们。此外,用户可以添加他们自己的已注册引擎实例并根据需要进行配置。
<!ELEMENT extension (engineType* , engine*)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT engineType (description? , subpage*)>
<!ATTLIST engineType
id CDATA #REQUIRED
label CDATA #REQUIRED
icon CDATA #IMPLIED
class CDATA #REQUIRED
pageClass CDATA #IMPLIED
scopeFactory CDATA #IMPLIED>
定义特定类型的搜索引擎。用户可以使用搜索引擎类型来创建具体的引擎实例,产品可以使用搜索引擎类型来预装入具体的引擎实例。为了能够成为有用的引擎类型,引擎类型必须是可配置的,这样才能允许使用单一引擎类型来创建许多个引擎。
org.eclipse.help.search.ISearchEngine
的类的标准名称。此类用于根据给定的查询和范围执行搜索。org.eclipse.help.ui.RootScopePage
类的类的标准名称。此页包含搜索引擎的主开关,它通常用来主管用于缩小引擎搜索范围的窗口小部件。org.eclipse.help.ui.ISearchScopeFactory
的类的标准名称。此工厂负责根据 IPreferenceStore
类中存储的设置来创建 ISearchScope 对象。如果指定了
pageClass
,则还必须指定范围工厂。<!ELEMENT description (#PCDATA)>
搜索引擎的简短描述。
<!ELEMENT subpage EMPTY>
<!ATTLIST subpage
id CDATA #REQUIRED
label CDATA #REQUIRED
class CDATA #IMPLIED
category CDATA #REQUIRED>
engine
元素中定义的根范围首选项页的子页。如果未定义 pageClass
引擎属性,则将忽略子页。
org.eclipse.help.ui.ISearchScopePage
接口的类的标准名称。<!ELEMENT engine (description? , param*)>
<!ATTLIST engine
productId CDATA #IMPLIED
engineTypeId CDATA #REQUIRED
enabled (true | false)
label CDATA #IMPLIED
id CDATA #REQUIRED>
指定特定搜索引擎类型的具体实例。可以将实例与产品绑定,以便仅当该产品处于活动状态时才显示该实例。引擎可以具有自己的标签和描述。如果未指定它们,则将使用引擎类型数据。最后,每种引擎类型都定义了一组有效的参数,您可以将这些参数传递给该引擎以对其进行配置。引擎可以指定这些参数的值。
org.eclipse.core.runtime.Platform.getProduct()
定义)的引擎。如果未指定此参数,则该引擎将对所有产品显示。true
,则该引擎最初将处于启用状态。用户可以在 UI 中重新设置此值。<!ELEMENT param EMPTY>
<!ATTLIST param
name CDATA #REQUIRED
value CDATA #REQUIRED>
这个可选参数用来配置搜索引擎类型的此实例。有效参数是由引擎类型定义的。
<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>
<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}&ul=&ps=20&m=all"
>
</param>
</engine>
</extension>
engineType
的属性 class
必须提供实现了 org.eclipse.help.search.ISearchEngine
的类的标准名称。属性 pageClass
必须提供扩展了 org.eclipse.help.ui.RootScopePage
的类的标准名称。属性 scopeFactory
必须提供实现了
org.eclipse.help.ui.ISearchScopeFactory
的类的标准名称。元素 subpage
的属性 class
必须提供实现了 org.eclipse.help.ui.ISearchScopePage
的类的标准名称。
产品可以使用信息中心和 Web 搜索的引擎标识及必需参数来创建它们的具体实例。
信息中心引擎类型的 engineId 为 org.eclipse.help.ui.infoCenter
。信息中心引擎类型接受一个参数 url
,此参数指向安装了信息中心远程服务器。结果的显示方式与本地帮助结果相同。
Web 搜索引擎类型的引擎标识为 org.eclipse.help.ui.web
。Web 搜索引擎类型接受一个参数
url
,此参数表示具体的搜索查询。在该查询中,实际搜索字符串被替换为替代符号“{expression}”,如以下示例所示:
http://eclipse.org/search/search.cgi?q={expression}&ul=&ps=20&m=allWeb 搜索结果将显示成用于打开 Web 浏览器的链接。在该链接中,已替换了
url
中的搜索字符串。
Copyright (c) 2000, 2006 IBM Corporation and others.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0
which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html