Zoekmachine

org.eclipse.help.ui.searchEngine

3.1

Dit extensiepunt wordt gebruikt om zoekopdrachtdeelnemers toe te voegen aan de federatieve Help-zoekopdracht. Elke zoekmachine kan afzonderlijk worden geconfigureerd. Wanneer de zoekopdracht wordt gestart, wordt elke zoekmachine uitgevoerd als achtergrondtaak. De resultaten worden gesorteerd en direct onder de query weergegeven in de Help-view.

De zoekmachines die hier zijn gedefinieerd worden pas automatisch als federatieve zoekopdrachtdeelnemers afgebeeld wanneer een zoekmachine-product-binding tot stand is gebracht, tenzij het kenmerk productId niet gedefinieerd wordt. Zoekmachines waarvoor dit kenmerk wel is gedefinieerd en die gebonden zijn aan een bepaald product, worden alleen afgebeeld wanneer dat product wordt uitgevoerd.

Zoekmachines kunnen eenvoudig een URL samenstellen en slechts één treffer aanleveren met die URL als href. Populaire zoekmachines waarvoor licenties nodig zijn om door de API te kunnen worden ondersteund, kunnen op deze wijze worden ingevoegd. Aan de andere kant kunnen zoekmachines communiceren met de server en afzonderlijke treffers ontvangen met gegevens als een label, href, korte beschrijving, score, enzovoort. De lokale Help-zoekmachine kan op die manier treffers genereren.

Ongeacht het zoekmechanisme kunt u diverse zoekbereikinstellingen voor zoekmachines configureren op de JFace-voorkeurenpagina's. Deze pagina's worden afgebeeld wanneer u op de link 'Geavanceerde instellingen' in de Help-view klikt. Naast de basisvoorkeurenpagina's die met de zoekmachine worden gedefinieerd, kunnen aanvullende subvoorkeurenpagina's voor meer geavanceerde instellingen worden ingevoegd.

Bereikinstellingen worden geladen en opgeslagen met IPreferenceStore-objecten. Bereikinstellingen voor alle zoekmachines worden gegroepeerd in een benoemde bereikset. De eerste keer wordt een standaardbereikset ('Default') gemaakt, maar gebruikers kunnen meer bereiksets definiëren en vervolgens van set wisselen.

Omdat federatieve zoekondersteuning deel uitmaakt van de plugin org.eclipse.help.base, is er een factory nodig om zoekbereikobjecten te maken op basis van de gegevens in het voorkeurenarchief. Clients die bereikvoorkeurenpagina's willen invoegen moeten ook bereikfactory's invoegen.

Zoekmachines die in dit extensiepunt worden gedefinieerd, worden niet standaard in de gebruikersinterface afgebeeld. Wat hier is afgebeeld, is een concrete instance van een zoekmachine die afzonderlijk kan worden aangepast. In producten kan het Help-systeem vooraf worden geconfigureerd met een aantal instances van de geregistreerde zoekmachinetypen, die mogelijk geparametriseerd zijn om te worden uitgevoerd volgens een gewenst gedragspatroon. Daarnaast kunnen gebruikers zelf instances van de geregistreerde zoekmachines toevoegen en deze naar wens configureren.

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

definieert een bepaald type zoekmachine. Het zoekmachinetype kan worden gebruikt om concrete zoekmachine-instances te maken per gebruiker of deze vooraf te laden per product. Om bruikbaar te zijn, moeten zoekmachinetypen configureerbaar zijn zodat een aantal zoekmachines kan worden gemaakt met behulp van een enkel zoekmachinetype.



<!ELEMENT description (#PCDATA)>

Een korte beschrijving van de zoekmachine



<!ELEMENT subpage EMPTY>

<!ATTLIST subpage

id       CDATA #REQUIRED

label    CDATA #REQUIRED

class    CDATA #IMPLIED

category CDATA #REQUIRED>

Een onderliggende pagina naar de hoofdbereikvoorkeurenpagina die is gedefinieerd in het element engine. Als het zoekmachinekenmerk pageClass niet gedefinieerd is, worden subpagina's genegeerd.



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

<!ATTLIST engine

productId    CDATA #IMPLIED

engineTypeId CDATA #REQUIRED

enabled      (true | false)

label        CDATA #IMPLIED

id           CDATA #REQUIRED>

Hiermee wordt een concrete instance van een bepaald zoekmachinetype opgegeven. Deze instance kan gekoppeld zijn aan het product en verschijnt alleen als dat product actief is. De zoekmachine kan een eigen label en beschrijving hebben. Als u niets opgeeft, worden de gegevens van het zoekmachinetype gebruikt. Tenslotte wordt met elk zoekmachinetype een geldige set parameters gedefinieerd die kunnen worden doorgegeven om de zoekmachine te configureren. Zoekmachines kunnen waarden voor deze parameters opgeven.



<!ELEMENT param EMPTY>

<!ATTLIST param

name  CDATA #REQUIRED

value CDATA #REQUIRED>

een optionele parameter die wordt gebruikt om deze instance van een zoekenginetype te configureren. Geldige parameters worden gedefinieerd per zoekmachinetype.



Dit is een voorbeeld van de extensie van de Help-zoekopdracht:

   

<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 van XYZ Search zoeken in de site XYZ.

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

Het kenmerk class van het element engineType moet een volledig gekwalificeerde naam bevatten van de klasse die org.eclipse.help.search.ISearchEngine implementeert. Het kenmerk pageClass moet een volledig gekwalificeerde naam bevatten van de klasse die org.eclipse.help.ui.RootScopePage uitbreidt. Het kenmerk scopeFactory moet een volledig gekwalificeerde naam bevatten van de klasse die org.eclipse.help.ui.ISearchScopeFactory implementeert. Het kenmerk class van het element subpage moet een volledig gekwalificeerde naam bevatten van een klasse die org.eclipse.help.ui.ISearchScopePage implementeert.

De plugin voor de Help-gebruikersinterface bevat zoekmachinetypes voor lokale Help-documentatie, InfoCenter en zoekopdrachten voor internet, en een lokale Help-zoekmachine-instance. Deze instance accepteert geen parameters en heeft geen product-ID en verschijnt daarom in elk product.

Producten kunnen concrete instances van InfoCenter en zoekopdrachten voor internet maken met behulp van hun zoekmachine-ID en de vereiste parameters.

Het zoekmachinetype voor het Informatiecentrum heeft zoekmachine-IDorg.eclipse.help.ui.infoCenter en accepteert een parameter url die verwijst naar de server op afstand waarop het Informatiecentrum is geïnstalleerd. De resultaten worden op dezelfde manier afgebeeld als de lokale Help-resultaten.

Het zoekmachinetype voor internet heeft zoekmachine-ID org.eclipse.help.ui.web en accepteert een parameter url die een concrete zoekquery vertegenwoordigt waarbij de daadwerkelijk zoekreeks wordt vervangen door een vervangingssymbool '{expression}', zoals in het volgende voorbeeld:

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

Internetzoekresultaten worden afgebeeld als een link waarmee de webbrowser wordt geopend en de zoekreeks in de parameter url wordt vervangen.