Lucene-Suchteilnehmer

org.eclipse.help.base.luceneSearchParticipants

3.2

Dieser Erweiterungspunkt sollte verwendet werden, um Dokumentinhalt zum Lucene-Suchindex hinzuzufügen. Es gibt zwei Fälle, in denen das Hinzufügen eines Suchteilnehmers sinnvoll sein kann:
  1. Dokumente, die im Inhaltsverzeichnis der Hilfefunktion registriert sind, jedoch nicht im HTML-Format vorhanden sind (sondern beispielsweise als XML-Datei) sollen indexiert werden. In diesem Fall muss der Teilnehmer Dateierweiterungen deklarieren, die er verarbeiten kann. Er wird aufgerufen, um jedes übereinstimmende Dokument zu indexieren. In diesem Fall hat der Teilnehmer den Geltungsbereich eines Plug-ins.
  2. Dokumente, die nicht zum Inhaltsverzeichnis der Hilfefunktion gehören, sollen indexiert werden. In diesem Fall erhält der Teilnehmer die Möglichkeit, alle ihm bekannten Dokumente auf einmal zu indexieren. Außerdem wird an den Teilnehmer die Task delegiert, das Suchergebnis zu öffnen, weil die Hilfefunktion Dokumente außerhalb des Inhaltsverzeichnisses nicht öffnen kann. In diesem Fall hat der Teilnehmer einen globalen Geltungsbereich.

Suchteilnehmer sind den Plug-ins zugeordnet, in denen die Erweiterung vorkommt. Um den Teilenehmer in anderen Plug-ins wiederverwenden zu können, sollte mit einem Element binding auf diese verwiesen werden. Diese Strategie verhindert, dass ein Plug-in seinen Teilnehmer im gesamten Produkt für die Dateierweiterungen erkennbar macht, für die er registriert ist. Durch das Hinzufügen eines expliziten Verweises deklariert das Plug-in, dass der Suchteilnehmer, auf den verwiesen wird, die Indexierung von Dokumenten mit den entsprechenden Erweiterungen vornehmen darf. Bei Dokumenten, die nicht im Inhaltsverzeichnis enthalten sind, besteht dieses Risiko nicht. Aus diesem Grund ist der Geltungsbereich global, und das Element binding sollte nicht verwendet werden.

<!ELEMENT extension (searchParticipant | binding)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT searchParticipant (participant?)>

<!ATTLIST searchParticipant

id          CDATA #REQUIRED

name        CDATA #IMPLIED

icon        CDATA #IMPLIED

participant CDATA #IMPLIED

extensions  CDATA #IMPLIED

headless    (true | false) "false">


<!ELEMENT participant (parameter*)>

<!ATTLIST participant

class CDATA #IMPLIED>


<!ELEMENT parameter EMPTY>

<!ATTLIST parameter

name  CDATA #REQUIRED

value CDATA #REQUIRED>


<!ELEMENT binding EMPTY>

<!ATTLIST binding

participantId CDATA #IMPLIED>


Das folgende Beispiel zeigt die Verwendung des Erweiterungspunktes:

  

<extension point=

"org.eclipse.help.base.luceneSearchParticipant"

>

<searchParticipant id=

"org.eclipse.myGlobalParticipant"

name=

"Global Participant"

icon=

"icons/mydoc.gif"

participant=

"org.eclipse.myPlugin.myPackage.MyGlobalParticipant"

headless=

"true"

/>

<searchParticipant id=

"org.eclipse.myXYZParticipant"

extensions=

"xyz"

participant=

"org.eclipse.myPlugin.myPackage.MyXYZParticipant"

/>

</extension>

Die bereitgestellte Klasse für den Suchteilnehmer muss die abstrakte Klasse org.eclipse.help.search.LuceneSearchParticipant erweitern.

Die Hilfefunktion stellt einen Suchteilnehmer für XHTML-Dateien (Erweiterung "xhtml") zur Verfügung. Plug-ins, deren Inhaltsverzeichnis dynamische XHTML-Dokumente enthält, müssen mit dem Element binding und der Zielteilnehmer-ID org.eclipse.help.base.xhtml ein Binding an diesen Teilnehmer herstellen.