A nova pesquisa de informações federadas no sistema de Ajuda utiliza a noção de tipos de motores de pesquisa e de motores de pesquisa. Um tipo de motor é um meta-motor a partir do qual se pode criar vários motores de pesquisa concretos mediante parametrização.
Os novos tipos de motores são contributos de org.eclipse.help.ui.searchEngine:
Este ponto de extensão é utilizado para constituir plug-ins dos participantes na pesquisa de informações. 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.<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>
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:
<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>