Motore di ricerca

org.eclipse.help.ui.searchEngine

3.1

Questo punto di estensione viene utilizzato per collegare i partecipanti alla ricerca nella ricerca della guida federata. Ogni motore di ricerca può essere configurato individualmente. Quando si avvia la ricerca, ogni motore di ricerca viene eseguito come un lavoro in background, e i risultati sono raccolti nella vista Guida immediatamente sotto la query.

I motori di ricerca qui definiti non verranno mostrati automaticamente come partecipanti alla ricerca federati fino a quando non viene stabilito il collegamento al prodotto, a meno che l'attributo productId non sia lasciato non definito. Per i motori che lo definiscono, solo i collegamenti ad un particolare prodotto vengono mostrati quando il prodotto è in esecuzione.

I motori di ricerca possono semplicemente comporre un URL e fornire solo un risultato che contiene un URL, quale href. I più diffusi motori di ricerca per i quali il supporto API richiede una licenza possono essere collegati in questo modo. D'altra parte, i motori di ricerca possono comunicare con il server e ricevere risultati individuali con informazioni quali etichetta, href, descrizione breve, livello, ecc. Il motore della guida locale può produrre risultati in questo modo.

Qualsiasi sia il meccanismo della ricerca, i motori possono fornire diverse impostazioni dell'ambito di ricerca utilizzando le pagine delle preferenze JFace. Queste pagine sono visualizzate quando si segue il collegamento "Impostazioni avanzate" dalla vista Guida. Oltre alle pagine delle preferenze principali definite con il motore, possono essere collegate altre pagine delle preferenze secondarie per utilizzare impostazioni più avanzate.

Le impostazioni di ambito sono caricate e archiviate memorizzando gli oggetti IPreferenceStore. Le impostazioni di ambito per tutti i motori sono raggruppate in un insieme di ambito denominato. Quando viene aperto per la prima volta, viene creato l'insieme di ambito predefinito (Default), ma gli utenti possono definire più insiemi di ambiti e passare dall'uno all'altro.

Dal momento che il supporto di ricerca federato è parte del plugin org.eclipse.help.base, è necessario un factory per creare gli oggetti di ambito della ricerca dai dati presenti nell'archivio delle preferenze. I client che collegano pagine delle preferenze di ambito devono collegare anche factory di ambito.

I motori definiti in questo punto di estensione non sono mostrati nell'interfaccia utente per impostazione predefinita. Quello che viene mostrato è un'istanza concreta del motore di ricerca che può essere modificata individualmente. I prodotti possono preconfigurare il sistema della guida con diverse istanze dei tipi di motore registrati, possibilmente parametrizzati per l'esecuzione. Inoltre, gli utenti possono aggiungere le proprie istanze dei motori registrati e configurarle in base alle esigenze.

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

Definisce un determinato tipo di motore di ricerca. Il tipo di motore di ricerca può essere utilizzato per creare istanze di motore concrete dall'utente o pre-caricate dal prodotto. Per poter essere utili, i tipi di motore devono essere configurati in modo che possa essere creato un determinato numero di motori mediante un unico tipo.



<!ELEMENT description (#PCDATA)>

Una breve descrizione del motore di ricerca



<!ELEMENT subpage EMPTY>

<!ATTLIST subpage

id       CDATA #REQUIRED

label    CDATA #REQUIRED

class    CDATA #IMPLIED

category CDATA #REQUIRED>

Un pagina secondaria della pagina delle preferenze dell'ambito root definita nell'elemento engine. Se l'attributo del motore pageClass non è definito, le pagine secondarie verranno ignorate.



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

<!ATTLIST engine

productId    CDATA #IMPLIED

engineTypeId CDATA #REQUIRED

enabled      (true | false)

label        CDATA #IMPLIED

id           CDATA #REQUIRED>

Specifica un'istanza concreta di un determinato tipo di motore di ricerca. L'istanza può essere collegata al prodotto in modo da essere visualizzata solo quando il prodotto è attivo. Un motore può avere la propria etichetta e la propria descrizione. Se non specificato diversamente, verranno utilizzati i dati del tipo di motore. Infine, ogni tipo di motore definisce un insieme di parametri validi che possono essere inoltrati per la relativa configurazione. I motori possono specificare i valori di questi parametri.



<!ELEMENT param EMPTY>

<!ATTLIST param

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Un parametro facoltativo utilizzato per configurare questa istanza di un tipo di motore di ricerca. I parametri validi sono definiti dal tipo di motore.



Di seguito è riportato un esempio di estensione di ricerca della guida:

   

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

>

<descrizione>

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"

>

<descrizione>

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

L'attributo class dell'elemento engineType deve fornire un nome completo della classe che implementa org.eclipse.help.search.ISearchEngine. L'attributo pageClass deve fornire un nome completo della classe che estende org.eclipse.help.ui.RootScopePage. L'attributo scopeFactory deve fornire un nome completo della classe che implementa org.eclipse.help.ui.ISearchScopeFactory. L'attributo class dell'elemento subpage deve fornire un nome completo di una classe che implementa org.eclipse.help.ui.ISearchScopePage.

Il plug-in dell'interfaccia utente della guida fornisce tipi di motori di ricerca per la documentazione locale, per il centro informazioni e la ricerca Web oltre che una istanza del motore di ricerca della guida locale. Questa istanza non accetta parametri e non ha un ID di prodotto, pertanto verrà visualizzato per ogni prodotto.

I prodotti possono creare istanze concrete di ricerche Web e nel centro informazioni utilizzando il relativo ID del motore e i parametri richiesti.

Il tipo di motore InfoCenter ha engineId org.eclipse.help.ui.infoCenter e accetta un parametro url che fa riferimenti al server remoto su cui è installato il centro informazioni. I risultati sono visualizzati nello stesso modo in cui sono visualizzati i risultati della guida locale.

Il tipo di motore di ricerca Web ha un ID di motore org.eclipse.help.ui.web e accetta un parametro url che rappresenta una query di ricerca concreta con la stringa di ricerca corrente con un simbolo di sostituzione '{expression}', come riportato nel seguente esempio:

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

I risultati della ricerca Web vengono visualizzati come un unico collegamento che apre il browser Web con la stringa di ricerca sostituita nel parametro url.