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.
org.eclipse.help.search.ISearchEngine
. La clase es responsable de realizar la búsqueda basándose en una
consulta y un ámbito dados.org.eclipse.help.ui.RootScopePage
. Esta página contiene el conmutador principal del motor de búsqueda y se
utiliza normalmente para albergar widgets utilizados para restringir el ámbito de búsqueda del motor.org.eclipse.help.ui.ISearchScopeFactory
. La fábrica es responsable de crear objetos ISearchScope a partir
de valores almacenados en la clase IPreferenceStore
. Si se especifica pageClass
, la fábrica
de ámbito debe especificarse también.<!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.
org.eclipse.help.ui.ISearchScopePage
.<!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.
org.eclipse.core.runtime.Platform.getProduct()
). Si no se especifica, el motor aparecerá para todos
los productos.true
, el motor estará habilitado inicialmente. Los usuarios pueden alterar
temporalmente este valor en la UI.<!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.
<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}&ul=&ps=20&m=all"
>
</param>
</engine>
</extension>
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
.
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=allLos 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
.
Copyright (c) 2000, 2005 IBM Corporation y otros.
Reservados todos los derechos. Este programa y sus materiales adjuntos están
disponibles bajo los términos de la licencia pública común (Eclipse Public
License) v1.0 que acompaña a esta distribución, y está disponible en http://www.eclipse.org/legal/epl-v10.html