org.apache.lucene.queryParser.analyzing

Class AnalyzingQueryParser

public class AnalyzingQueryParser extends QueryParser

Overrides Lucene's default QueryParser so that Fuzzy-, Prefix-, Range-, and WildcardQuerys are also passed through the given analyzer, but ? and * don't get removed from the search terms.

Warning: This class should only be used with analyzers that do not use stopwords or that add tokens. Also, several stemming analyzers are inappropriate: for example, GermanAnalyzer will turn Häuser into hau, but H?user will become h?user when using this parser and thus no match would be found (i.e. using this parser will be no improvement over QueryParser in such cases).

Version: $Revision$, $Date$

Author: Ronnie Kolehmainen (ronnie.kolehmainen at ub.uu.se)

Constructor Summary
AnalyzingQueryParser(String field, Analyzer analyzer)
Constructs a query parser.
Method Summary
protected QuerygetFuzzyQuery(String field, String termStr, float minSimilarity)
Called when parser parses an input term token that has the fuzzy suffix (~) appended.
protected QuerygetPrefixQuery(String field, String termStr)
Called when parser parses an input term token that uses prefix notation; that is, contains a single '*' wildcard character as its last character.
protected QuerygetRangeQuery(String field, String part1, String part2, boolean inclusive)
Overrides super class, by passing terms through analyzer.
protected QuerygetWildcardQuery(String field, String termStr)
Called when parser parses an input term token that contains one or more wildcard characters (?

Constructor Detail

AnalyzingQueryParser

public AnalyzingQueryParser(String field, Analyzer analyzer)
Constructs a query parser.

Parameters: field the default field for query terms. analyzer used to find terms in the query text.

Method Detail

getFuzzyQuery

protected Query getFuzzyQuery(String field, String termStr, float minSimilarity)
Called when parser parses an input term token that has the fuzzy suffix (~) appended.

Depending on analyzer and settings, a fuzzy term may (most probably will) be lower-cased automatically. It will go through the default Analyzer.

Overrides super class, by passing terms through analyzer.

Parameters: field Name of the field query will use. termStr Term token to use for building term for the query

Returns: Resulting {@link Query} built for the term

Throws: ParseException

getPrefixQuery

protected Query getPrefixQuery(String field, String termStr)
Called when parser parses an input term token that uses prefix notation; that is, contains a single '*' wildcard character as its last character. Since this is a special case of generic wildcard term, and such a query can be optimized easily, this usually results in a different query object.

Depending on analyzer and settings, a prefix term may (most probably will) be lower-cased automatically. It will go through the default Analyzer.

Overrides super class, by passing terms through analyzer.

Parameters: field Name of the field query will use. termStr Term token to use for building term for the query (without trailing '*' character!)

Returns: Resulting {@link Query} built for the term

Throws: ParseException

getRangeQuery

protected Query getRangeQuery(String field, String part1, String part2, boolean inclusive)
Overrides super class, by passing terms through analyzer.

Throws: ParseException

getWildcardQuery

protected Query getWildcardQuery(String field, String termStr)
Called when parser parses an input term token that contains one or more wildcard characters (? and *), but is not a prefix term token (one that has just a single * character at the end)

Depending on analyzer and settings, a wildcard term may (most probably will) be lower-cased automatically. It will go through the default Analyzer.

Overrides super class, by passing terms through analyzer.

Parameters: field Name of the field query will use. termStr Term token that contains one or more wild card characters (? or *), but is not simple prefix term

Returns: Resulting {@link Query} built for the term

Throws: ParseException

Copyright © 2000-2007 Apache Software Foundation. All Rights Reserved.