Uczestnicy wyszukiwania (Lucene)

org.eclipse.help.base.luceneSearchParticipants

3.2

Opisywany punkt rozszerzenia służy do dodawania treści dokumentów do indeksu wyszukiwania mechanizmu Lucene. Poniżej opisano dwa przypadki, w których dodaje się uczestników wyszukiwania.
  1. Indeksowanie dokumentów zarejestrowanych w spisie treści systemu pomocy, które utworzono w formacie innym niż HTML (np. XML). W tym przypadku uczestnik wyszukiwania musi zadeklarować obsługiwane przez siebie rozszerzenia plików i jest wywoływany w celu zaindeksowania każdego dokumentu spełniającego kryteria wyszukiwania. W tym wariancie uczestnik wyszukiwania działa wyłącznie w obrębie wtyczki.
  2. Indeksowanie dokumentów znajdujących się poza spisem treści systemu pomocy. W tym przypadku uczestnik wyszukiwania może jednocześnie indeksować wszystkie znane dokumenty. Ponadto uczestnik przejmuje zadanie otwierania wyników wyszukiwania, ponieważ system pomocy nie umożliwia otwierania dokumentów spoza spisu treści. W tym wariancie uczestnik wyszukiwania ma zasięg globalny.

Uczestnicy wyszukiwania są powiązani z wtyczkami, w których występuje dane rozszerzenie. Aby ponownie wykorzystać uczestników wyszukiwania w innych wtyczkach, należy utworzyć odwołania do nich za pomocą elementu binding. Dzięki zastosowaniu tej metody wtyczka nie może narzucać całemu produktowi swoich uczestników wyszukiwania w odniesieniu do rozszerzeń plików, które zostały wraz z nią zarejestrowane. Dodanie jawnego odwołania umożliwia umieszczenie we wtyczce deklaracji wskazującej, że pozwala ona indeksować dokumenty o takich rozszerzeniach za pośrednictwem uczestnika wyszukiwania, którego dotyczy takie odwołanie. Powyższy problem nie występuje w przypadku dokumentów, które nie są uwzględnione w spisie treści. Są to dokumenty o charakterze globalnym, w związku z czym nie należy stosować elementu binding.

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


Poniżej przedstawiono przykład zastosowania opisywanego punktu rozszerzenia.

  

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

Udostępniona klasa uczestnika wyszukiwania musi rozszerzać klasę abstrakcyjną org.eclipse.help.search.LuceneSearchParticipant.

W systemie plików dostarczany jest uczestnik wyszukiwania dla plików XHTML (rozszerzenie .xhtml). Wtyczki zawierające dynamiczne dokumenty XHTML w spisie treści muszą tworzyć powiązania z tym uczestnikiem za pomocą elementu binding oraz identyfikatora docelowego uczestnika org.eclipse.help.base.xhtml.