Mechanizm wyszukiwania

org.eclipse.help.ui.searchEngine

3.1

Opisywany punkt rozszerzenia służy do włączania uczestników wyszukiwania do mechanizmu wyszukiwania stowarzyszonego w ramach systemu pomocy. Każdy mechanizm wyszukiwania można skonfigurować indywidualnie. Po zainicjowaniu wyszukiwania, każdy z mechanizmów wyszukiwania jest uruchamiany jako zadanie w tle, a wyniki są natychmiast zestawiane w widoku pomocy pod zapytaniem.

Mechanizmy wyszukiwania zdefiniowane w tym miejscu nie będą automatycznie wyświetlane jako uczestnicy wyszukiwania stowarzyszonego, dopóki nie zostanie ustanowione powiązanie między mechanizmem a produktem, chyba że atrybut productId nie zostanie zdefiniowany. W przypadku mechanizmów, w których atrybut ten został zdefiniowany, po uruchomieniu produktu wyświetlane są wyłącznie mechanizmy powiązane z określonym produktem.

Mechanizmy wyszukiwania umożliwiają składanie adresów URL i udostępnianie tylko jednego trafienia zawierającego ten adres URL w postaci odwołania href. W taki sposób można podłączać popularne mechanizmy wyszukiwania, dla których obsługa interfejsu API wymaga licencji. Innym rozwiązaniem jest komunikowanie się mechanizmów wyszukiwania z serwerem i odbieranie pojedynczych trafień zawierających takie informacje, jak etykieta, odwołanie href, krótki opis, ocena dopasowania itp. W ten sposób może przedstawiać trafienia lokalny mechanizm pomocy.

Bez względu na mechanizm wyszukiwania mechanizmy mogą udostępniać różnorodne ustawienia zasięgu wyszukiwania, używając stron preferencji pakietu JFace. Te strony są wyświetlane, gdy w widoku pomocy zostanie wybrany odsyłacz Ustawienia zaawansowane. Oprócz głównych stron preferencji zdefiniowanych wraz z mechanizmem, można podłączyć dodatkowe podstrony preferencji zapewniające dostęp do bardziej zaawansowanych ustawień.

Ustawienia zasięgu są ładowane i przechowywane przy użyciu obiektów IPreferenceStore. Ustawienia zasięgu dla wszystkich mechanizmów są zgrupowane w nazwanym zestawie zasięgu. Przy pierwszym otwarciu tworzony jest domyślny zestaw zasięgu, ale użytkownicy mogą definiować więcej zestawów zasięgu i przełączać się między nimi.

Ponieważ obsługa wyszukiwania stowarzyszonego jest częścią wtyczki org.eclipse.help.base, do utworzenia obiektów zasięgu wyszukiwania na podstawie danych ze składnicy preferencji niezbędna jest fabryka. Klienci podłączający strony preferencji zasięgu muszą podłączać również fabryki zasięgu.

Mechanizmy zdefiniowane w tym punkcie rozszerzenia nie są domyślnie wyświetlane w interfejsie użytkownika. Wyświetlane są natomiast konkretne instancje mechanizmów wyszukiwania, które można indywidualnie modyfikować. Na poziomie produktów można wstępnie skonfigurować w systemie pomocy kilka instancji zarejestrowanych typów mechanizmów, które następnie parametryzuje się pod kątem żądanego sposobu działania. Ponadto użytkownicy mogą dodawać własne instancje zarejestrowanych mechanizmów i konfigurować je w zależności od własnych potrzeb.

<!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 ten służy do definiowania określonego typu mechanizmu wyszukiwania. Na podstawie typu mechanizmu wyszukiwania konkretne instancje tego mechanizmu mogą być tworzone przez użytkowników lub wstępnie ładowane przez produkt. Warunkiem przydatności typów mechanizmów jest ich konfigurowalność, która pozwala utworzyć kilka mechanizmów na podstawie jednego typu.



