org.apache.solr.schema
Class IndexSchema

java.lang.Object
  extended by org.apache.solr.schema.IndexSchema

public final class IndexSchema
extends Object

IndexSchema contains information about the valid fields in an index and the types of those fields.


Nested Class Summary
static class IndexSchema.DynamicCopy
           
static class IndexSchema.DynamicField
           
static class IndexSchema.DynamicReplacement
           
 
Field Summary
static String DEFAULT_SCHEMA_FILE
           
static String LUCENE_MATCH_VERSION_PARAM
           
 
Constructor Summary
IndexSchema(SolrConfig solrConfig, String name, InputSource is)
          Constructs a schema using the specified resource name and stream.
 
Method Summary
 Analyzer getAnalyzer()
          Returns the Analyzer used when indexing documents for this index
 List<CopyField> getCopyFieldsList(String sourceField)
          Get all copy fields for a specified source field, both static and dynamic ones.
 Map<String,List<CopyField>> getCopyFieldsMap()
           
 SchemaField[] 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 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
 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
 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.
 String printableUniqueKey(Document doc)
          The printable value of the Unique Key field for the specified Document
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_SCHEMA_FILE

public static final String DEFAULT_SCHEMA_FILE
See Also:
Constant Field Values

LUCENE_MATCH_VERSION_PARAM

public static final String LUCENE_MATCH_VERSION_PARAM
See Also:
Constant Field Values
Constructor Detail

IndexSchema

public IndexSchema(SolrConfig solrConfig,
                   String name,
                   InputSource is)
Constructs a schema using the specified resource name and stream. If the is stream is null, the resource loader will load the schema resource by name.

See Also:
By default, this follows the normal config path directory searching rules., SolrResourceLoader.openResource(java.lang.String)
Method Detail

getDynamicFields

public IndexSchema.DynamicField[] getDynamicFields()

getCopyFieldsMap

public Map<String,List<CopyField>> getCopyFieldsMap()

getDynamicCopyFields

public IndexSchema.DynamicCopy[] getDynamicCopyFields()

getResourceLoader

public SolrResourceLoader getResourceLoader()
Since:
solr 1.4

getResourceName

public String getResourceName()
Gets the name of the resource used to instantiate this schema.


getSchemaName

public String getSchemaName()
Gets the name of the schema as specified in the schema resource.


getDefaultLuceneMatchVersion

public Version getDefaultLuceneMatchVersion()
The Default Lucene Match Version for this IndexSchema


getFields

public Map<String,SchemaField> 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 for SolrCoreAware classes. Outside inform, this could potentially throw a ConcurrentModificationException


getFieldTypes

public Map<String,FieldType> 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 for SolrCoreAware classes. Outside inform, this could potentially throw a ConcurrentModificationException


getFieldsWithDefaultValue

public List<SchemaField> getFieldsWithDefaultValue()
Provides direct access to the List containing all fields with a default value


getRequiredFields

public Collection<SchemaField> getRequiredFields()
Provides direct access to the List containing all required fields. This list contains all fields with default values.


getSimilarity

public Similarity getSimilarity()
Returns the Similarity used for this index


getAnalyzer

public Analyzer getAnalyzer()
Returns the Analyzer used when indexing documents for this index

This Analyzer is field (and dynamic field) name aware, and delegates to a field specific Analyzer based on the field type.


getQueryAnalyzer

public Analyzer getQueryAnalyzer()
Returns the Analyzer used when searching this index

This Analyzer is field (and dynamic field) name aware, and delegates to a field specific Analyzer based on the field type.


getDefaultSearchFieldName

public String getDefaultSearchFieldName()
Name of the default search field specified in the schema file.
Note:Avoid calling this, try to use this method so that the 'df' param is consulted as an override: QueryParsing.getDefaultField(IndexSchema, String)


getQueryParserDefaultOperator

public String getQueryParserDefaultOperator()
default operator ("AND" or "OR") for QueryParser


getUniqueKeyField

public SchemaField getUniqueKeyField()
Unique Key field specified in the schema file

Returns:
null if this schema has no unique key field

getUniqueKeyField

public IndexableField getUniqueKeyField(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(org.apache.lucene.document.Document)

printableUniqueKey

public String printableUniqueKey(Document doc)
The printable value of the Unique Key field for the specified Document

Returns:
null if this schema has no unique key field

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

registerDynamicFields

public void registerDynamicFields(SchemaField... fields)
Register one or more new Dynamic Fields with the Schema.

Parameters:
fields - The sequence of SchemaField

registerCopyField

public void registerCopyField(String source,
                              String dest)

registerCopyField

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

See Also:
SolrCoreAware

getDynamicFieldPrototypes

public SchemaField[] getDynamicFieldPrototypes()

getDynamicPattern

public String getDynamicPattern(String fieldName)

hasExplicitField

public boolean hasExplicitField(String fieldName)
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

public boolean isDynamicField(String fieldName)
Is the specified field dynamic or not.

Returns:
true if the specified field is dynamic

getFieldOrNull

public SchemaField getFieldOrNull(String fieldName)
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:
getFieldType(java.lang.String), getField(String)

getField

public SchemaField getField(String fieldName)
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:
SolrException - if no such field exists
See Also:
getFieldType(java.lang.String), getFieldOrNull(String)

getFieldType

public FieldType getFieldType(String fieldName)
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:
SolrException - if no such field exists
See Also:
getField(String), getFieldTypeNoEx(java.lang.String)

getFieldTypeByName

public 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.

Parameters:
fieldTypeName - The name of the FieldType
Returns:
The FieldType or null.

getFieldTypeNoEx

public FieldType getFieldTypeNoEx(String fieldName)
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:
getField(String), getFieldTypeNoEx(java.lang.String)

getDynamicFieldType

public FieldType getDynamicFieldType(String fieldName)
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:
SolrException - if no such field exists
See Also:
getField(String), getFieldTypeNoEx(java.lang.String)

getCopySources

public SchemaField[] getCopySources(String destField)
Get all copy fields, both the static and the dynamic ones.

Returns:
Array of fields copied into this field

getCopyFieldsList

public List<CopyField> getCopyFieldsList(String sourceField)
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

public boolean isCopyFieldTarget(SchemaField f)
Check if a field is used as the destination of a copyField operation

Since:
solr 1.3


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