| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| <html> |
| <head> |
| <meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2006. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." > |
| <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
| <meta http-equiv="Content-Style-Type" content="text/css"> |
| <link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css"> |
| <script type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"></script> |
| <title>Plugging in search engines</title> |
| </head> |
| <body> |
| |
| <h2>Plugging in search engines</h2> |
| |
| <p> |
| The new federated information search in Help system uses the notion of <b>search |
| engine types</b> and <b>search engines</b>. An engine type is a meta-engine from |
| which a number of concrete search engines can be created by parameterization.</p> |
| <p>New engine types are contributed through the |
| <a href="../reference/extension-points/org_eclipse_help_ui_searchEngine.html"> |
| org.eclipse.help.ui.searchEngine</a>:</p> |
| <blockquote> |
| <pre><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></pre> |
| </blockquote> |
| This extension point is used to plug in search participants in the information |
| search. Each search engine can be configured individually. When search is |
| initiated, each search engine is executed as a background job, and the results |
| are collated in the help view immediately under the query. |
| <p>Search engines defined here will not automatically show up as federated |
| search participants until engine product binding is established, unless <code> |
| productId</code> attribute is left undefined. For engines that define it, only |
| those bound to a particular product will show up when that product is running. |
| </p> |
| <p>Search engines can simply compose a URL and provide only one hit containing |
| that URL as <code>href</code>. Popular search engines for which API support |
| requires license can be plugged in like this. On the other end of the spectrum, |
| search engines can communicate with the server and receive individual hits with |
| information like label, href, short description, score etc. Local help engine |
| can produce hits this way.</p> |
| <p>Regardless of the search mechanism, engines can provide various search scope |
| settings using JFace preference pages. These pages are shown when 'Advanced |
| Settings' link is followed from the Help view. In addition to root preference |
| pages defined with the engine, additional preference sub-pages can be plugged in |
| for more advanced settings. </p> |
| <p>Scope settings are loaded and stored using <code>IPreferenceStore</code> |
| objects. Scope settings for all engines are grouped together under a named <b> |
| scope set</b>. When first opened, default scope set ('Default') is created, but |
| users can define more scope sets and flip between them. </p> |
| <p>Since federated search support is part of <code>org.eclipse.help.base</code> |
| plug-in, a factory is needed to create search scope objects from the data in the |
| preference store. Clients that plug in scope preference pages are required to |
| plug in scope factories as well. </p> |
| <p>Engines defined in this extension point do not show up in the UI by default. |
| What is shown there is a concrete <b>instance</b> of a search engine that can be |
| individually modified. Products can pre-configure the help system with a number |
| of instances of the registered engine types, possibly parameterized to perform |
| in a desired way. In addition, users can add their own instances of the |
| registered engines and configure them to their liking:</p> |
| <blockquote> |
| <pre> |
| <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></pre> |
| </blockquote> |
| |
| </body> |
| </html> |