org.apache.solr.schema

## Class ExternalFileField

- java.lang.Object
- - org.apache.solr.schema.FieldProperties
  - - org.apache.solr.schema.FieldType
    - - org.apache.solr.schema.ExternalFileField

- All Implemented Interfaces:
    SchemaAware

      public class ExternalFileField
      extends FieldType
      implements SchemaAware

  Get values from an external file instead of the index.

  `keyField` will normally be the unique key field, but it doesn't have to be.

  - It's OK to have a keyField value that can't be found in the index
  - It's OK to have some documents without a keyField in the file (defVal is used as the default)
  - It's OK for a keyField value to point to multiple documents (no uniqueness requirement)
  `valType` is a reference to another fieldType to define the value type of this field (must currently be TrieFloatField or LegacyFloatField (valType="pfloat|float|tfloat") if used). This parameter has never been implemented. As of Solr 3.6/4.0 it is optional and can be omitted. The format of the external file is simply newline separated keyFieldValue=floatValue.
  Example:
  `doc33=1.414`
  `doc34=3.14159`
  `doc40=42`

  Solr looks for the external file in the index directory under the name of external_<fieldname> or external_<fieldname>.*

  If any files of the latter pattern appear, the last (after being sorted by name) will be used and previous versions will be deleted. This is to help support systems where one may not be able to overwrite a file (like Windows, if the file is in use).

  If the external file has already been loaded, and it is changed, those changes will not be visible until a commit has been done.

  The external file may be sorted or unsorted by the key field, but it will be substantially slower (untested) if it isn't sorted.

  Fields of this type may currently only be used as a ValueSource in a FunctionQuery.

  See Also:
    `ExternalFileFieldReloader`

- - ### Nested Class Summary

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

      `FieldType.DefaultAnalyzer, FieldType.MultiValueSelector`

  - ### Field Summary

    - ### 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
    `ExternalFileField()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `FileFloatSource` | `getFileFloatSource(SchemaField field)` Get a FileFloatSource for the given field, using the datadir from the IndexSchema
    `FileFloatSource` | `getFileFloatSource(SchemaField field, String datadir)` Get a FileFloatSource for the given field.
    `SortField` | `getSortField(SchemaField field, boolean reverse)` Returns the SortField instance that should be used to sort fields of this type.
    `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.)
    `void` | `inform(IndexSchema schema)` Informs the `IndexSchema` provided by the `schema` parameter of an event (e.g., a new `FieldType` was added, etc.
    `protected void` | `init(IndexSchema schema, Map<String,String> args)` subclasses should initialize themselves with the args provided and remove valid arguments.
    `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.FieldType

      `checkSchemaField, createField, createField, createFields, getAnalyzerProperties, getClassArg, getDocValuesFormat, getFieldQuery, getIndexAnalyzer, getIndexOptions, getNamedPropertyValues, getNonFieldPropertyArgs, getNumericType, getPostingsFormat, getPrefixQuery, getQueryAnalyzer, getRangeQuery, getRewriteMethod, getSimilarity, getSimilarityFactory, getSingleValueSource, getStringSort, getTypeName, hasProperty, indexedToReadable, indexedToReadable, isExplicitAnalyzer, isExplicitQueryAnalyzer, isMultiValued, isPolyField, 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`

- - ### Constructor Detail

    - #### ExternalFileField

          public ExternalFileField()

  - ### 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 `FieldType`

    - #### 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 reverse)

      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)

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

    - #### getFileFloatSource

          public FileFloatSource getFileFloatSource(SchemaField field)

      Get a FileFloatSource for the given field, using the datadir from the IndexSchema
      Parameters:
        `field` - the field to get a source for
      Returns:
        a FileFloatSource

    - #### getFileFloatSource

          public FileFloatSource getFileFloatSource(SchemaField field,
                                                    String datadir)

      Get a FileFloatSource for the given field. Call this in preference to getFileFloatSource(SchemaField) if this may be called before the Core is fully initialised (eg in SolrEventListener calls).
      Parameters:
        `field` - the field to get a source for
        `datadir` - the data directory in which to look for the external file
      Returns:
        a FileFloatSource

    - #### inform

          public void inform(IndexSchema schema)

      Description copied from interface: `SchemaAware`
      Informs the `IndexSchema` provided by the `schema` parameter of an event (e.g., a new `FieldType` was added, etc.
      Specified by:
        `inform` in interface `SchemaAware`
      Parameters:
        `schema` - The `IndexSchema` instance that inform of the update to.

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