blob: ac2e25cf915f5b72fec097216d5e6317c9469676 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.help.search;
import org.eclipse.help.IHelpResource;
/**
* A search result created by the help search engine. Engines that have direct
* access to the search servers are expected to provide one search result object
* per each hit. Engines that can only compose a search query that returns a
* document with the results must create one search result object whose URL is
* the actual query. This URL will then be presented in the Web browser.
* <p>
* This interface is inteded to be implemented by clients.
*
* @since 3.1
*/
public interface ISearchEngineResult {
/**
* Returns the label of the search result to use in the UI.
*
* @return the search result label
*/
String getLabel();
/**
* Returns the short description of the search result. If coming from an
* individual search hit, this description is typically composed of the
* document fragment in the vicinity of the searched expression, or a
* combination of several document fragments. Other search engines may
* return a couple of sentencies at the beninning of the document.
*
* @return a short description, or <code>null</code> if not available.
*/
String getDescription();
/**
* Returns a category this search result belongs to. Engines can use this
* object to denote the origin of the hit in the search domain. The usage of
* <code>IHelpResource</code> allows search result UI to create a link to
* the category.
*
* @return a hit category or <code>null</code> if not available.
*/
IHelpResource getCategory();
/**
* Returns the URL (as a string) associated with this help resource.
*
* @return the URL (as a string) associated with the resource
* <p>
* Valid URL of a help resource is:
* <ul>
* <li>a <em>/pluginID/path/to/resource</em>, where
* <ul>
* <li><em>pluginID</em> is the unique identifier of the plugin
* containing the help resource,
* <li><em>path/to/document</em> is the help resource path,
* relative to the plugin directory.
* </ul>
* For example. <em>/myplugin/mytoc.xml</em> or
* <em>/myplugin/references/myclass.html</em> are vaild.
* <li>string representation of URI to an external document. In
* this case, all special characters have to be enoded such that the
* URI is appropriate to be opened with a web browser.
* <em>http://eclipse.org/documents/my%20file.html</em> and
* <em>jar:file:/c:/my%20sources/src.zip!/mypackage/MyClass.html</em>
* are examples of valid URIs.
* </ul>
* </p>
*/
String getHref();
/**
* Returns a float number in the range between 0 and 1 that can be used to
* sort the hits by relevance (1 being the perfect result). The number can
* be interpreted as the probability of a match in the given topic.
*
* @return the score of this hit between 0.0 and 1.0
*/
float getScore();
/**
* Tests if the result link must be shown in an external web browser/Help
* window, or it can also be shown embedded. Contributors should force
* external window only if the link points at a web page that cannot be
* displayed in a narrow view without distorsion. Text-only document
* typically reflows well to fit the narrow view. Documents with tables
* and/or images normally do not fit without showing the horizontal scroll
* bar.
* <p>
* Note that returning <code>false</code> does not prevent the link to be
* opened in the external window. Instead, it indicates that the link should
* be opened using the current user preferences, which may always force
* external window for URL rendering.
*
* @return <code>true</code> if external window must be used,
* <code>false</code> if the link opening mode can be chosen by
* the help system.
*/
boolean getForceExternalWindow();
/**
* Converts a relative href into absolute according to the search engine
* base URL.
*
* @param href
* the relative href to convert into absolute
* @param frames
* if <code>true</code>, the resulting href can contain frames
* in a format suitable for presentation in a standalone web
* browser. Otherwise, the resulting href should be without
* frames and suitable for presentation in the embedded web
* browser inside the workbench.
* @return the absolute href that can be used to navigate to the reference
* as-is
*/
String toAbsoluteHref(String href, boolean frames);
}