org.elasticsearch.index.mapper.core
Class NumberFieldMapper<T extends java.lang.Number>

java.lang.Object
  extended by org.elasticsearch.index.mapper.core.AbstractFieldMapper<T>
      extended by org.elasticsearch.index.mapper.core.NumberFieldMapper<T>
All Implemented Interfaces:
ToXContent, FieldMapper<T>, AllFieldMapper.IncludeInAll, Mapper
Direct Known Subclasses:
BoostFieldMapper, ByteFieldMapper, DateFieldMapper, DoubleFieldMapper, FloatFieldMapper, IntegerFieldMapper, IpFieldMapper, LongFieldMapper, ShortFieldMapper

public abstract class NumberFieldMapper<T extends java.lang.Number>
extends AbstractFieldMapper<T>
implements AllFieldMapper.IncludeInAll


Nested Class Summary
static class NumberFieldMapper.Builder<T extends NumberFieldMapper.Builder,Y extends NumberFieldMapper>
           
static class NumberFieldMapper.CustomNumericField
           
static class NumberFieldMapper.Defaults
           
 
Nested classes/interfaces inherited from class org.elasticsearch.index.mapper.core.AbstractFieldMapper
AbstractFieldMapper.OpenBuilder<T extends AbstractFieldMapper.Builder,Y extends AbstractFieldMapper>
 
Nested classes/interfaces inherited from interface org.elasticsearch.index.mapper.Mapper
Mapper.BuilderContext, Mapper.TypeParser
 
Nested classes/interfaces inherited from interface org.elasticsearch.common.xcontent.ToXContent
ToXContent.MapParams, ToXContent.Params
 
Nested classes/interfaces inherited from interface org.elasticsearch.index.mapper.FieldMapper
FieldMapper.Names
 
Field Summary
protected  double dFuzzyFactor
           
protected  java.lang.String fuzzyFactor
           
protected  java.lang.Boolean includeInAll
           
protected  int precisionStep
           
 
Fields inherited from class org.elasticsearch.index.mapper.core.AbstractFieldMapper
boost, index, indexAnalyzer, names, omitNorms, omitTermFreqAndPositions, searchAnalyzer, store, termFactory, termVector
 
Fields inherited from interface org.elasticsearch.index.mapper.Mapper
EMPTY_ARRAY
 
Fields inherited from interface org.elasticsearch.common.xcontent.ToXContent
EMPTY_PARAMS
 
Constructor Summary
protected NumberFieldMapper(FieldMapper.Names names, int precisionStep, java.lang.String fuzzyFactor, org.apache.lucene.document.Field.Index index, org.apache.lucene.document.Field.Store store, float boost, boolean omitNorms, boolean omitTermFreqAndPositions, NamedAnalyzer indexAnalyzer, NamedAnalyzer searchAnalyzer)
           
 
Method Summary
 void close()
           
abstract  FieldDataType fieldDataType()
           
 org.apache.lucene.search.Filter fieldFilter(java.lang.String value)
          Numeric field level filter are basically range queries with same value and included.
 org.apache.lucene.search.Query fieldQuery(java.lang.String value, QueryParseContext context)
          Numeric field level query are basically range queries with same value and included.
abstract  org.apache.lucene.search.Query fuzzyQuery(java.lang.String value, double minSim, int prefixLength, int maxExpansions)
           
abstract  org.apache.lucene.search.Query fuzzyQuery(java.lang.String value, java.lang.String minSim, int prefixLength, int maxExpansions)
           
 void includeInAll(java.lang.Boolean includeInAll)
           
 void includeInAllIfNotSet(java.lang.Boolean includeInAll)
           
protected abstract  int maxPrecisionStep()
           
 void merge(Mapper mergeWith, MergeContext mergeContext)
           
protected  double parseFuzzyFactor(java.lang.String fuzzyFactor)
           
protected  org.apache.lucene.analysis.NumericTokenStream popCachedStream()
           
 int precisionStep()
           
abstract  org.apache.lucene.search.Filter rangeFilter(FieldDataCache fieldDataCache, java.lang.String lowerTerm, java.lang.String upperTerm, boolean includeLower, boolean includeUpper)
          A range filter based on the field data cache.
abstract  org.apache.lucene.search.Filter rangeFilter(java.lang.String lowerTerm, java.lang.String upperTerm, boolean includeLower, boolean includeUpper)
          Constructs a range query filter based on the mapper.
abstract  org.apache.lucene.search.Query rangeQuery(java.lang.String lowerTerm, java.lang.String upperTerm, boolean includeLower, boolean includeUpper)
          Constructs a range query based on the mapper.
 boolean useFieldQueryWithQueryString()
          Use the field query created here when matching on numbers.
 java.lang.String valueAsString(org.apache.lucene.document.Fieldable field)
          Returns the actual value of the field as string.
 java.lang.Object valueForSearch(org.apache.lucene.document.Fieldable field)
          Override the default behavior (to return the string, and return the actual Number instance).
 
Methods inherited from class org.elasticsearch.index.mapper.core.AbstractFieldMapper
analyzed, boost, contentType, customBoost, doXContentBody, index, indexAnalyzer, indexed, indexedValue, name, names, omitNorms, omitTermFreqAndPositions, parse, parseCreateField, queryStringTermQuery, searchAnalyzer, store, stored, termVector, toXContent, traverse, traverse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.elasticsearch.index.mapper.Mapper
name, parse, traverse, traverse
 
Methods inherited from interface org.elasticsearch.common.xcontent.ToXContent
toXContent
 
Methods inherited from interface org.elasticsearch.index.mapper.FieldMapper
value, valueFromString
 

Field Detail

precisionStep

protected int precisionStep

fuzzyFactor

