搜索引擎

org.eclipse.help.ui.searchEngine

3.1

这个扩展点用来将搜索参与者插入到联合帮助搜索系统中。每个搜索引擎都可以单独配置。当搜索系统启动时,每个搜索引擎都作为后台作业执行,并且立即在查询的“帮助”视图中对返回的结果进行整理。

除非保留 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>

定义特定类型的搜索引擎。用户可以使用搜索引擎类型来创建具体的引擎实例,产品可以使用搜索引擎类型来预装入具体的引擎实例。为了能够成为有用的引擎类型,引擎类型必须是可配置的,这样才能允许使用单一引擎类型来创建许多个引擎。



<!ELEMENT description (#PCDATA)>

搜索引擎的简短描述。



<!ELEMENT subpage EMPTY>

<!ATTLIST subpage

id       CDATA #REQUIRED

label    CDATA #REQUIRED

class    CDATA #IMPLIED

category CDATA #REQUIRED>

engine 元素中定义的根范围首选项页的子页。如果未定义 pageClass 引擎属性,则将忽略子页。



<!ELEMENT engine (description? , param*)>

<!ATTLIST engine

productId    CDATA #IMPLIED

engineTypeId CDATA #REQUIRED

enabled      (true | false)

label        CDATA #IMPLIED

id           CDATA #REQUIRED>

指定特定搜索引擎类型的具体实例。可以将实例与产品绑定,以便仅当该产品处于活动状态时才显示该实例。引擎可以具有自己的标签和描述。如果未指定它们,则将使用引擎类型数据。最后,每种引擎类型都定义了一组有效的参数,您可以将这些参数传递给该引擎以对其进行配置。引擎可以指定这些参数的值。



<!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}&amp;ul=&amp;ps=20&amp;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 的类的标准名称。

帮助 UI 插件提供了用于本地帮助文档、信息中心和 Web 搜索以及本地帮助搜索引擎实例的搜索引擎类型。此实例不接受参数,并且没有产品标识,因此将显示在每个产品中。

产品可以使用信息中心和 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=all

Web 搜索结果将显示成用于打开 Web 浏览器的链接。在该链接中,已替换了 url 中的搜索字符串。