연합 검색 엔진 유형

도움말 시스템에서 새로 연합된 정보 검색은 검색 엔진 유형검색 엔진 개념을 사용합니다. 엔진 유형은 매개변수화를 통해 다수의 구체적 검색 엔진을 작성할 수 있는 메타 엔진입니다.

새 엔진 유형은 org.eclipse.help.ui.searchEngine을 통해 제공됩니다.

<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">
		<description>
			Instances of XYZ Search search the XYZ site.
		</description>
	</engineType>
이 확장점은 정보 검색 시 검색 구성원을 플러그인하는 데 사용됩니다. 각 검색 엔진을 개별적으로 구성할 수 있습니다. 검색이 시작되면 각 검색 엔진이 배경 작업으로 실행되며, 결과는 도움말 보기에서 조회 바로 아래에 조합됩니다.

여기 정의된 검색 엔진은 productId 속성을 정의하지 않은 채로 두지 않으면 엔진 정보 바인딩을 설정한 후에야 연합 검색 구성원으로 자동으로 표시됩니다. 이 속성을 정의하는 엔진의 경우, 특정 제품에 바인드된 엔진만 해당 제품이 실행 중일 때 표시됩니다.

검색 엔진은 단순히 URL을 구성하며, 해당 URL을 href로 포함하는 하나의 적중만 제공할 수 있습니다. API 지원을 위해 라이센스가 필요한 일반적인 검색 엔진을 이와 같이 플러그인할 수 있습니다. 스펙트럼의 반대쪽 끝에서 검색 엔진은 서버와 통신하고 레이블, href, 간단한 설명, 점수 등과 같은 정보를 가진 개별 적중을 수신할 수 있습니다. 로컬 도움말 엔진은 이런 식으로 히트를 생성할 수 있습니다.

검색 메커니즘에 관계없이 엔진은 JFace 환경 설정 페이지를 사용하여 다양한 검색 범위 설정을 제공할 수 있습니다. 이 페이지는 도움말 보기에서 다음에 '고급 설정' 링크가 올 때 표시됩니다. 보다 고급 설정을 위해 엔진과 함께 정의된 루트 환경 설정 페이지 이외에 추가 환경 설정 하위 페이지를 플러그인할 수 있습니다.

범위 설정은 IPreferenceStore 오브젝트를 사용하여 로드 및 저장됩니다. 모든 엔진에 대한 범위 설정은 이름 지정된 범위 세트 아래에 같이 그룹화됩니다. 처음 열릴 때 기본 범위 세트('Default')가 작성되지만 사용자는 범위 세트를 추가로 정의하고 범위 세트 간에 대칭 이동할 수 있습니다.

연합 검색 지원은 org.eclipse.help.base 플러그인의 일부이기 때문에 환경 설정에 저장된 데이터에서 검색 범위 오브젝트를 작성하려면 팩토리가 필요합니다. 범위 팩토리를 플러그인하려면 범위 환경 설정 페이지를 플러그인하는 클라이언트도 필요합니다.

이 확장점에 정의된 엔진은 기본적으로 UI에 표시되지 않습니다. UI에 표시되는 것은 개별적으로 수정할 수 있는 검색 엔진의 구체적 인스턴스입니다. 제품은 다수의 등록된 엔진 유형 인스턴스를 사용하여 도움말 시스템을 사전에 구성할 수 있으며, 원하는 방식으로 수행하도록 매개변수화할 수 있습니다. 또한 사용자는 등록된 엔진의 자체 인스턴스를 추가하고 이를 연계 구성할 수 있습니다.

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