public class

FuzzyQuery

extends MultiTermQuery
java.lang.Object
   ↳ org.apache.lucene.search.Query
     ↳ org.apache.lucene.search.MultiTermQuery
       ↳ org.apache.lucene.search.FuzzyQuery

Class Overview

Implements the fuzzy search query. The similarity measurement is based on the Levenshtein (edit distance) algorithm. Warning: this query is not very scalable with its default prefix length of 0 - in this case, *every* term will be enumerated and cause an edit score calculation.

Summary

Constants
float defaultMinSimilarity
int defaultPrefixLength
Fields
protected Term term
[Expand]
Inherited Fields
From class org.apache.lucene.search.MultiTermQuery
Public Constructors
FuzzyQuery(Term term, float minimumSimilarity, int prefixLength)
Create a new FuzzyQuery that will match terms with a similarity of at least minimumSimilarity to term.
FuzzyQuery(Term term, float minimumSimilarity)
FuzzyQuery(Term term)
Public Methods
boolean equals(Object obj)
float getMinSimilarity()
Returns the minimum similarity that is required for this query to match.
int getPrefixLength()
Returns the non-fuzzy prefix length.
Term getTerm()
Returns the pattern term.
int hashCode()
Query rewrite(IndexReader reader)
Expert: called to re-write queries into primitive queries.
void setRewriteMethod(MultiTermQuery.RewriteMethod method)
Sets the rewrite method to be used when executing the query.
String toString(String field)
Prints a query to a string, with field assumed to be the default field and omitted.
Protected Methods
FilteredTermEnum getEnum(IndexReader reader)
Construct the enumeration to be used, expanding the pattern term.
[Expand]
Inherited Methods
From class org.apache.lucene.search.MultiTermQuery
From class org.apache.lucene.search.Query
From class java.lang.Object

Constants

public static final float defaultMinSimilarity

Constant Value: 0.5

public static final int defaultPrefixLength

Constant Value: 0 (0x00000000)

Fields

protected Term term

Public Constructors

public FuzzyQuery (Term term, float minimumSimilarity, int prefixLength)

Create a new FuzzyQuery that will match terms with a similarity of at least minimumSimilarity to term. If a prefixLength > 0 is specified, a common prefix of that length is also required.

Parameters
term the term to search for
minimumSimilarity a value between 0 and 1 to set the required similarity between the query term and the matching terms. For example, for a minimumSimilarity of 0.5 a term of the same length as the query term is considered similar to the query term if the edit distance between both terms is less than length(term)*0.5
prefixLength length of common (non-fuzzy) prefix
Throws
IllegalArgumentException if minimumSimilarity is >= 1 or < 0 or if prefixLength < 0

public FuzzyQuery (Term term, float minimumSimilarity)

public FuzzyQuery (Term term)

Public Methods

public boolean equals (Object obj)

public float getMinSimilarity ()

Returns the minimum similarity that is required for this query to match.

Returns
  • float value between 0.0 and 1.0

public int getPrefixLength ()

Returns the non-fuzzy prefix length. This is the number of characters at the start of a term that must be identical (not fuzzy) to the query term if the query is to match that term.

public Term getTerm ()

Returns the pattern term.

public int hashCode ()

public Query rewrite (IndexReader reader)

Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.

Throws
IOException

public void setRewriteMethod (MultiTermQuery.RewriteMethod method)

Sets the rewrite method to be used when executing the query. You can use one of the four core methods, or implement your own subclass of MultiTermQuery.RewriteMethod.

public String toString (String field)

Prints a query to a string, with field assumed to be the default field and omitted.

The representation used is one that is supposed to be readable by QueryParser. However, there are the following limitations:

  • If the query was created by the parser, the printed representation may not be exactly what was parsed. For example, characters that need to be escaped will be represented without the required backslash.
  • Some of the more complicated queries (e.g. span queries) don't have a representation that can be parsed by QueryParser.

Protected Methods

protected FilteredTermEnum getEnum (IndexReader reader)

Construct the enumeration to be used, expanding the pattern term.

Throws
IOException