Suchmaschinentypen für Verbundinformationen

Eine neue Verbundinformationssuche im Hilfesystem verwendet das Konzept von Suchmaschinentypen und Suchmaschinen. Ein Suchmaschinentyp ist eine Meta-Suchmaschine, von der aus durch Parameterangabe mehrere konkrete Suchmaschinen erstellt werden können.

Neue Suchmaschinentypen werden über org.eclipse.help.ui.searchEngine ergänzt:

<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>
Dieser Erweiterungspunkt wird verwendet, um Teilnehmer an der Suche über Plug-in in die Informationssuche zu integrieren. Jede Suchmaschine kann individuell konfiguriert werden. Zu Beginn einer Suche werden die jeweiligen Suchmaschinen als Hintergrund-Job ausgeführt. Die Ergebnisse werden dann in der Hilfesicht direkt unter der Abfrage sortiert.

Suchmaschinen, die hier definiert sind, werden nicht automatisch als Teilnehmer an der Suche nach Verbundinformationen angezeigt, bis die Suchmaschinenproduktbindung etabliert ist, es sei denn, das Attribut productId wird nicht definiert. Für Suchmaschinen, die eine solche Definition aufweisen, werden nur diejenigen angezeigt, die an ein bestimmtes Produkt gebunden sind, wenn das entsprechende Produkt aktiv ist.

Suchmaschinen können einfach eine URL erstellen und nur einen Treffer mit dieser URL als href bereitstellen. Gängige Suchmaschinen, die für eine API-Unterstützung eine Lizenz erfordern, können auf diese Weise per Plug-in integriert werden. Am anderen Ende des Spektrums können Suchmaschinen mit dem Server kommunizieren und einzelne Treffer mit Informationen wie z.B. Beschreibung, href, Kurzbeschreibung, Ergebnis, etc. empfangen. Lokale Hilfskomponenten können auf diese Weise Treffer generieren.

Unabhängig vom Suchmechanismus können Suchmaschinen mithilfe von JFace-Benutzervorgabenseiten verschiedene Einstellungen für den Suchbereich bereitstellen. Diese Seiten werden angezeigt, wenn der Link 'Erweiterte Einstellungen' in der Hilfesicht aktiviert wird. Zusätzlich zu den mit der Suchmaschine definierten Stammvorgabeseiten können für erweiterte Einstellungen weitere Sub-Seiten für Benutzervorgaben integriert werden.

Suchbereichseinstellungen werden anhand von Objekten des Typs IPreferenceStore geladen und gespeichert. Suchbereichseinstellungen für alle Suchmaschinen werden unter einer benannten Suchbereichsgruppe zusammengefasst. Bei ersten Öffnen wird die Standardsuchbereichsgruppe ('Default') erstellt, aber Benutzer können weitere Suchbereichsgruppen definieren und zwischen diesen hin- und herwechseln.

Da eine Unterstützung der Suche nach Verbundinformationen Teil des Plug-ins org.eclipse.help.base ist, wird eine Factory benötigt, um Suchbereichsobjekte aus den Daten im Benutzervorgabespeicher zu erstellen. Clients, die Benutzervorgabenseiten für den Suchbereich integrieren, müssen ebenfalls Suchbereichs-Factorys integrieren.

In diesem Erweiterungspunkt definierte Suchmaschinen werden standardmäßig nicht in der Benutzerschnittstelle angezeigt. Dort wird ein konkretes Exemplar einer Suchmaschine angezeigt, das individuell geändert werden kann. Produkte können das Hilfesystem mit einer Vielzahl von Exemplaren des registrierten Suchmaschinentyps vorkonfigurieren, möglicherweise mit Parameterangaben, so dass sie sich auf eine gewünschte Art und Weise verhalten. Darüber hinaus können Benutzer eigene Exemplare der registrierten Suchmaschinen hinzufügen und diese nach Belieben konfigurieren:

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