Package org.apache.lucene.analysis
Class ReusableAnalyzerBase
- java.lang.Object
-
- org.apache.lucene.analysis.Analyzer
-
- org.apache.lucene.analysis.ReusableAnalyzerBase
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Direct Known Subclasses:
KeywordAnalyzer
,SimpleAnalyzer
,StopwordAnalyzerBase
,WhitespaceAnalyzer
public abstract class ReusableAnalyzerBase extends Analyzer
An convenience subclass of Analyzer that makes it easy to implementTokenStream
reuse.ReusableAnalyzerBase is a simplification of Analyzer that supports easy reuse for the most common use-cases. Analyzers such as
PerFieldAnalyzerWrapper
that behave differently depending upon the field name need to subclass Analyzer directly instead.To prevent consistency problems, this class does not allow subclasses to extend
reusableTokenStream(String, Reader)
ortokenStream(String, Reader)
directly. Instead, subclasses must implementcreateComponents(String, Reader)
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ReusableAnalyzerBase.TokenStreamComponents
This class encapsulates the outer components of a token stream.
-
Constructor Summary
Constructors Constructor Description ReusableAnalyzerBase()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract ReusableAnalyzerBase.TokenStreamComponents
createComponents(String fieldName, Reader reader)
Creates a newReusableAnalyzerBase.TokenStreamComponents
instance for this analyzer.protected Reader
initReader(Reader reader)
Override this if you want to add a CharFilter chain.TokenStream
reusableTokenStream(String fieldName, Reader reader)
This method usescreateComponents(String, Reader)
to obtain an instance ofReusableAnalyzerBase.TokenStreamComponents
.TokenStream
tokenStream(String fieldName, Reader reader)
This method usescreateComponents(String, Reader)
to obtain an instance ofReusableAnalyzerBase.TokenStreamComponents
and returns the sink of the components.-
Methods inherited from class org.apache.lucene.analysis.Analyzer
close, getOffsetGap, getPositionIncrementGap, getPreviousTokenStream, setPreviousTokenStream
-
-
-
-
Method Detail
-
createComponents
protected abstract ReusableAnalyzerBase.TokenStreamComponents createComponents(String fieldName, Reader reader)
Creates a newReusableAnalyzerBase.TokenStreamComponents
instance for this analyzer.- Parameters:
fieldName
- the name of the fields content passed to theReusableAnalyzerBase.TokenStreamComponents
sink as a readerreader
- the reader passed to theTokenizer
constructor- Returns:
- the
ReusableAnalyzerBase.TokenStreamComponents
for this analyzer.
-
reusableTokenStream
public final TokenStream reusableTokenStream(String fieldName, Reader reader) throws IOException
This method usescreateComponents(String, Reader)
to obtain an instance ofReusableAnalyzerBase.TokenStreamComponents
. It returns the sink of the components and stores the components internally. Subsequent calls to this method will reuse the previously stored components if and only if theReusableAnalyzerBase.TokenStreamComponents.reset(Reader)
method returnedtrue
. Otherwise a new instance ofReusableAnalyzerBase.TokenStreamComponents
is created.- Overrides:
reusableTokenStream
in classAnalyzer
- Parameters:
fieldName
- the name of the field the created TokenStream is used forreader
- the reader the streams source reads from- Throws:
IOException
-
tokenStream
public final TokenStream tokenStream(String fieldName, Reader reader)
This method usescreateComponents(String, Reader)
to obtain an instance ofReusableAnalyzerBase.TokenStreamComponents
and returns the sink of the components. Each calls to this method will create a new instance ofReusableAnalyzerBase.TokenStreamComponents
. CreatedTokenStream
instances are never reused.- Specified by:
tokenStream
in classAnalyzer
- Parameters:
fieldName
- the name of the field the created TokenStream is used forreader
- the reader the streams source reads from
-
-