Motor de búsqueda

org.eclipse.help.ui.searchEngine

3.1

Este punto de extensión se utiliza para conectar los participantes de búsqueda en la búsqueda de ayuda federada. 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.

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 plug-in 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.

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

define un tipo determinado de motor de búsqueda. El tipo de motor de búsqueda puede utilizarse para crear instancias de motor concretas, ya sea por parte del usuario o precargadas por el producto. Para que sean útiles, los tipos de motor deben ser configurables de forma que varios motores puedan crearse utilizando un solo tipo de motor.



<!ELEMENT description (#PCDATA)>

una descripción breve del motor de búsqueda



<!ELEMENT subpage EMPTY>

<!ATTLIST subpage

id       CDATA #REQUIRED

label    CDATA #REQUIRED

class    CDATA #IMPLIED

category CDATA #REQUIRED>

una página hijo de la página de preferencias de ámbito definida en el elemento engine. Si el atributo del motor pageClass no está definido, se ignorarán las subpáginas.



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

<!ATTLIST engine

productId    CDATA #IMPLIED

engineTypeId CDATA #REQUIRED

enabled      (true | false)

label        CDATA #IMPLIED

id           CDATA #REQUIRED>

Especifica una instancia concreta de un tipo de motor de búsqueda determinado. Las instancias pueden estar enlazadas con el producto para que se muestren solamente cuando ese producto esté activo. El motor puede tener sus propias etiqueta y descripción. Si no se especifica, se utilizarán los datos de tipo de motor. Finalmente, cada tipo de motor define un conjunto de parámetros válido que se le puede pasar y que puede configurarlo. Los motores pueden especificar valores de estos parámetros.



<!ELEMENT param EMPTY>

<!ATTLIST param

name  CDATA #REQUIRED

value CDATA #REQUIRED>

un parámetro opcional que se utiliza para configurar esta instancia de un tipo de motor de búsqueda. Los parámetros válidos están definidos por el tipo de motor.



Este es el ejemplo de la extensión de búsqueda de ayuda:

   

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

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

</extension>

El atributo class del elemento engineType debe proporcionar un nombre totalmente calificado de la clase que implementa org.eclipse.help.search.ISearchEngine. El atributo pageClass debe proporcionar un nombre totalmente calificado de la clase que amplía org.eclipse.help.ui.RootScopePage. El atributo scopeFactory debe proporcionar un nombre totalmente calificado de la clase que implementa org.eclipse.help.ui.ISearchScopeFactory. El atributo class del elemento subpage debe proporcionar un nombre totalmente calificado de una clase que implementa org.eclipse.help.ui.ISearchScopePage.

El plug-in de la UI de ayuda proporciona tipos de motores de búsqueda para la documentación de ayuda local, la búsqueda en InfoCenter y Web, así como la instancia del motor de búsqueda de la ayuda local. Esta instancia no acepta parámetros ni tiene un Id de producto por lo que aparecerá en cada producto.

Los productos pueden crear instancias concretas de las búsquedas de InfoCenter y Web utilizando su id de motor y los parámetros necesarios.

El tipo de motor de InfoCenter tiene el engineId org.eclipse.help.ui.infoCenter y acepta un parámetro url que señala al servidor remoto en el que está instalado el InfoCenter. Los resultados se muestran de la misma forma que los resultados de la búsqueda local.

El tipo de motor de búsqueda tiene el id de motor org.eclipse.help.ui.web y acepta un parámetro url que representa una consulta de búsqueda concreta con la serie de búsqueda real sustituida por un símbolo de sustitución '{expression}' como en el ejemplo siguiente:

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

Los resultados de la búsqueda Web se muestran como un enlace que abrirá el navegador Web con la serie de búsqueda sustituida en el parámetro url.