Zoekengines invoegen

In verband met de nieuwe federatieve-informatiezoekfunctie in het Help-systeem vindt u hier enige uitleg over zoekenginetypen en zoekengines. Een enginetype is een meta-engine op basis waarvan een aantal concrete zoekengines kunnen worden gemaakt door parametrisering.

Nieuwe enginetypen worden aangeleverd met behulp van het extensiepunt org.eclipse.help.ui.searchEngine:

<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 van XYZ Search zoeken in de site XYZ.
		</description>
	</engineType>
Dit extensiepunt wordt gebruikt om zoekopdrachtdeelnemers toe te voegen aan de informatiezoekopdracht. Elke zoekengine kan afzonderlijk worden geconfigureerd. Wanneer de zoekopdracht wordt gestart, wordt elke zoekengine uitgevoerd als achtergrondtaak. De resultaten worden gesorteerd en direct onder de query weergegeven in de Help-view.

De zoekengines die hier zijn gedefinieerd worden pas automatisch als federatieve zoekopdrachtdeelnemers afgebeeld wanneer een engine-product-binding tot stand is gebracht, tenzij het kenmerk productId niet gedefinieerd wordt. Engines waarvoor dit kenmerk wel is gedefinieerd en die gebonden zijn aan een bepaald product, worden alleen afgebeeld wanneer dat product wordt uitgevoerd.

Zoekengines kunnen eenvoudig een URL samenstellen en slechts één treffer aanleveren met die URL als href. Populaire zoekengines waarvoor licenties nodig zijn om door de API te kunnen worden ondersteund, kunnen op deze wijze worden ingevoegd. Aan de andere kant kunnen zoekengines communiceren met de server en afzonderlijke treffers ontvangen met gegevens als een label, href, korte beschrijving, score, enzovoort. De lokale Help-engine kan op die manier treffers genereren.

Ongeacht het zoekmechanisme kunt u diverse zoekbereikinstellingen voor engines configureren op de JFace-voorkeurenpagina's. Deze pagina's worden afgebeeld wanneer u op de link 'Geavanceerde instellingen' in de Help-view klikt. Naast de basisvoorkeurenpagina's die met de engine worden gedefinieerd, kunnen aanvullende subvoorkeurenpagina's voor meer geavanceerde instellingen worden ingevoegd.

Bereikinstellingen worden geladen en opgeslagen met IPreferenceStore-objecten. Bereikinstellingen voor alle engines worden gegroepeerd in een benoemde bereikset. De eerste keer wordt een standaardbereikset ('Default') gemaakt, maar gebruikers kunnen meer bereiksets definiëren en vervolgens van set wisselen.

Omdat federatieve zoekondersteuning deel uitmaakt van de plugin org.eclipse.help.base, is er een factory nodig om zoekbereikobjecten te maken op basis van de gegevens in het voorkeurenarchief. Clients die bereikvoorkeurenpagina's willen invoegen moeten ook bereikfactory's invoegen.

Engines die in dit extensiepunt worden gedefinieerd, worden niet standaard in de gebruikersinterface afgebeeld. Wat hier is afgebeeld, is een concrete instance van een zoekengine die afzonderlijk kan worden aangepast. In producten kan het Help-systeem vooraf worden geconfigureerd met een aantal instances van de geregistreerde enginetypen, die mogelijk geparametriseerd zijn om te worden uitgevoerd volgens een gewenst gedrag. Daarnaast kunnen gebruikers zelf instances van de geregistreerde engines toevoegen en deze naar wens configureren:

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