La nouvelle recherche d'informations fédérée du système d'aide utilise la notion de types de moteurs de recherche et de moteurs de recherche. Un type de moteur est un méta-moteur à partir duquel plusieurs moteurs de recherche concrets peuvent être créés par paramétrisation.
Les nouveaux types de moteurs sont fournis via org.eclipse.help.ui.searchEngine :
Ce point d'extension permet de connecter des participants à la recherche d'informations. Chaque moteur de recherche peut être configuré individuellement. Lorsque la recherche est initiée, chaque moteur de recherche est exécuté en tant que travail d'arrière-plan et les résultats sont fusionnés dans la vue de l'aide, immédiatement sous la requête.<extension point="org.eclipse.help.ui.searchEngine"> <engineType scopeFactory="com.example.xyz.XYZScopeFactory" label="Recherche XYZ" class="com.example.xyz.search.XYZSearch" icon="icons/etool16/xyzsearch.gif" pageClass="com.example.xyz.search.XYZSearchPage" id="com.example.xyz.XYZSearch"> <description> Les instances de Recherche XYZ procèdent aux recherches dans le site XYZ. </description> </engineType>
Les moteurs de recherche définis ici ne s'afficheront automatiquement comme participants à la recherche fédérée qu'après la liaison du produit du moteur, à moins que l'attribut
productId
ne soit pas défini. Concernant les moteurs qui le définissent, seuls ceux liés à un produit particulier s'afficheront lorsque ce produit est en cours d'exécution.
Les moteurs de recherche peuvent simplement composer une URL et fournir une seule occurrence contenant cette URL sous forme de href
. Les moteurs de recherche les plus courants pour lesquels le support API nécessite une licence peuvent être connectés de cette manière. A l'autre extrémité du spectre,
les moteurs de recherche peuvent communiquer avec le serveur et recevoir des occurrences individuelles contenant des informations telles que le libellé, le href, une brève description, le score, etc. Le moteur d'aide local peut produire des occurrences de cette manière.
Indépendamment du mécanisme de recherche, les moteurs peuvent fournir différents paramètres de portée de recherche au moyen des pages de préférences JFace. Ces pages s'affichent lorsque le lien 'Paramètres avancés' est suivi à partir de la vue Aide. Outre les pages de préférences racine définies avec le moteur, des sous-pages de préférences supplémentaires peuvent être connectées en vue de définir des paramètres plus avancés.
Les paramètres de portée sont chargés et stockés au moyen des objets IPreferenceStore
. Les paramètres de portée de tous les moteurs sont regroupés dans un
ensemble de portées nommé. A la première ouverture, l'ensemble de portées par défaut ('Valeur par défaut') est créé, mais les utilisateurs peuvent définir davantage d'ensembles de portées et basculer de l'un vers l'autre.
Le support de recherche fédérée faisant partie du plug-in org.eclipse.help.base
, une fabrique est requise pour créer des objets de portée de recherche à partir des données du magasin de préférences. Les clients qui se connectent aux pages de préférences de portée doivent se connecter également aux fabriques de portées.
Les moteurs définis dans ce point d'extension ne s'affichent pas dans l'interface par défaut. Ce qui s'affiche, c'est une instance concrète de moteur de recherche qui peut être modifiée individuellement. Les produits peuvent préconfigurer le système d'aide au moyen de plusieurs instances des types de moteurs enregistrés, lesquelles peuvent être paramétrisées en vue de se comporter de la manière souhaitée. En outre, les utilisateurs peuvent ajouter leurs propres instances de moteurs enregistrés et les configurer comme ils le souhaitent :
<engine enabled="true" engineTypeId="com.example.xyz.search.XYZSearch" id="com.example.xyz.XYZSearch" label="Recherche 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}&ul=&ps=20&m=all"> </param> </engine>