Typy mechanizmów wyszukiwania stowarzyszonego

Nowe stowarzyszone wyszukiwanie informacji w systemie pomocy obejmuje pojęcia typów mechanizmów wyszukiwania oraz mechanizmów wyszukiwania. Typem mechanizmu jest metamechanizm, z którego można utworzyć przy użyciu parametryzacji kilka konkretnych mechanizmów wyszukiwania.

Nowe typy mechanizmu wyszukiwania są wnoszone za pośrednictwem punktu rozszerzenia org.eclipse.help.ui.searchEngine:

<extension point="org.eclipse.help.ui.searchEngine">
	<engineType
		scopeFactory="com.example.xyz.XYZScopeFactory"
		label="Wyszukiwanie XYZ"
		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>
Ten punkt rozszerzenia jest używany do podłączania uczestników wyszukiwania w wyszukiwaniu informacji. 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 zostaną wyświetlone tylko mechanizmy wyszukiwania powiązane z określonym produktem.

Mechanizmy wyszukiwania mogą składać adresy URL, udostępniając tylko jedno trafienie zawierające 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ą modułu dodatkowego 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ć. Produkty mogą wstępnie konfigurować w systemie pomocy kilka instancji zarejestrowanych typów mechanizmów, które mogą być sparametryzowane w celu działania w wymagany sposób. Ponadto użytkownicy mogą dodawać własne instancje zarejestrowanych mechanizmów i konfigurować je w zależności od potrzeb:

<engine
	enabled="true"
	engineTypeId="com.example.xyz.search.XYZSearch"
	id="com.example.xyz.XYZSearch"
	label="Wyszukiwanie XYZ">
</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>