<!ELEMENT description (#PCDATA)>

Element ten zawiera krótki opis mechanizmu wyszukiwania.



<!ELEMENT subpage EMPTY>

<!ATTLIST subpage

id       CDATA #REQUIRED

label    CDATA #REQUIRED

class    CDATA #IMPLIED

category CDATA #REQUIRED>

Element ten odpowiada stronie podrzędnej strony głównej preferencji zdefiniowanej w ramach elementu engine. Jeśli atrybut pageClass mechanizmu nie został zdefiniowany, strony podrzędne są ignorowane.



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

<!ATTLIST engine

productId    CDATA #IMPLIED

engineTypeId CDATA #REQUIRED

enabled      (true | false)

label        CDATA #IMPLIED

id           CDATA #REQUIRED>

Element ten określa konkretną instancję danego typu mechanizmu wyszukiwania. Instancja ta może być powiązana z produktem, co pozwala wyświetlać ją wyłącznie w czasie, gdy produkt ten jest aktywny. Mechanizm może mieć własną etykietę i własny opis. Jeśli nie zostaną one podane, wykorzystuje się dane dotyczące typu mechanizmu. Ponadto w ramach każdego typu mechanizm definiuje się zestaw poprawnych parametrów, które mogą być przekazywane w celu skonfigurowania mechanizmu. W mechanizmach można określać wartości tych parametrów.



<!ELEMENT param EMPTY>

<!ATTLIST param

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Opcjonalny parametr służący do konfigurowania danej instancji typu mechanizmu wyszukiwania. Poprawne parametry definiuje się w odniesieniu do typu mechanizmu.



>Poniżej przedstawiono przykład zastosowania punktu rozszerzenia pomocy.

   

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

Instancje wyszukiwania XYZ w serwisie XYZ.

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

Atrybut class elementu engineType musi udostępniać pełną nazwę klasy wykorzystywanej do implementacji interfejsu org.eclipse.help.search.ISearchEngine. Atrybut pageClass musi udostępniać pełną nazwę klasy rozszerzającej klasę org.eclipse.help.ui.RootScopePage. Atrybut scopeFactory musi udostępniać pełną nazwę klasy wykorzystywanej do implementacji interfejsu org.eclipse.help.ui.ISearchScopeFactory. Atrybut class elementu subpage musi udostępniać pełną nazwę klasy wykorzystywanej do implementacji interfejsu org.eclipse.help.ui.ISearchScopePage.

We wtyczce interfejsu użytkownika systemu pomocy dostępne są typy mechanizmów wyszukiwania właściwe dla lokalnej dokumentacji pomocy, Centrum informacyjnego oraz wyszukiwania w sieci WWW, a także instancja mechanizmu wyszukiwania obejmującego lokalny system pomocy. Instancja ta nie przyjmuje parametrów i nie posiada identyfikatora produktu, w związku z czym jest wyświetlana we wszystkich produktach.

W produktach można tworzyć konkretne instancje mechanizmów wyszukiwania obejmujących Centrum informacyjne i sieć WWW, wykorzystując w tym celu ich identyfikatory i wymagane parametry.

Typ mechanizmu dostosowany do potrzeb Centrum informacyjnego nosi identyfikator org.eclipse.help.ui.infoCenter i przyjmuje jeden parametr url (wskazujący serwer zdalny, na którym zainstalowano Centrum informacyjne). Wyniki są wyświetlane w ten sam sposób, co w przypadku lokalnego systemu pomocy.

Tym mechanizmu wyszukiwania dostosowany do potrzeb sieci WWW nosi identyfikator org.eclipse.help.ui.web i przyjmuje jeden parametr url. Stanowi on konkretne zapytanie, w którym rzeczywisty wyszukiwany łańcuch zostaje zastąpiony symbolem podstawienia {wyrażenie} zgodnie z następującym przykładem:

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

Wyniki wyszukiwania w sieci WWW są wyświetlane w postaci jednego odsyłacza pozwalającego otworzyć okno przeglądarki, w którym parametr url zostaje zastąpiony wyszukiwanym łańcuchem.