001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.cocoon.components.search;
018:
019: import org.apache.avalon.framework.component.Component;
020: import org.apache.cocoon.ProcessingException;
021: import org.apache.lucene.analysis.Analyzer;
022: import org.apache.lucene.search.Hits;
023: import org.apache.lucene.search.Query;
024: import org.apache.lucene.store.Directory;
025:
026: /**
027: * The avalon behavioural component interface of a searcher.
028: * <p>
029: * This component defines an interface for searching.
030: * The idea is to abstract the process of searching having a query string,
031: * and an index, and generating hits which matches the query string in the index.
032: * </p>
033: *
034: * @author <a href="mailto:berni_huber@a1.net">Bernhard Huber</a>
035: * @version CVS $Id: LuceneCocoonSearcher.java 433543 2006-08-22 06:22:54Z crossley $
036: */
037: public interface LuceneCocoonSearcher extends Component {
038: /**
039: * The ROLE name of this avalon component.
040: * <p>
041: * Its value if the FQN of this interface,
042: * ie. <code>org.apache.cocoon.components.search.LuceneCocoonSearcher</code>.
043: * </p>
044: *
045: * @since
046: */
047: String ROLE = "org.apache.cocoon.components.search.LuceneCocoonSearcher";
048:
049: /**
050: * Sets the analyzer attribute of the LuceneCocoonSearcher object
051: * <p>
052: * The analyzer determines the tokenization of the query,
053: * and strategy of matching.
054: * </p>
055: * <p>
056: * The analyzer class defined here should be equivalent to the analyzer
057: * class used when creating the index used for searching.
058: * </p>
059: *
060: * @param analyzer The new analyzer value
061: * @since
062: */
063: void setAnalyzer(Analyzer analyzer);
064:
065: /**
066: * Gets the analyzer attribute of the LuceneCocoonSearcher object
067: * <p>
068: * The analyzer determines the tokenization of the query,
069: * and strategy of matching.
070: * </p>
071: * <p>
072: * The analyzer class defined here should be equivalent to the analyzer
073: * class used when creating the index used for searching.
074: * </p>
075: *
076: * @since 2.1.6
077: */
078: Analyzer getAnalyzer();
079:
080: /**
081: * Sets the directory attribute of the LuceneCocoonSearcher object
082: * <p>
083: * The directory specifies the directory used for looking up the
084: * index. It defines the physical place of the index
085: * </p>
086: *
087: * @param directory The new directory value
088: * @since
089: */
090: void setDirectory(Directory directory);
091:
092: /**
093: * Search a query-string, returning zero, or more hits.
094: * <p>
095: * </p>
096: *
097: * @param query_string A query string parsable by a query parser.
098: * @param default_field The default field of the query string.
099: * @return Hits zero or more hits matching the query string
100: * @exception ProcessingException throwing due to processing errors while
101: * looking up the index directory, parsing the query string, generating the hits.
102: * @since
103: */
104: Hits search(String query_string, String default_field)
105: throws ProcessingException;
106:
107: /**
108: * Search using a Lucene Query object, returning zero, or more hits.
109: * <p>
110: * </p>
111: *
112: * @param query A lucene query
113: * @return Hits zero or more hits matching the query string
114: * @exception ProcessingException throwing due to processing errors while
115: * looking up the index directory, parsing the query string, generating the hits.
116: * @since 2.1.6
117: */
118: Hits search(Query query) throws ProcessingException;
119: }
|