Moteur de recherche

org.eclipse.help.ui.searchEngine

3.1

Ce point d'extension permet de connecter des participants à la recherche d'informations dans la recherche d'aide fédérée. 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.

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 d'attribut 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.

<!ELEMENT extension (engineType* , engine*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT engineType (description? , subpage*)>

<!ATTLIST engineType

id           CDATA #REQUIRED

label        CDATA #REQUIRED

icon         CDATA #IMPLIED

class        CDATA #REQUIRED

pageClass    CDATA #IMPLIED

scopeFactory CDATA #IMPLIED>

définit un type de moteur de recherche spécifique. Le type de moteur peut être utilisé pour créer des instances de moteur concrètes par l'utilisateur ou préchargées par le produit. Pour être utiles, les types de moteur doivent être configurables de sorte qu'un nombre de moteurs puissent être créés à l'aide d'un seul et même type de moteur.



<!ELEMENT description (#PCDATA)>

brève description du moteur de recherche



<!ELEMENT subpage EMPTY>

<!ATTLIST subpage

id       CDATA #REQUIRED

label    CDATA #REQUIRED

class    CDATA #IMPLIED

category CDATA #REQUIRED>

Page enfant de la page de préférences de la portée racine définie dans l'élément engine. Si l'attribut pageClass n'est pas défini, les sous-pages seront ignorées.



<!ELEMENT engine (description? , param*)>

<!ATTLIST engine

productId    CDATA #IMPLIED

engineTypeId CDATA #REQUIRED

enabled      (true | false)

label        CDATA #IMPLIED

id           CDATA #REQUIRED>

Indique une instance concrète d'un type de moteur de recherche. L'instance peut être associée au produit afin d'indiquer uniquement lorsque ce produit est actif. Le moteur peut posséder un libellé et une description propres. Si rien n'est indiqué, les données du type de moteur seront utilisées. Enfin, chaque type de moteur définit un ensemble de paramètres valide pouvant être transmis au moteur pour le configurer. Les moteurs peuvent indiquer les valeurs de ces paramètres.



<!ELEMENT param EMPTY>

<!ATTLIST param

name  CDATA #REQUIRED

value CDATA #REQUIRED>

paramètre facultatif utilisé pour configurer cette instance d'un type de moteur de recherche. Les paramètres valides sont définis par le type de moteur.



Voici un exemple illustrant l'extension de la recherche d'aide :

   

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

<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}&amp;ul=&amp;ps=20&amp;m=all"

>

</param>

</engine>

</extension>

L'attribut class de l'élément engineType doit indiquer un nom qualifié complet de la classe qui implémente org.eclipse.help.search.ISearchEngine. L'attribut pageClass doit indiquer un nom qualifié complet de la classe qui étend org.eclipse.help.ui.RootScopePage. L'attribut scopeFactory doit indiquer un nom qualifié complet de la classe qui implémente org.eclipse.help.ui.ISearchScopeFactory. L'attribut class de l'élément subpage doit indiquer un nom qualifié complet d'une classe qui implémente org.eclipse.help.ui.ISearchScopePage.

Le plug-in de l'interface utilisateur d'aide fournit des types de moteur de recherche pour la documentation de l'aide locale, le centre de documentation et la recherche sur le Web, ainsi que l'instance de moteur de recherche de l'aide locale. Cette instance n'accepte pas les paramètres et ne comporte pas d'ID produit. Elle apparaît donc dans tous les produits.

Les produits peuvent créer des instances concrètes de centres de documentation et de recherches sur le Web à l'aide de leur ID moteur et des paramètres nécessaires.

Le type de moteur de centre de documentation comporte l'élément engineId org.eclipse.help.ui.infoCenter et accepte un paramètre url qui pointe sur le serveur distant sur lequel le centre de documentation est installé. Les résultats s'affichent de la même manière que ceux de l'aide locale.

Le type de moteur de recherche sur le Web comporte l'ID moteur org.eclipse.help.ui.web et accepte un paramètre url. Celui-ci représente une requête de moteur concrète, dont la chaîne de recherche actuelle est remplacée par un symbole de remplacement '{expression}', comme dans l'exemple ci-dessous :

http://eclipse.org/search/search.cgi?q={expression}&ul=&ps=20&m=all

Les résultats de la recherche sur le Web s'affichent sous la forme d'un lien qui ouvre le navigateur Web à l'aide de la chaîne de recherche remplacée dans le paramètre url.