org.apache.solr.schema

## Class LatLonType

- java.lang.Object
- - org.apache.solr.schema.FieldProperties
  - - org.apache.solr.schema.FieldType
    - - org.apache.solr.schema.AbstractSubTypeFieldType
      - - org.apache.solr.schema.LatLonType

- All Implemented Interfaces:
    SchemaAware, SpatialQueryable

      public class LatLonType
      extends AbstractSubTypeFieldType
      implements SpatialQueryable

  Represents a Latitude/Longitude as a 2 dimensional point. Latitude is always specified first.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.apache.solr.schema.FieldType

      `FieldType.DefaultAnalyzer, FieldType.MultiValueSelector`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static int` | `LAT`
    `protected static int` | `LON`

    - ### Fields inherited from class org.apache.solr.schema.AbstractSubTypeFieldType

      `dynFieldProps, schema, SUB_FIELD_SUFFIX, SUB_FIELD_TYPE, subFieldType, subSuffix, subType, suffix, suffixes`

    - ### Fields inherited from class org.apache.solr.schema.FieldType

      `ANALYZER, args, CHAR_FILTER, CHAR_FILTERS, CLASS_NAME, docValuesFormat, falseProperties, FILTER, FILTERS, INDEX, INDEX_ANALYZER, MULTI_TERM, MULTI_TERM_ANALYZER, POLY_FIELD_SEPARATOR, postingsFormat, properties, QUERY, QUERY_ANALYZER, similarity, SIMILARITY, similarityFactory, TOKENIZER, trueProperties, TYPE, TYPE_NAME, typeName`

    - ### Fields inherited from class org.apache.solr.schema.FieldProperties

      `BINARY, DOC_VALUES, INDEXED, MULTIVALUED, OMIT_NORMS, OMIT_POSITIONS, OMIT_TF_POSITIONS, REQUIRED, SORT_MISSING_FIRST, SORT_MISSING_LAST, STORE_OFFSETS, STORE_TERMOFFSETS, STORE_TERMPAYLOADS, STORE_TERMPOSITIONS, STORE_TERMVECTORS, STORED, TOKENIZED, USE_DOCVALUES_AS_STORED`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LatLonType()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `IndexableField` | `createField(SchemaField field, Object value, float boost)` Used for adding a document when a field needs to be created from a type and a string.
    `List<IndexableField>` | `createFields(SchemaField field, Object value, float boost)` Given a `SchemaField`, create one or more `IndexableField` instances
    `Query` | `createSpatialQuery(QParser parser, SpatialOptions options)`
    `Query` | `getFieldQuery(QParser parser, SchemaField field, String externalVal)` Throws UnsupportedOperationException()
    `Query` | `getRangeQuery(QParser parser, SchemaField field, String part1, String part2, boolean minInclusive, boolean maxInclusive)` Returns a Query instance for doing range searches on this field type.
    `SortField` | `getSortField(SchemaField field, boolean top)` Returns the SortField instance that should be used to sort fields of this type.
    `double` | `getSphereRadius()`
    `UninvertingReader.Type` | `getUninversionType(SchemaField sf)` DocValues is not enabled for a field, but it's indexed, docvalues can be constructed on the fly (uninverted, aka fieldcache) on the first request to sort, facet, etc.
    `ValueSource` | `getValueSource(SchemaField field, QParser parser)` called to get the default value source (normally, from the Lucene FieldCache.)
    `protected void` | `init(IndexSchema schema, Map<String,String> args)` subclasses should initialize themselves with the args provided and remove valid arguments.
    `boolean` | `isPolyField()` A "polyField" is a FieldType that can produce more than one IndexableField instance for a single value, via the `FieldType.createFields(org.apache.solr.schema.SchemaField, Object, float)` method.
    `void` | `write(TextResponseWriter writer, String name, IndexableField f)` calls back to TextResponseWriter to write the field value

    - ### Methods inherited from class org.apache.solr.schema.AbstractSubTypeFieldType

      `createSuffixCache, getSubType, inform, subField`

    - ### Methods inherited from class org.apache.solr.schema.FieldType

      `checkSchemaField, createField, getAnalyzerProperties, getClassArg, getDocValuesFormat, getIndexAnalyzer, getIndexOptions, getNamedPropertyValues, getNonFieldPropertyArgs, getNumericType, getPostingsFormat, getPrefixQuery, getQueryAnalyzer, getRewriteMethod, getSimilarity, getSimilarityFactory, getSingleValueSource, getStringSort, getTypeName, hasProperty, indexedToReadable, indexedToReadable, isExplicitAnalyzer, isExplicitQueryAnalyzer, isMultiValued, isTokenized, marshalBase64SortValue, marshalSortValue, marshalStringSortValue, multiValuedFieldCache, readableToIndexed, readableToIndexed, restrictProps, setArgs, setIndexAnalyzer, setIsExplicitAnalyzer, setIsExplicitQueryAnalyzer, setQueryAnalyzer, setSimilarity, storedToIndexed, storedToReadable, supportsAnalyzers, toExternal, toInternal, toNativeType, toObject, toObject, toString, unmarshalBase64SortValue, unmarshalSortValue, unmarshalStringSortValue, useDocValuesAsStored`

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

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

- - ### Field Detail

    - #### LAT

          protected static final int LAT

      See Also:
        Constant Field Values

    - #### LON

          protected static final int LON

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### LatLonType

          public LatLonType()

  - ### Method Detail

    - #### init

          protected void init(IndexSchema schema,
                              Map<String,String> args)

      Description copied from class: `FieldType`
      subclasses should initialize themselves with the args provided and remove valid arguments. leftover arguments will cause an exception. Common boolean properties have already been handled.
      Overrides:
        `init` in class `AbstractSubTypeFieldType`

    - #### createFields

          public List<IndexableField> createFields(SchemaField field,
                                                   Object value,
                                                   float boost)

      Description copied from class: `FieldType`
      Given a `SchemaField`, create one or more `IndexableField` instances
      Overrides:
        `createFields` in class `FieldType`
      Parameters:
        `field` - the `SchemaField`
        `value` - The value to add to the field
        `boost` - The boost to apply
      Returns:
        An array of `IndexableField`
      See Also:
        `FieldType.createField(SchemaField, Object, float)`, `FieldType.isPolyField()`

    - #### getRangeQuery

          public Query getRangeQuery(QParser parser,
                                     SchemaField field,
                                     String part1,
                                     String part2,
                                     boolean minInclusive,
                                     boolean maxInclusive)

      Description copied from class: `FieldType`
      Returns a Query instance for doing range searches on this field type. `SolrQueryParser` currently passes part1 and part2 as null if they are '*' respectively. minInclusive and maxInclusive are both true currently by SolrQueryParser but that may change in the future. Also, other QueryParser implementations may have different semantics.

      Sub-classes should override this method to provide their own range query implementation. They should strive to handle nulls in part1 and/or part2 as well as unequal minInclusive and maxInclusive parameters gracefully.

      Overrides:
        `getRangeQuery` in class `FieldType`
      Parameters:
        `parser` - the `QParser` calling the method
        `field` - the schema field
        `part1` - the lower boundary of the range, nulls are allowed.
        `part2` - the upper boundary of the range, nulls are allowed
        `minInclusive` - whether the minimum of the range is inclusive or not
        `maxInclusive` - whether the maximum of the range is inclusive or not
      Returns:
        a Query instance to perform range search according to given parameters

    - #### getFieldQuery

          public Query getFieldQuery(QParser parser,
                                     SchemaField field,
                                     String externalVal)

      Description copied from class: `AbstractSubTypeFieldType`
      Throws UnsupportedOperationException()
      Overrides:
        `getFieldQuery` in class `AbstractSubTypeFieldType`
      Parameters:
        `parser` - The `QParser` calling the method
        `field` - The `SchemaField` of the field to search
        `externalVal` - The String representation of the value to search
      Returns:
        The `Query` instance. This implementation returns a `TermQuery` but overriding queries may not

    - #### createSpatialQuery

          public Query createSpatialQuery(QParser parser,
                                          SpatialOptions options)

      Specified by:
        `createSpatialQuery` in interface `SpatialQueryable`

    - #### getValueSource

          public ValueSource getValueSource(SchemaField field,
                                            QParser parser)

      Description copied from class: `FieldType`
      called to get the default value source (normally, from the Lucene FieldCache.)
      Overrides:
        `getValueSource` in class `FieldType`

    - #### isPolyField

          public boolean isPolyField()

      Description copied from class: `FieldType`
      A "polyField" is a FieldType that can produce more than one IndexableField instance for a single value, via the `FieldType.createFields(org.apache.solr.schema.SchemaField, Object, float)` method. This is useful when hiding the implementation details of a field from the Solr end user. For instance, a spatial point may be represented by multiple different fields.
      Overrides:
        `isPolyField` in class `FieldType`
      Returns:
        true if the `FieldType.createFields(org.apache.solr.schema.SchemaField, Object, float)` method may return more than one field

    - #### write

          public void write(TextResponseWriter writer,
                            String name,
                            IndexableField f)
                     throws IOException

      Description copied from class: `FieldType`
      calls back to TextResponseWriter to write the field value
      Specified by:
        `write` in class `FieldType`
      Throws:
        `IOException`

    - #### getSortField

          public SortField getSortField(SchemaField field,
                                        boolean top)

      Description copied from class: `FieldType`
      Returns the SortField instance that should be used to sort fields of this type.
      Specified by:
        `getSortField` in class `FieldType`
      See Also:
        `SchemaField.checkSortability()`

    - #### getUninversionType

          public UninvertingReader.Type getUninversionType(SchemaField sf)

      Description copied from class: `FieldType`
      DocValues is not enabled for a field, but it's indexed, docvalues can be constructed on the fly (uninverted, aka fieldcache) on the first request to sort, facet, etc. This specifies the structure to use.
      Specified by:
        `getUninversionType` in class `FieldType`
      Parameters:
        `sf` - field instance
      Returns:
        type to uninvert, or `null` (to disallow uninversion for the field)

    - #### createField

          public IndexableField createField(SchemaField field,
                                            Object value,
                                            float boost)

      Description copied from class: `FieldType`
      Used for adding a document when a field needs to be created from a type and a string.

      By default, the indexed value is the same as the stored value (taken from toInternal()). Having a different representation for external, internal, and indexed would present quite a few problems given the current Lucene architecture. An analyzer for adding docs would need to translate internal->indexed while an analyzer for querying would need to translate external->indexed.

      The only other alternative to having internal==indexed would be to have internal==external. In this case, toInternal should convert to the indexed representation, toExternal() should do nothing, and createField() should *not* call toInternal, but use the external value and set tokenized=true to get Lucene to convert to the internal(indexed) form.

      :TODO: clean up and clarify this explanation.
      Overrides:
        `createField` in class `FieldType`
      See Also:
        `FieldType.toInternal(java.lang.String)`

    - #### getSphereRadius

          public double getSphereRadius()

      Specified by:
        `getSphereRadius` in interface `SpatialQueryable`

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