Типы служб объединенного поиска информации

Новый объединенный поиск информации использует понятия типов службы поиска и служб поиска. Тип службы - шаблон, на основе которого могут быть созданы конкретные службы (путем параметризации).

Новые типы служб поставляются через org.eclipse.help.ui.searchEngine:

<extension point="org.eclipse.help.ui.searchEngine">
	<engineType
		scopeFactory="com.example.xyz.XYZScopeFactory"
		label="Поиск XYZ"
		class="com.example.xyz.search.XYZSearch"
		icon="icons/etool16/xyzsearch.gif"
		pageClass="com.example.xyz.search.XYZSearchPage"
		id="com.example.xyz.XYZSearch">
		<description>
			производит поиск по сайту XYZ.
		</description>
	</engineType>
Эта точка расширения служит для подключения служб, используемых в поиске информации. Каждая служба поиска настраивается отдельно. При поиске каждая служба запускается в виде фонового задания, а результаты собираются на панели Справка.

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

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

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

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

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

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

<engine
	enabled="true"
	engineTypeId="com.example.xyz.search.XYZSearch"
	id="com.example.xyz.XYZSearch"
	label="Поиск XYZ">
</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>