org.apache.lucene.analysis
Class PerFieldAnalyzerWrapper

java.lang.Object
  extended by org.apache.lucene.analysis.Analyzer
      extended by org.apache.lucene.analysis.PerFieldAnalyzerWrapper
All Implemented Interfaces:
Closeable

public class PerFieldAnalyzerWrapper
extends Analyzer

This analyzer is used to facilitate scenarios where different fields require different analysis techniques. Use addAnalyzer(java.lang.String, org.apache.lucene.analysis.Analyzer) to add a non-default analyzer on a field name basis.

Example usage:

   PerFieldAnalyzerWrapper aWrapper =
      new PerFieldAnalyzerWrapper(new StandardAnalyzer());
   aWrapper.addAnalyzer("firstname", new KeywordAnalyzer());
   aWrapper.addAnalyzer("lastname", new KeywordAnalyzer());
 

In this example, StandardAnalyzer will be used for all fields except "firstname" and "lastname", for which KeywordAnalyzer will be used.

A PerFieldAnalyzerWrapper can be used like any other analyzer, for both indexing and query parsing.


Field Summary
 
Fields inherited from class org.apache.lucene.analysis.Analyzer
overridesTokenStreamMethod
 
Constructor Summary
PerFieldAnalyzerWrapper(Analyzer defaultAnalyzer)
          Constructs with default analyzer.
PerFieldAnalyzerWrapper(Analyzer defaultAnalyzer, Map<String,Analyzer> fieldAnalyzers)
          Constructs with default analyzer and a map of analyzers to use for specific fields.
 
Method Summary
 void addAnalyzer(String fieldName, Analyzer analyzer)
          Defines an analyzer to use for the specified field.
 int getOffsetGap(Fieldable field)
          Return the offsetGap from the analyzer assigned to field
 int getPositionIncrementGap(String fieldName)
          Return the positionIncrementGap from the analyzer assigned to fieldName
 TokenStream reusableTokenStream(String fieldName, Reader reader)
          Creates a TokenStream that is allowed to be re-used from the previous time that the same thread called this method.
 TokenStream tokenStream(String fieldName, Reader reader)
          Creates a TokenStream which tokenizes all the text in the provided Reader.
 String toString()
           
 
Methods inherited from class org.apache.lucene.analysis.Analyzer
close, getPreviousTokenStream, setOverridesTokenStreamMethod, setPreviousTokenStream
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PerFieldAnalyzerWrapper

public PerFieldAnalyzerWrapper(Analyzer defaultAnalyzer)
Constructs with default analyzer.

Parameters:
defaultAnalyzer - Any fields not specifically defined to use a different analyzer will use the one provided here.

PerFieldAnalyzerWrapper

public PerFieldAnalyzerWrapper(Analyzer defaultAnalyzer,
                               Map<String,Analyzer> fieldAnalyzers)
Constructs with default analyzer and a map of analyzers to use for specific fields.

Parameters:
defaultAnalyzer - Any fields not specifically defined to use a different analyzer will use the one provided here.
fieldAnalyzers - a Map (String field name to the Analyzer) to be used for those fields
Method Detail

addAnalyzer

public void addAnalyzer(String fieldName,
                        Analyzer analyzer)
Defines an analyzer to use for the specified field.

Parameters:
fieldName - field name requiring a non-default analyzer
analyzer - non-default analyzer to use for field

tokenStream

public TokenStream tokenStream(String fieldName,
                               Reader reader)
Description copied from class: Analyzer
Creates a TokenStream which tokenizes all the text in the provided Reader. Must be able to handle null field name for backward compatibility.

Specified by:
tokenStream in class Analyzer

reusableTokenStream

public TokenStream reusableTokenStream(String fieldName,
                                       Reader reader)
                                throws IOException
Description copied from class: Analyzer
Creates a TokenStream that is allowed to be re-used from the previous time that the same thread called this method. Callers that do not need to use more than one TokenStream at the same time from this analyzer should use this method for better performance.

Overrides:
reusableTokenStream in class Analyzer
Throws:
IOException

getPositionIncrementGap

public int getPositionIncrementGap(String fieldName)
Return the positionIncrementGap from the analyzer assigned to fieldName

Overrides:
getPositionIncrementGap in class Analyzer
Parameters:
fieldName - Fieldable name being indexed.
Returns:
position increment gap, added to the next token emitted from Analyzer.tokenStream(String,Reader)

getOffsetGap

public int getOffsetGap(Fieldable field)
Return the offsetGap from the analyzer assigned to field

Overrides:
getOffsetGap in class Analyzer
Parameters:
field - the field just indexed
Returns:
offset gap, added to the next token emitted from Analyzer.tokenStream(String,Reader)

toString

public String toString()
Overrides:
toString in class Object


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