Motor de Pesquisa

org.eclipse.help.ui.searchEngine

3.1

Este ponto de extensão é utilizado para conectar participantes na pesquisa na pesquisa de ajuda federada. Cada motor de pesquisa pode ser configurado individualmente. Quando a pesquisa é iniciada, cada motor de pesquisa é executado como trabalho de segundo plano, e os resultados são intercalados na vista de ajuda imediatamente abaixo da consulta.

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.



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



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



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



De seguida é apresentado um exemplo da extensão da pesquisa da ajuda:

   

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

O atributo 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.

O plug-in da UI de ajuda faculta tipos de motores de pesquisa para a documentação de ajuda local, para o InfoCenter e para a pesquisa da Web, bem como instâncias de motores de pesquisa da ajuda local. Esta instância não aceita parâmetros e não tem ID de produto, e, por conseguinte, será apresentada em todos os produtos.

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

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