Package org.apache.lucene.analysis.miscellaneous

# Class PerFieldAnalyzerWrapper

java.lang.Object
org.apache.lucene.analysis.Analyzer
org.apache.lucene.analysis.AnalyzerWrapper
org.apache.lucene.analysis.DelegatingAnalyzerWrapper
org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public final class PerFieldAnalyzerWrapper extends DelegatingAnalyzerWrapper
This analyzer is used to facilitate scenarios where different fields require different analysis techniques. Use the Map argument in `PerFieldAnalyzerWrapper(Analyzer, java.util.Map)` to add non-default analyzers for fields.

Example usage:

     Map<String,Analyzer> analyzerPerField = new HashMap<>();
     analyzerPerField.put("firstname", new KeywordAnalyzer());
     analyzerPerField.put("lastname", new KeywordAnalyzer());

     PerFieldAnalyzerWrapper aWrapper =
       new PerFieldAnalyzerWrapper(new StandardAnalyzer(version), analyzerPerField);

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.

Since:
  3.1

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class org.apache.lucene.analysis.Analyzer

  `Analyzer.ReuseStrategy, Analyzer.TokenStreamComponents`

- ## Field Summary

  ### Fields inherited from class org.apache.lucene.analysis.Analyzer

  `GLOBAL_REUSE_STRATEGY, PER_FIELD_REUSE_STRATEGY`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `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

  Modifier and Type
  Method
  Description
  `protected Analyzer`
  `getWrappedAnalyzer(String fieldName)`
  `String`
  `toString()`

  ### Methods inherited from class org.apache.lucene.analysis.DelegatingAnalyzerWrapper

  `wrapComponents, wrapReader, wrapReaderForNormalization, wrapTokenStreamForNormalization`

  ### Methods inherited from class org.apache.lucene.analysis.AnalyzerWrapper

  `attributeFactory, createComponents, getOffsetGap, getPositionIncrementGap, initReader, initReaderForNormalization, normalize`

  ### Methods inherited from class org.apache.lucene.analysis.Analyzer

  `close, getReuseStrategy, normalize, tokenStream, tokenStream`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### 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 Details

  - ### getWrappedAnalyzer

    protected Analyzer getWrappedAnalyzer(String fieldName)
    Specified by:
      `getWrappedAnalyzer` in class `AnalyzerWrapper`

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`