搜尋引擎

org.eclipse.help.ui.searchEngine

3.1

這個延伸點用來在聯合說明搜尋中外掛搜尋參與者。 每一個搜尋引擎都可個別配置。當您起始搜尋時, 每一個搜尋引擎都會當成背景工作來執行,且結果會整理到緊接在查詢下方的「說明」視圖中。

除非 productId 屬性維持未定義,否則在建立引擎產品連結之前,這裡定義的搜尋引擎不會自動顯示成聯合搜尋參與者。如果引擎定義了這個屬性,只有連結至特定產品的引擎才會在執行產品時顯示出來。

搜尋引擎可以只是一個 URL,且只提供一個含有這個 URL 作為 href 的觸及項。 其 API 支援需要授權的常用搜尋引擎, 可以依這種方式外掛。在另一方面,搜尋引擎可以與伺服器通訊,並接收含有資訊(像是標籤、href、簡要說明、分數等等)的個別觸及項。本端說明引擎可以用這種方式產生觸及項。

不管搜尋機制為何,引擎都可以利用 JFace 喜好設定頁面來提供各種不同的搜尋範圍設定。當您從「說明」視圖點選「進階設定」鏈結時, 即會顯示這些頁面。除了以引擎定義的根喜好設定頁面之外, 還可以外掛其他喜好設定子頁面,以得到更多的進階設定。

您可利用 IPreferenceStore 物件來載入及儲存範圍設定。所有引擎的範圍設定都會群組在一起, 放在指名的範圍集之下。當您第一次開啟時,即會建立預設範圍集 ('Default'),但使用者可以定義其他範圍集並在其間轉換。

由於聯合搜尋支援是 org.eclipse.help.base 外掛程式的一部分, 因此需要有 Factory 從喜好設定儲存庫中的資料建立搜尋範圍物件。外掛了範圍喜好設定頁面的用戶端,也需要外掛範圍 Factory。

依預設,定義在這個延伸點中的引擎,不會顯示在 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 之類別的完整名稱。

「說明使用者介面」外掛程式提供了本端說明文件、InfoCenter 和 Web 搜尋的搜尋引擎類型,以及本端說明搜尋引擎實例。 這個實例不接受參數,沒有產品 ID,因此,會出現在所有產品中。

產品可以利用引擎 ID 和必要的參數來建立 InfoCenter 和 Web 搜尋的具體實例。

InfoCenter 引擎類型的引擎 ID 是 org.eclipse.help.ui.infoCenter,它接受指向安裝了 InfoCenter 之遠端伺服器的單一參數 url。 結果會依照本端說明結果的相同方式來顯示。

Web 搜尋引擎類型的引擎 ID 是 org.eclipse.help.ui.web,它接受代表具體搜尋查詢的單一參數 url,這個具體搜尋查詢的實際搜尋字串更換成替代符號 '{expression}',如下列所示:

http://eclipse.org/search/search.cgi?q={expression}&ul=&ps=20&m=all

Web 搜尋結果會顯示成單一鏈結,這個鏈結會以 url 參數中所代入的搜尋字串來開啟 Web 瀏覽器。