La nueva búsqueda de información federada en el sistema de ayuda utiliza la noción de tipos de motor de búsqueda y motores de búsqueda. Un tipo de motor es un metamotor a partir del cual pueden crearse varios motores de búsqueda concretos mediante parametrización.
Se contribuyen nuevos tipos de motor mediante org.eclipse.help.ui.searchEngine:
Este punto de extensión se utiliza para conectar participantes de la búsqueda en la búsqueda de información. Cada motor de búsqueda puede configurarse individualmente. Cuando se inicia la búsqueda, cada motor de búsqueda se ejecuta como trabajo de segundo plano y los resultados se clasifican en la vista de ayuda inmediatamente debajo de la consulta.<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>
Los motores de búsqueda definidos aquí no se muestran automáticamente como
participantes de búsqueda federada hasta que se establece el enlace de producto
de motor, a menos que se deje sin definir el atributo
productId
. Para los motores que lo definen, sólo los definidos en un
producto específico se mostrará cuando se ejecute ese producto.
Los motores de búsqueda pueden limitarse a componer un URL y proporcionar
sólo una coincidencia que contenga ese URL como href
. Así pueden
conectarse los motores
de búsqueda más populares para los que el soporte de API requiere licencia.
En el otro extremo del espectro, los motores de búsqueda pueden comunicarse con
el servidor y recibir coincidencias individuales con información tal como
etiqueta, href, descripción breve, puntuación, etc.
El motor de ayuda local puede producir coincidencias de esta manera.
Independientemente del mecanismo de búsqueda los motores pueden proporcionar diversos valores de ámbito de búsqueda utilizando páginas de preferencias de JFace. Estas páginas se muestran cuando el enlace 'Valores avanzados' va seguido de la vista de Ayuda. Además de las páginas de preferencia de raíz definidas con el motor, pueden conectarse subpáginas de preferencia adicionales para valores más avanzados.
Los valores de ámbito se cargan y se almacenan utilizando objetos
IPreferenceStore
.
Los valores de ámbito para todos los motores se agrupan bajo un conjunto de
ámbitos con nombre. Cuando se abre por primera vez, se crea el conjunto
de ámbitos por omisión ('Default'), pero los usuarios pueden definir más
conjuntos de ámbitos y conmutar entre ellos.
Dado que el soporte de búsqueda federada forma parte del conector
org.eclipse.help.base
, es necesaria una factoría para crear
objetos de ámbito de búsqueda a partir de los datos del almacén de preferencias.
Es necesario que los clientes que se conecten a páginas de preferencias de
ámbito se conecten también a factorías de ámbito.
Los motores definidos en este punto de extensión no se muestran por omisión en la UI. Lo que se muestra es una instancia concreta de un motor de búsqueda que puede modificarse individualmente. Los productos pueden preconfigurar el sistema de ayuda con diversas instancias de los tipos de motor registrados, posiblemente parametrizadas para funcionar de la manera deseada. Además, los usuarios pueden añadir sus propias instancias de motores registrados y configurarlas a su gusto:
<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}&ul=&ps=20&m=all"> </param> </engine>