/******************************************************************************* * 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.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; /** * A search engine that is a participant in the help search. All engines * selected by the user to run are executed as background jobs using the same * search expression. Engine is expected to accept the expression and the scope * object. The results should be passed to the result collector object, and the * search progress should be tracked by the progress monitor. * <p> * Search engines that have API access to the search server can provide a list * of individual search results. Search engines for which only the URL is known * are expected to return one search result containing a URL that is sufficient * to open a web browser and see the search results there. * <p> * Search engine must be cancelable. * <p>This interface is intended to be implemented by clients. * * @since 3.1 */ public interface ISearchEngine { /** * * @param query * the search expression * @param scope * the engine-specific scope object that is used to narrow the * search or <code>null</code> if the default scope is assumed. * @param collector * the search result collector handles results as they arrive * @param monitor * progress monitor to track the search progress * @throws CoreException * when there are problems in the engine */ void run(String query, ISearchScope scope, ISearchEngineResultCollector collector, IProgressMonitor monitor) throws CoreException; }