protected java.lang.String fuzzyFactor

dFuzzyFactor

protected double dFuzzyFactor

includeInAll

protected java.lang.Boolean includeInAll
Constructor Detail

NumberFieldMapper

protected NumberFieldMapper(FieldMapper.Names names,
                            int precisionStep,
                            @Nullable
                            java.lang.String fuzzyFactor,
                            org.apache.lucene.document.Field.Index index,
                            org.apache.lucene.document.Field.Store store,
                            float boost,
                            boolean omitNorms,
                            boolean omitTermFreqAndPositions,
                            NamedAnalyzer indexAnalyzer,
                            NamedAnalyzer searchAnalyzer)
Method Detail

parseFuzzyFactor

protected double parseFuzzyFactor(java.lang.String fuzzyFactor)

includeInAll

public void includeInAll(java.lang.Boolean includeInAll)
Specified by:
includeInAll in interface AllFieldMapper.IncludeInAll

includeInAllIfNotSet

public void includeInAllIfNotSet(java.lang.Boolean includeInAll)
Specified by:
includeInAllIfNotSet in interface AllFieldMapper.IncludeInAll

maxPrecisionStep

protected abstract int maxPrecisionStep()

precisionStep

public int precisionStep()

useFieldQueryWithQueryString

public boolean useFieldQueryWithQueryString()
Use the field query created here when matching on numbers.

Specified by:
useFieldQueryWithQueryString in interface FieldMapper<T extends java.lang.Number>
Overrides:
useFieldQueryWithQueryString in class AbstractFieldMapper<T extends java.lang.Number>

fieldQuery

public org.apache.lucene.search.Query fieldQuery(java.lang.String value,
                                                 QueryParseContext context)
Numeric field level query are basically range queries with same value and included. That's the recommended way to execute it.

Specified by:
fieldQuery in interface FieldMapper<T extends java.lang.Number>
Overrides:
fieldQuery in class AbstractFieldMapper<T extends java.lang.Number>

fuzzyQuery

public abstract org.apache.lucene.search.Query fuzzyQuery(java.lang.String value,
                                                          java.lang.String minSim,
                                                          int prefixLength,
                                                          int maxExpansions)
Specified by:
fuzzyQuery in interface FieldMapper<T extends java.lang.Number>
Overrides:
fuzzyQuery in class AbstractFieldMapper<T extends java.lang.Number>

fuzzyQuery

public abstract org.apache.lucene.search.Query fuzzyQuery(java.lang.String value,
                                                          double minSim,
                                                          int prefixLength,
                                                          int maxExpansions)
Specified by:
fuzzyQuery in interface FieldMapper<T extends java.lang.Number>
Overrides:
fuzzyQuery in class AbstractFieldMapper<T extends java.lang.Number>

fieldFilter

public org.apache.lucene.search.Filter fieldFilter(java.lang.String value)
Numeric field level filter are basically range queries with same value and included. That's the recommended way to execute it.

Specified by:
fieldFilter in interface FieldMapper<T extends java.lang.Number>
Overrides:
fieldFilter in class AbstractFieldMapper<T extends java.lang.Number>

rangeQuery

public abstract org.apache.lucene.search.Query rangeQuery(java.lang.String lowerTerm,
                                                          java.lang.String upperTerm,
                                                          boolean includeLower,
                                                          boolean includeUpper)
Description copied from interface: FieldMapper
Constructs a range query based on the mapper.

Specified by:
rangeQuery in interface FieldMapper<T extends java.lang.Number>
Overrides:
rangeQuery in class AbstractFieldMapper<T extends java.lang.Number>

rangeFilter

public abstract org.apache.lucene.search.Filter rangeFilter(java.lang.String lowerTerm,
                                                            java.lang.String upperTerm,
                                                            boolean includeLower,
                                                            boolean includeUpper)
Description copied from interface: FieldMapper
Constructs a range query filter based on the mapper.

Specified by:
rangeFilter in interface FieldMapper<T extends java.lang.Number>
Overrides:
rangeFilter in class AbstractFieldMapper<T extends java.lang.Number>

rangeFilter

public abstract org.apache.lucene.search.Filter rangeFilter(FieldDataCache fieldDataCache,
                                                            java.lang.String lowerTerm,
                                                            java.lang.String upperTerm,
                                                            boolean includeLower,
                                                            boolean includeUpper)
A range filter based on the field data cache.


valueForSearch

public java.lang.Object valueForSearch(org.apache.lucene.document.Fieldable field)
Override the default behavior (to return the string, and return the actual Number instance).

Specified by:
valueForSearch in interface FieldMapper<T extends java.lang.Number>
Overrides:
valueForSearch in class AbstractFieldMapper<T extends java.lang.Number>

valueAsString

public java.lang.String valueAsString(org.apache.lucene.document.Fieldable field)
Description copied from interface: FieldMapper
Returns the actual value of the field as string.

Specified by:
valueAsString in interface FieldMapper<T extends java.lang.Number>

merge

public void merge(Mapper mergeWith,
                  MergeContext mergeContext)
           throws MergeMappingException
Specified by:
merge in interface Mapper
Overrides:
merge in class AbstractFieldMapper<T extends java.lang.Number>
Throws:
MergeMappingException

close

public void close()
Specified by:
close in interface Mapper
Overrides:
close in class AbstractFieldMapper<T extends java.lang.Number>

fieldDataType

public abstract FieldDataType fieldDataType()
Specified by:
fieldDataType in interface FieldMapper<T extends java.lang.Number>
Overrides:
fieldDataType in class AbstractFieldMapper<T extends java.lang.Number>

popCachedStream

protected org.apache.lucene.analysis.NumericTokenStream popCachedStream()