Служба поиска

org.eclipse.help.ui.searchEngine

3.1

Эта точка расширения служит для подключения служб, используемых в поиске по объединенной справки. Каждая служба поиска настраивается отдельно. При поиске каждая служба запускается в виде фонового задания, а результаты собираются на панели Справка.

Службы поиска, определенные здесь, будут задействованы как участники объединенного поиска только при наличии привязки к текущему продукту, либо при отсутствии атрибута productId. Так, для данного продукта запускаются службы, привязанные к нему, и службы, не привязанные ни к одному продукту.

Службы поиска могут генерировать один URL возвращать его в href результата. Популярные службы поиска, для поддержки API которых требуется лицензия, можно подключить так. Службы поиска связываются с сервером и получают результаты с меткой, ссылкой, кратким описанием, счетом и т.д. Схема работы локальной службы справки такая же.

Независимо от механизма поиска, службы могут иметь возможность настройки с помощью страниц параметров JFace. К ним можно перейти по ссылке 'Дополнительные параметры' на панели Справка. К корневым страницам параметров можно подключать вложенные страницы с дополнительными параметрами.

Параметры области поиска загружаются и сохраняются с помощью объектов IPreferenceStore. Параметры для всех служб собраны вместе в наборе областей. При первом открытии создается стандартный набор областей ('Default'), но пользователь может создавать и использовать свои наборы.

Т.к. поддержка объединенного поиска входит в модуль org.eclipse.help.base, для создания объектов области поиска на основе данных хранилища параметров требуется фабрика. Клиенты, подключающие страницы параметров области поиска, должны также подключать фабрики области поиска.

Службы, определенные в этой точке расширения, по умолчанию не присутствуют в пользовательском интерфейсе. В нем показываются конкретные экземпляры служб поиска, которые могут быть отдельно изменены. Продукты могут поставлять предопределенные экземпляры зарегистрированных типов служб, возможно параметризованных. Кроме этого, пользователь может добавлять собственные экземпляры зарегистрированных служб.

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

определяет тип службы поиска. Тип службы поиска можно использовать для создания настроенных экземпляров службы либо пользователем, либо загруженных заранее продуктом. Типы служб должны быть настраиваемыми, так чтобы используя один тип службы можно было бы создать ряд служб.



<!ELEMENT description (#PCDATA)>

краткое описание службы поиска



<!ELEMENT subpage EMPTY>

<!ATTLIST subpage

id       CDATA #REQUIRED

label    CDATA #REQUIRED

class    CDATA #IMPLIED

category CDATA #REQUIRED>

дочерняя страница корневой страницы параметров области, определенной в элементе engine. Если атрибут службы pageClass не определен, вложенные страницы будут игнорироваться.



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

<!ATTLIST engine

productId    CDATA #IMPLIED

engineTypeId CDATA #REQUIRED

enabled      (true | false)

label        CDATA #IMPLIED

id           CDATA #REQUIRED>

Задает настроенный экземпляр определенного типа службы поиска. Экземпляр может быть связан с продуктом, для того чтобы быть показанным только если продукт активен. Служба может иметь собственную метку и описание. Если они не заданы, то будут использованы данные типа службы. Наконец, каждый тип службы определяет допустимый набор параметров, с помощью которых ее можно настроить. Службы могут задавать значения этих параметров.



<!ELEMENT param EMPTY>

<!ATTLIST param

name  CDATA #REQUIRED

value CDATA #REQUIRED>

необязательный параметр, который применяется для настройки этого экземпляра типа службы поиска. Допустимые параметры определяются типом службы.



Ниже приведен пример расширения поиска по справке:

   

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

>

<описание>

производит поиск по сайту 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"

>

<описание>

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

Атрибут class элемента engineType должен предоставлять полное имя класса, реализующего org.eclipse.help.search.ISearchEngine. Атрибут pageClass должен предоставлять полное имя класса, расширяющего org.eclipse.help.ui.RootScopePage. Атрибут scopeFactory должен предоставлять полное имя класса, реализующего org.eclipse.help.ui.ISearchScopeFactory. Атрибут class элемента subpage должен предоставлять полное имя класса, реализующего org.eclipse.help.ui.ISearchScopePage.

Модуль справки по UI предоставляет типы служб поиска для локальной справочной документации, InfoCenter и Web-поиска, а также экземпляр локальной службы поиска по справке. Этот экземпляр не принимает параметры и не имеет ИД продукта, и таким образом появится во всех продуктах.

Продукты могут создавать настроенные экземпляры InfoCenter и Web-поиска, используя свои ИД службы и необходимые параметры.

Тип службы InfoCenter имеет engineId org.eclipse.help.ui.infoCenter и принимает один параметр - url, который указывает на удаленный сервер, на котором установлен InfoCenter. Результаты отображаются таким же образом, как и результаты локальной справки.

Тип службы Web-поиска имеет ИД службы org.eclipse.help.ui.web и принимает один параметр - url, который представляет настроенный запрос поиска, в котором фактическая строка поиска заменена символом подстановки '{выражение}', как в следующем примере:

http://eclipse.org/search/search.cgi?q={выражение}&ul=&ps=20&m=all

Результаты Web-поиска отображаются в виде одной ссылки, которая открывает web-браузер со строкой поиска, подставленной в параметре url.