Class IndexSchema
- Direct Known Subclasses:
ManagedIndexSchema
IndexSchema contains information about the valid fields in an index and the types of
those fields.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic final classstatic classstatic class -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringprotected Map<SchemaField, Integer> keys are all fields copied to, count is num of copyField directives that target them.static final Stringstatic final Stringstatic final Stringstatic final Stringprotected IndexSchema.DynamicCopy[]protected org.apache.solr.common.util.Cache<String, SchemaField> protected IndexSchema.DynamicField[]static final Stringstatic final Stringstatic final Stringprotected Map<String, SchemaField> static final Stringprotected List<SchemaField> static final Stringprotected booleanprotected final SolrResourceLoaderstatic final Stringprotected final org.apache.lucene.util.Versionstatic final Stringprotected Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringprotected Collection<SchemaField> protected Stringstatic final Stringstatic final Stringprotected List<SchemaAware> protected org.apache.lucene.search.similarities.Similaritystatic final Stringprotected SimilarityFactoryprotected final org.apache.solr.common.cloud.SolrClassLoaderstatic final Stringprotected final Propertiesstatic final Stringstatic final Stringstatic final Stringprotected SchemaFieldprotected Stringprotected FieldTypeprotected floatstatic final String -
Constructor Summary
ConstructorsModifierConstructorDescriptionIndexSchema(String name, ConfigSetService.ConfigResource schemaResource, org.apache.lucene.util.Version luceneVersion, SolrResourceLoader resourceLoader, Properties substitutableProperties) Constructs a schema using the specified resource name and stream.protectedIndexSchema(org.apache.lucene.util.Version luceneVersion, SolrResourceLoader loader, Properties substitutableProperties) -
Method Summary
Modifier and TypeMethodDescriptionaddCopyFields(String source, Collection<String> destinations, int maxChars) Copies this schema and adds the new copy fields to the copy.addCopyFields(Map<String, Collection<String>> copyFields, boolean persist) Copies this schema and adds the new copy fields to the copy Requires synchronizing on the object returned bygetSchemaUpdateLock().addDynamicFields(Collection<SchemaField> newDynamicFields, Map<String, Collection<String>> copyFieldNames, boolean persist) Copies this schema, adds the given dynamic fields to the copy, Requires synchronizing on the object returned bygetSchemaUpdateLock().addField(SchemaField newField) addField(SchemaField newField, boolean persist) Copies this schema, adds the given field to the copy Requires synchronizing on the object returned bygetSchemaUpdateLock().addField(SchemaField newField, Collection<String> copyFieldNames) Copies this schema, adds the given field to the copy Requires synchronizing on the object returned bygetSchemaUpdateLock().addFields(Collection<SchemaField> newFields) Copies this schema, adds the given fields to the copy.addFields(Collection<SchemaField> newFields, Map<String, Collection<String>> copyFieldNames, boolean persist) Copies this schema, adds the given fields to the copy Requires synchronizing on the object returned bygetSchemaUpdateLock().addFieldTypes(List<FieldType> fieldTypeList, boolean persist) Copies this schema, adds the given field type to the copy, Requires synchronizing on the object returned bygetSchemaUpdateLock().deleteCopyFields(Map<String, Collection<String>> copyFields) Copies this schema and deletes the given copy fields from the copy.deleteDynamicFields(Collection<String> fieldNamePatterns) Copies this schema, deletes the named dynamic fields from the copy.deleteFields(Collection<String> names) Copies this schema, deletes the named fields from the copy.deleteFieldTypes(Collection<String> names) Copies this schema, deletes the named field types from the copy.protected static IndexSchema.DynamicField[]dynamicFieldListToSortedArray(List<IndexSchema.DynamicField> dynamicFieldList) Sort the dynamic fields and stuff them in a normal array for faster access.getCopyFieldProperties(boolean showDetails, Set<String> requestedSourceFields, Set<String> requestedDestinationFields) Returns a list of copyField directives, with optional details and optionally restricting to those directives that contain the requested source and/or destination field names.getCopyFieldsList(String sourceField) Get all copy fields for a specified source field, both static and dynamic ones.getCopySources(String destField) Get all copy fields, both the static and the dynamic ones.org.apache.lucene.util.VersionThe Default Lucene Match Version for this IndexSchemagetDynamicFieldType(String fieldName) Returns the FieldType of the best matching dynamic field for the specified field namegetDynamicPattern(String fieldName) Returns the SchemaField that should be used for the specified field namegetFieldOrNull(String fieldName) Returns the SchemaField that should be used for the specified field name, or null if none exists.Provides direct access to the Map containing all explicit (ie: non-dynamic) fields in the index, keyed on field name.Provides direct access to the List containing all fields with a default valuegetFieldType(String fieldName) Returns the FieldType for the specified field name.getFieldTypeByName(String fieldTypeName) Given the name of aFieldType(not to be confused withgetFieldType(String)which takes in the name of a field), return theFieldType.getFieldTypeNoEx(String fieldName) Returns the FieldType for the specified field name.Provides direct access to the Map containing all Field Types in the index, keyed on field type name.org.apache.lucene.analysis.AnalyzerReturns the Analyzer used when indexing documents for this indexGet a map of property name -> value for the whole schema.getNamedPropertyValues(String name, org.apache.solr.common.params.SolrParams params) org.apache.lucene.queries.payloads.PayloadDecodergetPayloadDecoder(String field) org.apache.lucene.analysis.AnalyzerReturns the Analyzer used when searching this indexProvides direct access to the List containing all required fields.The resource loader to be used to load components related to the schema when the schema is loading / initialising.Gets the name of the resource used to instantiate this schema.Gets the name of the schema as specified in the schema resource.Returns the schema update lock that should be synchronized on to update the schema.org.apache.lucene.search.similarities.SimilarityReturns the Similarity used for this indexReturns the SimilarityFactory that constructed the Similarity for this indexorg.apache.solr.common.cloud.SolrClassLoaderUnique Key field specified in the schema fileorg.apache.lucene.index.IndexableFieldgetUniqueKeyField(org.apache.lucene.document.Document doc) The raw (field type encoded) value of the Unique Key field for the specified DocumentfloatbooleanhasExplicitField(String fieldName) Does the schema explicitly define the specified field, i.e.org.apache.lucene.util.BytesRefindexableUniqueKey(String idStr) Given a readable/printable uniqueKey value, return an indexable versionbooleanCheck if a field is used as the destination of a copyField operationprotected booleanisDuplicateDynField(List<IndexSchema.DynamicField> dFields, SchemaField f) booleanisDynamicField(String fieldName) Is the specified field dynamic or not.booleanbooleanHelper method that returnstrueif theROOT_FIELD_NAMEuses the exact same 'type' as thegetUniqueKeyField()protected booleanisValidDynamicField(List<IndexSchema.DynamicField> dFields, SchemaField f) protected static booleanisValidFieldGlob(String name) Returns true if the given name has exactly one asterisk either at the start or end of the nameprotected voidloadCopyFields(org.apache.solr.common.ConfigNode n) Loads the copy fieldsloadFields(org.apache.solr.common.ConfigNode n) Loads fields and dynamic fields.newDynamicField(String fieldNamePattern, String fieldType, Map<String, ?> options) Returns a SchemaField if the given dynamic field glob does not already exist in this schema, and does not match any dynamic fields in this schema.Returns a SchemaField if the given fieldName does not already exist in this schema, and does not match any dynamic fields in this schema.newFieldType(String typeName, String className, Map<String, ?> options) Returns a FieldType if the given typeName does not already exist in this schema.protected voidprintableUniqueKey(org.apache.lucene.document.Document doc) The printable value of the Unique Key field for the specified DocumentprintableUniqueKey(org.apache.lucene.util.BytesRef idBytes) Given an indexable uniqueKey value, return the readable/printable versionprintableUniqueKey(org.apache.solr.common.SolrDocument solrDoc) printableUniqueKey(org.apache.solr.common.SolrInputDocument solrDoc) protected voidvoidThis will re-create the Analyzers.voidregisterCopyField(String source, String dest) voidregisterCopyField(String source, String dest, int maxChars) NOTE: this function is not thread safe.voidregisterDynamicFields(SchemaField... fields) Register one or more new Dynamic Fields with the Schema.protected voidregisterExplicitSrcAndDestFields(String source, int maxChars, SchemaField destSchemaField, SchemaField sourceSchemaField) replaceDynamicField(String fieldNamePattern, FieldType replacementFieldType, Map<String, ?> replacementArgs) Copies this schema, deletes the named dynamic field from the copy, creates a new dynamic field with the same field name pattern using the given args, then rebinds any referring dynamic copy fields to the replacement dynamic field.replaceField(String fieldName, FieldType replacementFieldType, Map<String, ?> replacementArgs) Copies this schema, deletes the named field from the copy, creates a new field with the same name using the given args, then rebinds any referring copy fields to the replacement field.Copies this schema, deletes the named field type from the copy, creates a new field type with the same name using the given args, rebuilds fields and dynamic fields of the given type, then rebinds any referring copy fields to the rebuilt fields.voidsetResourceName(String resourceName) Sets the name of the resource used to instantiate this schema.
-
Field Details
-
COPY_FIELD
- See Also:
-
COPY_FIELDS
- See Also:
-
DEFAULT_SCHEMA_FILE
- See Also:
-
DESTINATION
- See Also:
-
DYNAMIC_FIELD
- See Also:
-
DYNAMIC_FIELDS
- See Also:
-
FIELD
- See Also:
-
FIELDS
- See Also:
-
FIELD_TYPE
- See Also:
-
FIELD_TYPES
- See Also:
-
INTERNAL_POLY_FIELD_PREFIX
- See Also:
-
LUCENE_MATCH_VERSION_PARAM
- See Also:
-
MAX_CHARS
- See Also:
-
NAME
- See Also:
-
NEST_PARENT_FIELD_NAME
- See Also:
-
NEST_PATH_FIELD_NAME
- See Also:
-
REQUIRED
- See Also:
-
SCHEMA
- See Also:
-
SIMILARITY
- See Also:
-
SOURCE
- See Also:
-
TYPE
- See Also:
-
TYPES
- See Also:
-
ROOT_FIELD_NAME
- See Also:
-
UNIQUE_KEY
- See Also:
-
VERSION
- See Also:
-
resourceName
-
name
-
luceneVersion
protected final org.apache.lucene.util.Version luceneVersion -
version
protected float version -
loader
-
solrClassLoader
protected final org.apache.solr.common.cloud.SolrClassLoader solrClassLoader -
substitutableProperties
-
fields
-
fieldTypes
-
fieldsWithDefaultValue
-
requiredFields
-
dynamicFields
-
dynamicFieldCache
-
schemaAware
-
copyFieldsMap
-
dynamicCopyFields
-
copyFieldTargetCounts
keys are all fields copied to, count is num of copyField directives that target them. -
similarity
protected org.apache.lucene.search.similarities.Similarity similarity -
similarityFactory
-
isExplicitSimilarity
protected boolean isExplicitSimilarity -
uniqueKeyField
-
uniqueKeyFieldName
-
uniqueKeyFieldType
-
nameMapping
-
-
Constructor Details
-
IndexSchema
public IndexSchema(String name, ConfigSetService.ConfigResource schemaResource, org.apache.lucene.util.Version luceneVersion, SolrResourceLoader resourceLoader, Properties substitutableProperties) Constructs a schema using the specified resource name and stream. By default, this follows the normal config path directory searching rules.- See Also:
-
IndexSchema
protected IndexSchema(org.apache.lucene.util.Version luceneVersion, SolrResourceLoader loader, Properties substitutableProperties)
-
-
Method Details
-
getDynamicFields
-
getCopyFieldsMap
-
getDynamicCopyFields
-
getResourceLoader
The resource loader to be used to load components related to the schema when the schema is loading / initialising. It should not be used for any other purpose or time; considerSolrCore.getResourceLoader()instead.- Since:
- solr 1.4
-
getResourceName
Gets the name of the resource used to instantiate this schema. -
getSolrClassLoader
public org.apache.solr.common.cloud.SolrClassLoader getSolrClassLoader() -
setResourceName
Sets the name of the resource used to instantiate this schema. -
getSchemaName
Gets the name of the schema as specified in the schema resource. -
getDefaultLuceneMatchVersion
public org.apache.lucene.util.Version getDefaultLuceneMatchVersion()The Default Lucene Match Version for this IndexSchema -
getVersion
public float getVersion() -
getFields
Provides direct access to the Map containing all explicit (ie: non-dynamic) fields in the index, keyed on field name.Modifying this Map (or any item in it) will affect the real schema
NOTE: this function is not thread safe. However, it is safe to use within the standard
inform( SolrCore core )function forSolrCoreAwareclasses. Outsideinform, this could potentially throw a ConcurrentModificationException -
getFieldTypes
Provides direct access to the Map containing all Field Types in the index, keyed on field type name.Modifying this Map (or any item in it) will affect the real schema. However if you make any modifications, be sure to call
refreshAnalyzers()to update the Analyzers for the registered fields.NOTE: this function is not thread safe. However, it is safe to use within the standard
inform( SolrCore core )function forSolrCoreAwareclasses. Outsideinform, this could potentially throw a ConcurrentModificationException -
getFieldsWithDefaultValue
Provides direct access to the List containing all fields with a default value -
getRequiredFields
Provides direct access to the List containing all required fields. This list contains all fields with default values. -
getSimilarity
public org.apache.lucene.search.similarities.Similarity getSimilarity()Returns the Similarity used for this index -
getSimilarityFactory
Returns the SimilarityFactory that constructed the Similarity for this index -
getIndexAnalyzer
public org.apache.lucene.analysis.Analyzer getIndexAnalyzer()Returns the Analyzer used when indexing documents for this indexThis Analyzer is field (and dynamic field) name aware, and delegates to a field specific Analyzer based on the field type.
-
getQueryAnalyzer
public org.apache.lucene.analysis.Analyzer getQueryAnalyzer()Returns the Analyzer used when searching this indexThis Analyzer is field (and dynamic field) name aware, and delegates to a field specific Analyzer based on the field type.
-
getUniqueKeyField
Unique Key field specified in the schema file- Returns:
- null if this schema has no unique key field
-
getUniqueKeyField
public org.apache.lucene.index.IndexableField getUniqueKeyField(org.apache.lucene.document.Document doc) The raw (field type encoded) value of the Unique Key field for the specified Document- Returns:
- null if this schema has no unique key field
- See Also:
-
printableUniqueKey
The printable value of the Unique Key field for the specified Document- Returns:
- null if this schema has no unique key field
-
printableUniqueKey
-
printableUniqueKey
-
printableUniqueKey
Given an indexable uniqueKey value, return the readable/printable version -
indexableUniqueKey
Given a readable/printable uniqueKey value, return an indexable version -
refreshAnalyzers
public void refreshAnalyzers()This will re-create the Analyzers. If you make any modifications to the Field map (getFields(), this function is required to synch the internally cached field analyzers.- Since:
- solr 1.3
-
getUninversionMapper
- See Also:
-
isMutable
public boolean isMutable() -
readSchema
-
postReadInform
protected void postReadInform() -
loadFields
Loads fields and dynamic fields.- Returns:
- a map from field name to explicit required value
-
dynamicFieldListToSortedArray
protected static IndexSchema.DynamicField[] dynamicFieldListToSortedArray(List<IndexSchema.DynamicField> dynamicFieldList) Sort the dynamic fields and stuff them in a normal array for faster access. -
loadCopyFields
protected void loadCopyFields(org.apache.solr.common.ConfigNode n) Loads the copy fields -
isValidFieldGlob
Returns true if the given name has exactly one asterisk either at the start or end of the name -
isValidDynamicField
-
registerDynamicFields
Register one or more new Dynamic Fields with the Schema.- Parameters:
fields- The sequence ofSchemaField
-
isDuplicateDynField
-
registerCopyField
-
registerCopyField
NOTE: this function is not thread safe. However, it is safe to use within the standardinform( SolrCore core )function forSolrCoreAwareclasses. Outsideinform, this could potentially throw a ConcurrentModificationException- See Also:
-
registerExplicitSrcAndDestFields
protected void registerExplicitSrcAndDestFields(String source, int maxChars, SchemaField destSchemaField, SchemaField sourceSchemaField) -
getDynamicFieldPrototypes
-
getDynamicPattern
-
hasExplicitField
Does the schema explicitly define the specified field, i.e. not as a result of a copyField declaration? We consider it explicitly defined if it matches a field name or a dynamicField name.- Returns:
- true if explicitly declared in the schema.
-
isDynamicField
Is the specified field dynamic or not.- Returns:
- true if the specified field is dynamic
-
getFieldOrNull
Returns the SchemaField that should be used for the specified field name, or null if none exists.- Parameters:
fieldName- may be an explicitly defined field or a name that matches a dynamic field.- Returns:
- The
SchemaField - See Also:
-
getField
Returns the SchemaField that should be used for the specified field name- Parameters:
fieldName- may be an explicitly defined field or a name that matches a dynamic field.- Returns:
- The
SchemaField - Throws:
org.apache.solr.common.SolrException- if no such field exists- See Also:
-
getFieldType
Returns the FieldType for the specified field name.This method exists because it can be more efficient then
getField(java.lang.String)for dynamic fields if a full SchemaField isn't needed.- Parameters:
fieldName- may be an explicitly created field, or a name that excercises a dynamic field.- Throws:
org.apache.solr.common.SolrException- if no such field exists- See Also:
-
getFieldTypeByName
Given the name of aFieldType(not to be confused withgetFieldType(String)which takes in the name of a field), return theFieldType. -
getFieldTypeNoEx
Returns the FieldType for the specified field name.This method exists because it can be more efficient then
getField(java.lang.String)for dynamic fields if a full SchemaField isn't needed.- Parameters:
fieldName- may be an explicitly created field, or a name that exercises a dynamic field.- Returns:
- null if field is not defined.
- See Also:
-
getDynamicFieldType
Returns the FieldType of the best matching dynamic field for the specified field name- Parameters:
fieldName- may be an explicitly created field, or a name that exercises a dynamic field.- Throws:
org.apache.solr.common.SolrException- if no such field exists- See Also:
-
getCopySources
Get all copy fields, both the static and the dynamic ones.- Returns:
- Array of fields copied into this field
-
getCopyFieldsList
Get all copy fields for a specified source field, both static and dynamic ones.- Returns:
- List of CopyFields to copy to.
- Since:
- solr 1.4
-
isCopyFieldTarget
Check if a field is used as the destination of a copyField operation- Since:
- solr 1.3
-
getNamedPropertyValues
Get a map of property name -> value for the whole schema. -
getNamedPropertyValues
-
getCopyFieldProperties
public List<org.apache.solr.common.util.SimpleOrderedMap<Object>> getCopyFieldProperties(boolean showDetails, Set<String> requestedSourceFields, Set<String> requestedDestinationFields) Returns a list of copyField directives, with optional details and optionally restricting to those directives that contain the requested source and/or destination field names.- Parameters:
showDetails- If true, source and destination dynamic bases, and explicit fields matched by source globs, will be added to dynamic copyField directives where appropriaterequestedSourceFields- If not null, output is restricted to those copyField directives with the requested source field namesrequestedDestinationFields- If not null, output is restricted to those copyField directives with the requested destination field names- Returns:
- a list of copyField directives
-
addField
Copies this schema, adds the given field to the copy Requires synchronizing on the object returned bygetSchemaUpdateLock().- Parameters:
newField- the SchemaField to addpersist- to persist the schema or not- Returns:
- a new IndexSchema based on this schema with newField added
- See Also:
-
addField
-
addField
Copies this schema, adds the given field to the copy Requires synchronizing on the object returned bygetSchemaUpdateLock().- Parameters:
newField- the SchemaField to addcopyFieldNames- 0 or more names of targets to copy this field to. The targets must already exist.- Returns:
- a new IndexSchema based on this schema with newField added
- See Also:
-
addFields
Copies this schema, adds the given fields to the copy. Requires synchronizing on the object returned bygetSchemaUpdateLock().- Parameters:
newFields- the SchemaFields to add- Returns:
- a new IndexSchema based on this schema with newFields added
- See Also:
-
addFields
public IndexSchema addFields(Collection<SchemaField> newFields, Map<String, Collection<String>> copyFieldNames, boolean persist) Copies this schema, adds the given fields to the copy Requires synchronizing on the object returned bygetSchemaUpdateLock().- Parameters:
newFields- the SchemaFields to addcopyFieldNames- 0 or more names of targets to copy this field to. The target fields must already exist.persist- Persist the schema or not- Returns:
- a new IndexSchema based on this schema with newFields added
- See Also:
-
deleteFields
Copies this schema, deletes the named fields from the copy.The schema will not be persisted.
Requires synchronizing on the object returned by
getSchemaUpdateLock().- Parameters:
names- the names of the fields to delete- Returns:
- a new IndexSchema based on this schema with the named fields deleted
-
replaceField
public IndexSchema replaceField(String fieldName, FieldType replacementFieldType, Map<String, ?> replacementArgs) Copies this schema, deletes the named field from the copy, creates a new field with the same name using the given args, then rebinds any referring copy fields to the replacement field.The schema will not be persisted.
Requires synchronizing on the object returned by
getSchemaUpdateLock().- Parameters:
fieldName- The name of the field to be replacedreplacementFieldType- The field type of the replacement fieldreplacementArgs- Initialization params for the replacement field- Returns:
- a new IndexSchema based on this schema with the named field replaced
-
addDynamicFields
public IndexSchema addDynamicFields(Collection<SchemaField> newDynamicFields, Map<String, Collection<String>> copyFieldNames, boolean persist) Copies this schema, adds the given dynamic fields to the copy, Requires synchronizing on the object returned bygetSchemaUpdateLock().- Parameters:
newDynamicFields- the SchemaFields to addcopyFieldNames- 0 or more names of targets to copy this field to. The target fields must already exist.persist- to persist the schema or not- Returns:
- a new IndexSchema based on this schema with newDynamicFields added
- See Also:
-
deleteDynamicFields
Copies this schema, deletes the named dynamic fields from the copy.The schema will not be persisted.
Requires synchronizing on the object returned by
getSchemaUpdateLock().- Parameters:
fieldNamePatterns- the names of the dynamic fields to delete- Returns:
- a new IndexSchema based on this schema with the named dynamic fields deleted
-
replaceDynamicField
public ManagedIndexSchema replaceDynamicField(String fieldNamePattern, FieldType replacementFieldType, Map<String, ?> replacementArgs) Copies this schema, deletes the named dynamic field from the copy, creates a new dynamic field with the same field name pattern using the given args, then rebinds any referring dynamic copy fields to the replacement dynamic field.The schema will not be persisted.
Requires synchronizing on the object returned by
getSchemaUpdateLock().- Parameters:
fieldNamePattern- The glob for the dynamic field to be replacedreplacementFieldType- The field type of the replacement dynamic fieldreplacementArgs- Initialization params for the replacement dynamic field- Returns:
- a new IndexSchema based on this schema with the named dynamic field replaced
-
addCopyFields
Copies this schema and adds the new copy fields to the copy Requires synchronizing on the object returned bygetSchemaUpdateLock().- Parameters:
copyFields- Key is the name of the source field name, value is a collection of target field names. Fields must exist.persist- to persist the schema or not- Returns:
- The new Schema with the copy fields added
- See Also:
-
addCopyFields
Copies this schema and adds the new copy fields to the copy.Requires synchronizing on the object returned by
getSchemaUpdateLock()- Parameters:
source- source field namedestinations- collection of target field namesmaxChars- max number of characters to copy from the source to each of the destinations. UseCopyField.UNLIMITEDif you don't want to limit the number of copied chars.- Returns:
- The new Schema with the copy fields added
-
deleteCopyFields
Copies this schema and deletes the given copy fields from the copy.The schema will not be persisted.
Requires synchronizing on the object returned by
getSchemaUpdateLock().- Parameters:
copyFields- Key is the name of the source field name, value is a collection of target field names. Each corresponding copy field directives must exist.- Returns:
- The new Schema with the copy fields deleted
-
newField
Returns a SchemaField if the given fieldName does not already exist in this schema, and does not match any dynamic fields in this schema. The resulting SchemaField can be used in a call toaddField(SchemaField).- Parameters:
fieldName- the name of the field to addfieldType- the field type for the new fieldoptions- the options to use when creating the SchemaField- Returns:
- The created SchemaField
- See Also:
-
newDynamicField
public SchemaField newDynamicField(String fieldNamePattern, String fieldType, Map<String, ?> options) Returns a SchemaField if the given dynamic field glob does not already exist in this schema, and does not match any dynamic fields in this schema. The resulting SchemaField can be used in a call toaddField(SchemaField).- Parameters:
fieldNamePattern- the pattern for the dynamic field to addfieldType- the field type for the new fieldoptions- the options to use when creating the SchemaField- Returns:
- The created SchemaField
- See Also:
-
getSchemaUpdateLock
Returns the schema update lock that should be synchronized on to update the schema. Only applicable to mutable schemas.- Returns:
- the schema update lock object to synchronize on
-
addFieldTypes
Copies this schema, adds the given field type to the copy, Requires synchronizing on the object returned bygetSchemaUpdateLock().- Parameters:
fieldTypeList- a list of FieldTypes to addpersist- to persist the schema or not- Returns:
- a new IndexSchema based on this schema with the new types added
- See Also:
-
deleteFieldTypes
Copies this schema, deletes the named field types from the copy.The schema will not be persisted.
Requires synchronizing on the object returned by
getSchemaUpdateLock().- Parameters:
names- the names of the field types to delete- Returns:
- a new IndexSchema based on this schema with the named field types deleted
-
replaceFieldType
public IndexSchema replaceFieldType(String typeName, String replacementClassName, Map<String, Object> replacementArgs) Copies this schema, deletes the named field type from the copy, creates a new field type with the same name using the given args, rebuilds fields and dynamic fields of the given type, then rebinds any referring copy fields to the rebuilt fields.The schema will not be persisted.
Requires synchronizing on the object returned by
getSchemaUpdateLock().- Parameters:
typeName- The name of the field type to be replacedreplacementClassName- The class name of the replacement field typereplacementArgs- Initialization params for the replacement field type- Returns:
- a new IndexSchema based on this schema with the named field type replaced
-
newFieldType
Returns a FieldType if the given typeName does not already exist in this schema. The resulting FieldType can be used in a call toaddFieldTypes(java.util.List, boolean).- Parameters:
typeName- the name of the type to addclassName- the name of the FieldType classoptions- the options to use when creating the FieldType- Returns:
- The created FieldType
- See Also:
-
isUsableForChildDocs
public boolean isUsableForChildDocs()Helper method that returnstrueif theROOT_FIELD_NAMEuses the exact same 'type' as thegetUniqueKeyField()- NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
-
getPayloadDecoder
-