Tipi di motori di ricerca federati

La nuova ricerca di informazioni federata nel sistema della guida utilizza i concetti di tipi di motore di ricerca e motori di ricerca. Un tipo di motore è un meta-motore dal quale possono essere creati per parametrizzazione numerosi motori di ricerca concreti.

I nuovi tipi di motore sono aggiunti tramite 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 of XYZ Search search the XYZ site.
		</description>
	</engineType>
Questo punto di estensione viene utilizzato per collegare i partecipanti alla ricerca nella ricerca di informazioni. Ogni motore di ricerca può essere configurato individualmente. Quando si avvia la ricerca, ogni motore di ricerca viene eseguito come un lavoro in background, e i risultati sono raccolti nella vista Guida immediatamente sotto la query.

I motori di ricerca qui definiti non verranno mostrati automaticamente come partecipanti alla ricerca federati fino a quando non viene stabilito il collegamento al prodotto, a meno che l'attributo productId non sia lasciato non definito. Per i motori che lo definiscono, solo i collegamenti ad un particolare prodotto vengono mostrati quando il prodotto è in esecuzione.

I motori di ricerca possono semplicemente comporre un URL e fornire solo un risultato che contiene un URL, quale href. I più diffusi motori di ricerca per i quali il supporto API richiede una licenza possono essere collegati in questo modo. D'altra parte, i motori di ricerca possono comunicare con il server e ricevere risultati individuali con informazioni quali etichetta, href, descrizione breve, livello, ecc. Il motore della guida locale può produrre risultati in questo modo.

Qualsiasi sia il meccanismo della ricerca, i motori possono fornire diverse impostazioni dell'ambito di ricerca utilizzando le pagine delle preferenze JFace. Queste pagine sono visualizzate quando si segue il collegamento "Impostazioni avanzate" dalla vista Guida. Oltre alle pagine delle preferenze principali definite con il motore, possono essere collegate altre pagine delle preferenze secondarie per utilizzare impostazioni più avanzate.

Le impostazioni di ambito sono caricate e archiviate memorizzando gli oggetti IPreferenceStore. Le impostazioni di ambito per tutti i motori sono raggruppate in un insieme di ambito denominato. Quando viene aperto per la prima volta, viene creato l'insieme di ambito predefinito (Default), ma gli utenti possono definire più insiemi di ambiti e passare dall'uno all'altro.

Dal momento che il supporto di ricerca federato è parte del plugin org.eclipse.help.base, è necessario un factory per creare gli oggetti di ambito della ricerca dai dati presenti nell'archivio delle preferenze. I client che collegano pagine delle preferenze di ambito devono collegare anche factory di ambito.

I motori definiti in questo punto di estensione non sono mostrati nell'interfaccia utente per impostazione predefinita. Quello che viene mostrato è un'istanza concreta del motore di ricerca che può essere modificata individualmente. I prodotti possono preconfigurare il sistema della guida con diverse istanze dei tipi di motore registrati, possibilmente parametrizzati per l'esecuzione. Inoltre, gli utenti possono aggiungere le proprie istanze dei motori registrati e configurarle in base alle esigenze:

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