public class IndexSchema extends Object
IndexSchema
contains information about the valid fields in an index
and the types of those fields.Modifier and Type | Class and Description |
---|---|
static class |
IndexSchema.DynamicCopy |
static class |
IndexSchema.DynamicField |
static class |
IndexSchema.DynamicReplacement |
Modifier | Constructor and Description |
---|---|
protected |
IndexSchema(SolrConfig solrConfig,
SolrResourceLoader loader) |
|
IndexSchema(SolrConfig solrConfig,
String name,
InputSource is)
Constructs a schema using the specified resource name and stream.
|
Modifier and Type | Method and Description |
---|---|
IndexSchema |
addCopyFields(Map<String,Collection<String>> copyFields)
Copies this schema and adds the new copy fields to the copy, then persists the new schema
|
IndexSchema |
addField(SchemaField newField)
Copies this schema, adds the given field to the copy, then persists the new schema.
|
IndexSchema |
addField(SchemaField newField,
Collection<String> copyFieldNames)
Copies this schema, adds the given field to the copy, then persists the new schema.
|
IndexSchema |
addFields(Collection<SchemaField> newFields)
Copies this schema, adds the given fields to the copy, then persists the new schema.
|
IndexSchema |
addFields(Collection<SchemaField> newFields,
Map<String,Collection<String>> copyFieldNames)
Copies this schema, adds the given fields to the copy, then persists the new schema.
|
Analyzer |
getAnalyzer()
Deprecated.
(4.9) Use
getIndexAnalyzer() instead. |
List<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.
|
List<CopyField> |
getCopyFieldsList(String sourceField)
Get all copy fields for a specified source field, both static
and dynamic ones.
|
Map<String,List<CopyField>> |
getCopyFieldsMap() |
List<String> |
getCopySources(String destField)
Get all copy fields, both the static and the dynamic ones.
|
Version |
getDefaultLuceneMatchVersion()
The Default Lucene Match Version for this IndexSchema
|
String |
getDefaultSearchFieldName()
Name of the default search field specified in the schema file.
|
IndexSchema.DynamicCopy[] |
getDynamicCopyFields() |
SchemaField[] |
getDynamicFieldPrototypes() |
IndexSchema.DynamicField[] |
getDynamicFields() |
FieldType |
getDynamicFieldType(String fieldName)
Returns the FieldType of the best matching dynamic field for
the specified field name
|
String |
getDynamicPattern(String fieldName) |
SchemaField |
getField(String fieldName)
Returns the SchemaField that should be used for the specified field name
|
SchemaField |
getFieldOrNull(String fieldName)
Returns the SchemaField that should be used for the specified field name, or
null if none exists.
|
Map<String,SchemaField> |
getFields()
Provides direct access to the Map containing all explicit
(ie: non-dynamic) fields in the index, keyed on field name.
|
List<SchemaField> |
getFieldsWithDefaultValue()
Provides direct access to the List containing all fields with a default value
|
FieldType |
getFieldType(String fieldName)
Returns the FieldType for the specified field name.
|
FieldType |
getFieldTypeByName(String fieldTypeName)
Given the name of a
FieldType (not to be confused with getFieldType(String) which
takes in the name of a field), return the FieldType . |
FieldType |
getFieldTypeNoEx(String fieldName)
Returns the FieldType for the specified field name.
|
Map<String,FieldType> |
getFieldTypes()
Provides direct access to the Map containing all Field Types
in the index, keyed on field type name.
|
Analyzer |
getIndexAnalyzer()
Returns the Analyzer used when indexing documents for this index
|
SimpleOrderedMap<Object> |
getNamedPropertyValues()
Get a map of property name -> value for the whole schema.
|
Analyzer |
getQueryAnalyzer()
Returns the Analyzer used when searching this index
|
String |
getQueryParserDefaultOperator()
default operator ("AND" or "OR") for QueryParser
|
Collection<SchemaField> |
getRequiredFields()
Provides direct access to the List containing all required fields.
|
SolrResourceLoader |
getResourceLoader() |
String |
getResourceName()
Gets the name of the resource used to instantiate this schema.
|
String |
getSchemaName()
Gets the name of the schema as specified in the schema resource.
|
Similarity |
getSimilarity()
Returns the Similarity used for this index
|
SimilarityFactory |
getSimilarityFactory()
Returns the SimilarityFactory that constructed the Similarity for this index
|
SchemaField |
getUniqueKeyField()
Unique Key field specified in the schema file
|
IndexableField |
getUniqueKeyField(Document doc)
The raw (field type encoded) value of the Unique Key field for
the specified Document
|
float |
getVersion() |
boolean |
hasExplicitField(String fieldName)
Does the schema explicitly define the specified field, i.e.
|
boolean |
isCopyFieldTarget(SchemaField f)
Check if a field is used as the destination of a copyField operation
|
boolean |
isDynamicField(String fieldName)
Is the specified field dynamic or not.
|
boolean |
isMutable() |
protected void |
loadCopyFields(Document document,
XPath xpath)
Loads the copy fields
|
protected Map<String,Boolean> |
loadFields(Document document,
XPath xpath)
Loads fields and dynamic fields.
|
SchemaField |
newField(String fieldName,
String fieldType,
Map<String,?> options)
Returns a SchemaField if the given fieldName does not already
exist in this schema, and does not match any dynamic fields
in this schema.
|
String |
printableUniqueKey(Document doc)
The printable value of the Unique Key field for
the specified Document
|
protected void |
readSchema(InputSource is) |
void |
refreshAnalyzers()
This will re-create the Analyzers.
|
void |
registerCopyField(String source,
String dest) |
void |
registerCopyField(String source,
String dest,
int maxChars)
NOTE: this function is not thread safe.
|
void |
registerDynamicFields(SchemaField... fields)
Register one or more new Dynamic Fields with the Schema.
|
void |
setResourceName(String resourceName)
Sets the name of the resource used to instantiate this schema.
|
public static final String COPY_FIELD
public static final String COPY_FIELDS
public static final String DEFAULT_OPERATOR
public static final String DEFAULT_SCHEMA_FILE
public static final String DEFAULT_SEARCH_FIELD
public static final String DESTINATION
public static final String DYNAMIC_FIELD
public static final String DYNAMIC_FIELDS
public static final String FIELD
public static final String FIELDS
public static final String FIELD_TYPE
public static final String FIELD_TYPES
public static final String INTERNAL_POLY_FIELD_PREFIX
public static final String LUCENE_MATCH_VERSION_PARAM
public static final String NAME
public static final String REQUIRED
public static final String SCHEMA
public static final String SIMILARITY
public static final String SLASH
public static final String SOLR_QUERY_PARSER
public static final String SOURCE
public static final String TYPE
public static final String TYPES
public static final String UNIQUE_KEY
public static final String VERSION
protected final SolrConfig solrConfig
protected String resourceName
protected String name
protected float version
protected final SolrResourceLoader loader
protected Map<String,SchemaField> fields
protected List<SchemaField> fieldsWithDefaultValue
protected Collection<SchemaField> requiredFields
protected volatile IndexSchema.DynamicField[] dynamicFields
protected List<SchemaAware> schemaAware
protected String defaultSearchFieldName
protected String queryParserDefaultOperator
protected boolean isExplicitQueryParserDefaultOperator
protected IndexSchema.DynamicCopy[] dynamicCopyFields
protected Map<SchemaField,Integer> copyFieldTargetCounts
protected Similarity similarity
protected SimilarityFactory similarityFactory
protected boolean isExplicitSimilarity
protected SchemaField uniqueKeyField
protected String uniqueKeyFieldName
protected FieldType uniqueKeyFieldType
public IndexSchema(SolrConfig solrConfig, String name, InputSource is)
protected IndexSchema(SolrConfig solrConfig, SolrResourceLoader loader)
public IndexSchema.DynamicField[] getDynamicFields()
public IndexSchema.DynamicCopy[] getDynamicCopyFields()
public SolrResourceLoader getResourceLoader()
public String getResourceName()
public void setResourceName(String resourceName)
public String getSchemaName()
public Version getDefaultLuceneMatchVersion()
public float getVersion()
public Map<String,SchemaField> getFields()
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 for SolrCoreAware
classes.
Outside inform
, this could potentially throw a ConcurrentModificationException
public Map<String,FieldType> getFieldTypes()
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 for SolrCoreAware
classes.
Outside inform
, this could potentially throw a ConcurrentModificationException
public List<SchemaField> getFieldsWithDefaultValue()
public Collection<SchemaField> getRequiredFields()
public Similarity getSimilarity()
public SimilarityFactory getSimilarityFactory()
@Deprecated public Analyzer getAnalyzer()
getIndexAnalyzer()
instead.This Analyzer is field (and dynamic field) name aware, and delegates to a field specific Analyzer based on the field type.
public Analyzer getIndexAnalyzer()
This Analyzer is field (and dynamic field) name aware, and delegates to a field specific Analyzer based on the field type.
public Analyzer getQueryAnalyzer()
This Analyzer is field (and dynamic field) name aware, and delegates to a field specific Analyzer based on the field type.
public String getDefaultSearchFieldName()
QueryParsing.getDefaultField(IndexSchema, String)
public String getQueryParserDefaultOperator()
public SchemaField getUniqueKeyField()
public IndexableField getUniqueKeyField(Document doc)
printableUniqueKey(org.apache.lucene.document.Document)
public String printableUniqueKey(Document doc)
public void refreshAnalyzers()
getFields()
, this function is required
to synch the internally cached field analyzers.public boolean isMutable()
protected void readSchema(InputSource is)
protected Map<String,Boolean> loadFields(Document document, XPath xpath) throws XPathExpressionException
XPathExpressionException
protected void loadCopyFields(Document document, XPath xpath) throws XPathExpressionException
XPathExpressionException
public void registerDynamicFields(SchemaField... fields)
fields
- The sequence of SchemaField
public void registerCopyField(String source, String dest, int maxChars)
NOTE: this function is not thread safe. However, it is safe to use within the standard
inform( SolrCore core )
function for SolrCoreAware
classes.
Outside inform
, this could potentially throw a ConcurrentModificationException
SolrCoreAware
public SchemaField[] getDynamicFieldPrototypes()
public boolean hasExplicitField(String fieldName)
public boolean isDynamicField(String fieldName)
public SchemaField getFieldOrNull(String fieldName)
fieldName
- may be an explicitly defined field or a name that
matches a dynamic field.SchemaField
getFieldType(java.lang.String)
,
getField(String)
public SchemaField getField(String fieldName)
fieldName
- may be an explicitly defined field or a name that
matches a dynamic field.SchemaField
SolrException
- if no such field existsgetFieldType(java.lang.String)
,
getFieldOrNull(String)
public FieldType getFieldType(String fieldName)
This method exists because it can be more efficient then
getField(java.lang.String)
for dynamic fields if a full SchemaField isn't needed.
fieldName
- may be an explicitly created field, or a name that
excercises a dynamic field.SolrException
- if no such field existsgetField(String)
,
getFieldTypeNoEx(java.lang.String)
public FieldType getFieldTypeByName(String fieldTypeName)
FieldType
(not to be confused with getFieldType(String)
which
takes in the name of a field), return the FieldType
.public FieldType getFieldTypeNoEx(String fieldName)
This method exists because it can be more efficient then
getField(java.lang.String)
for dynamic fields if a full SchemaField isn't needed.
fieldName
- may be an explicitly created field, or a name that
exercises a dynamic field.getField(String)
,
getFieldTypeNoEx(java.lang.String)
public FieldType getDynamicFieldType(String fieldName)
fieldName
- may be an explicitly created field, or a name that
exercises a dynamic field.SolrException
- if no such field existsgetField(String)
,
getFieldTypeNoEx(java.lang.String)
public List<String> getCopySources(String destField)
public List<CopyField> getCopyFieldsList(String sourceField)
public boolean isCopyFieldTarget(SchemaField f)
public SimpleOrderedMap<Object> getNamedPropertyValues()
public List<SimpleOrderedMap<Object>> getCopyFieldProperties(boolean showDetails, Set<String> requestedSourceFields, Set<String> requestedDestinationFields)
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 namespublic IndexSchema addField(SchemaField newField)
newField
- the SchemaField to addnewField(String, String, Map)
public IndexSchema addField(SchemaField newField, Collection<String> copyFieldNames)
newField
- the SchemaField to addcopyFieldNames
- 0 or more names of targets to copy this field to. The targets must already exist.newField(String, String, Map)
public IndexSchema addFields(Collection<SchemaField> newFields)
newFields
- the SchemaFields to addnewField(String, String, Map)
public IndexSchema addFields(Collection<SchemaField> newFields, Map<String,Collection<String>> copyFieldNames)
newFields
- the SchemaFields to addcopyFieldNames
- 0 or more names of targets to copy this field to. The target fields must already exist.newField(String, String, Map)
public IndexSchema addCopyFields(Map<String,Collection<String>> copyFields)
copyFields
- Key is the name of the source field name, value is a collection of target field names. Fields must exist.public SchemaField newField(String fieldName, String fieldType, Map<String,?> options)
addField(SchemaField)
.fieldName
- the name of the field to addfieldType
- the field type for the new fieldoptions
- the options to use when creating the SchemaFieldaddField(SchemaField)
Copyright © 2000-2014 Apache Software Foundation. All Rights Reserved.