Os motores de pesquisa definidos aqui não aparecem automaticamente como participantes na pesquisa federada enquanto não for estabelecida a associação dos produtos motores, a menos que o atributo
productId
fique indefinido. No caso dos motores que o definem, só
aqueles associados a determinado produto aparecem quando esse produto estiver
em execução.
Os motores de pesquisa podem simplesmente compor um URL e fornecer somente um acerto que contenha o URL como href. Os motores de pesquisa populares para os quais o suporte de API requer licença podem constituir plug-ins desta maneira. Do outro lado do espectro, os motores de pesquisa podem comunicar com o servidor e receber acertos individuais com informações como etiqueta, href, descrição breve, pontuação, etc. O motor de ajuda local pode produzir acertos desta maneira.
Seja qual for o mecanismo de pesquisa, os motores podem fornecer várias definições de âmbitos de pesquisa com as páginas de preferências JFace. Estas páginas são mostradas quando a ligação 'Definições Avançadas' é seguida a partir da vista Ajuda. Além das páginas de preferências raiz definidas com o motor, sub-páginas de preferências adicionais podem constituir plug-ins para obter definições mais avançadas.
As definições de âmbito são carregadas e armazenadas mediante objectos IPreferenceStore
. As definições de âmbito de todos os motores são agrupadas num conjunto de âmbito denominado. Quando se abrem pela primeira vez, é criado um conjunto de âmbito predefinido ('Predefinição'), mas os utilizadores podem definir mais conjuntos de âmbito e alternar entre eles.
Dado que o suporte de pesquisa federada faz parte do plug-in org.eclipse.help.base
, é necessária uma fábrica para criar objectos de âmbito de pesquisa a partir dos dados no arquivo de preferências. Os clientes que constituem plug-ins de páginas de preferências de âmbito também devem constituir plug-ins de fábricas de âmbito.
Os motores definidos neste ponto de extensão não aparecem na UI por predefinição. O que é apresentado nela é uma instância concreta de um motor de pesquisa que pode ser modificada individualmente. Os produtos podem pré-configurar o sistema de ajuda com várias instâncias dos tipos de motores registados, possivelmente parametrizados para funcionarem da maneira pretendida. Além disso, os utilizadores podem adicionar instâncias próprias dos motores registados e configurá-los a seu gosto.
<!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 um determinado tipo de motor de pesquisa. O tipo de motor de pesquisa pode ser utilizado para criar instâncias de motores concretos pelo utilizador ou pré-carregadas pelo produto. Para que se tornem mais úteis, os tipos de motores têm de ser configuráveis de modo a que vários motores possam ser criados através da utilização de um único tipo de motor.
org.eclipse.help.search.ISearchEngine
. A classe é responsável pela
pesquisa baseada numa determinada procura ou num determinado âmbito. org.eclipse.help.ui.RootScopePage
. Esta página retém o comutador
principal do motor de pesquisa e é geralmente utilizada para alojar widgets
utilizados para diminuir o âmbito de pesquisa do motor. org.eclipse.help.ui.ISearchScopeFactory
. O fornecedor é
responsável pela criação de objectos ISearchScope a partir das definições
armazenadas na classe IPreferenceStore
. Se pageClass
for especificada, o fornecedor do âmbito também terá de ser especificado. <!ELEMENT description (#PCDATA)>
uma breve descrição do motor de pesquisa
<!ELEMENT subpage EMPTY>
<!ATTLIST subpage
id CDATA #REQUIRED
label CDATA #REQUIRED
class CDATA #IMPLIED
category CDATA #REQUIRED>
uma página descendente da página de preferências no âmbito da raiz definida no
elemento engine
. Se o atributo do motor pageClass
não
for definido, as sub-páginas serão ignoradas.
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 uma instância concreta de um determinado tipo de motor de pesquisa. As instâncias podem estar associadas ao produto de modo a surgir apenas quando o produto estiver activo. O motor pode ter a sua própria etiqueta e descrição. Se não for especificado, serão utilizados dados de tipos de motores. Finalmente, cada tipo de motor define um conjunto válido de parâmetros que podem ser transmitidos para o configurar. Os motores podem especificar os valores destes parâmetros.
org.eclipse.core.runtime.Platform.getProduct()
).
Se não estiver especificado, o motor será apresentado para todos os produtos. true
, o motor será activado inicialmente.
Os utilizadores podem substituir este valor no UI.<!ELEMENT param EMPTY>
<!ATTLIST param
name CDATA #REQUIRED
value CDATA #REQUIRED>
um parâmetro opcional utilizado para configurar esta instância de um tipo de motor de pesquisa. Os parâmetros válidos são definidos pelo 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
do elemento engineType
tem de facultar um nome
totalmente qualificado da classe que implementa org.eclipse.help.search.ISearchEngine
.
O atributo pageClass
tem de facultar um nome totalmente
qualificado da classe que expande org.eclipse.help.ui.RootScopePage
.
O atributo scopeFactory
tem de facultar um nome totalmente
qualificado da classe que implementa org.eclipse.help.ui.ISearchScopeFactory
.
O atributo class
do elemento subpage
tem de facultar
um nome totalmente qualificado de uma classe que implementa org.eclipse.help.ui.ISearchScopePage
.
Os produtos podem criar instância concretas do InfoCenter e pesquisas da Web ao utilizar o respectivo id de motor e os parâmetros requeridos.
O tipo de motos do InfoCenter contém um id de motor org.eclipse.help.ui.infoCenter
e aceita um parâmetro
url
que indica o servidor remoto em que o InfoCenter está instalado. Os resultados são apresentados da mesma forma que os resultados da ajuda local.
O tipo de motor do Web search contém id de motor
org.eclipse.help.ui.web
e aceita um parâmetro url
que
representa uma consulta de pesquisa concreta cuja cadeia de pesquisa actual
tenha sido substituída pelo símbolo de substituição '{expression}', como é
apresentado no seguinte exemplo:
http://eclipse.org/search/search.cgi?q={expression}&ul=&ps=20&m=allOs resultados da pesquisa da Web são apresentados como uma ligação que irá abrir o browser da Web com a cadeia de pesquisa substituída no parâmetro
url
.
Copyright (c) 2000, 2005 IBM Corporation e outros.
Todos os direitos reservados. Este programa e os materiais que o acompanham estão disponíveis sob os termos da Eclipse Public License v1.0, que acompanha esta distribuição, e estão disponíveis em http://www.eclipse.org/legal/epl-v10.html