org.apache.solr.common

## Class SolrDocument

- java.lang.Object
- - org.apache.solr.common.SolrDocumentBase<Object,SolrDocument>
  - - org.apache.solr.common.SolrDocument

All Implemented Interfaces:
  Serializable, Iterable<Map.Entry<String,Object>>, Map<String,Object>, MapSerializable, MapWriter, NavigableObject

    public class SolrDocument
    extends SolrDocumentBase<Object,SolrDocument>
    implements Iterable<Map.Entry<String,Object>>

A concrete representation of a document within a Solr index. Unlike a lucene Document, a SolrDocument may have an Object value matching the type defined in schema.xml For indexing documents, use the SolrInputDocument that contains extra information for document and field boosting.

Since:
  solr 1.3
See Also:
  Serialized Form

### Nested Class Summary

### Nested classes/interfaces inherited from interface java.util.Map

`Map.Entry<K,V>`

### Nested classes/interfaces inherited from interface org.apache.solr.common.MapWriter

`MapWriter.EntryWriter`

### Field Summary

Fields
`protected Map<String,Object>` `_fields`

### Constructor Summary

Constructors
Constructor and Description
`SolrDocument()`
`SolrDocument(Map<String,Object> fields)`

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`void` `addChildDocument(SolrDocument child)`
`void` `addChildDocuments(Collection<SolrDocument> children)`
`void` `addField(String name, Object value)` This will add a field to the document.
`void` `clear()` Remove all fields from the document
`boolean` `containsKey(Object key)`
`boolean` `containsValue(Object value)`
`Set<Map.Entry<String,Object>>` `entrySet()`
`Object` `get(Object key)`
`int` `getChildDocumentCount()` Deprecated.
`List<SolrDocument>` `getChildDocuments()` Returns the list of anonymous child documents, or null if none.
`Collection<String>` `getFieldNames()` Get all field names.
`Object` `getFieldValue(String name)` Get the value or collection of values for a given field.
`Map<String,Object>` `getFieldValueMap()` Expose a Map interface to the solr fields.
`Collection<Object>` `getFieldValues(String name)` Get a collection of values for a given field name
`Map<String,Collection<Object>>` `getFieldValuesMap()` Expose a Map interface to the solr field value collection.
`Object` `getFirstValue(String name)` returns the first value for a field
`boolean` `hasChildDocuments()` Has anonymous children?
`boolean` `isEmpty()`
`Iterator<Map.Entry<String,Object>>` `iterator()` Iterate of String->Object keys
`Set<String>` `keySet()`
`Object` `put(String key, Object value)`
`void` `putAll(Map<? extends String,? extends Object> t)`
`Object` `remove(Object key)`
`boolean` `removeFields(String name)` Remove all fields with the name
`void` `setField(String name, Object value)` Set a field with the given object.
`int` `size()`
`String` `toString()`
`Collection<Object>` `values()`
`void` `visitSelfAndNestedDocs(BiConsumer<String,SolrDocument> consumer)` Beta API; may change at will.
`void` `writeMap(MapWriter.EntryWriter ew)`

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

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

### Methods inherited from interface java.lang.Iterable

`forEach, spliterator`

### Methods inherited from interface java.util.Map

`compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll`

### Methods inherited from interface org.apache.solr.common.MapWriter

`jsonStr, toMap`

### Methods inherited from interface org.apache.solr.common.NavigableObject

`_forEachEntry, _forEachEntry, _forEachEntry, _get, _get, _getStr, _getStr, _size`

### Field Detail

#### _fields

    protected final Map<String,Object> _fields

### Constructor Detail

#### SolrDocument

    public SolrDocument()

#### SolrDocument

    public SolrDocument(Map<String,Object> fields)

### Method Detail

#### writeMap

    public void writeMap(MapWriter.EntryWriter ew)
                  throws IOException

Specified by:
  `writeMap` in interface `MapWriter`
Throws:
  `IOException`

#### getFieldNames

    public Collection<String> getFieldNames()

Description copied from class: `SolrDocumentBase`
Get all field names.

Specified by:
  `getFieldNames` in class `SolrDocumentBase<Object,SolrDocument>`
Returns:
  a list of field names defined in this document - this Collection is directly backed by this SolrDocument.
See Also:
  `keySet()`

#### clear

    public void clear()

Remove all fields from the document

Specified by:
  `clear` in interface `Map<String,Object>`

#### removeFields

    public boolean removeFields(String name)

Remove all fields with the name

#### setField

    public void setField(String name,
                         Object value)

Set a field with the given object. If the object is an Array, it will set multiple fields with the included contents. This will replace any existing field with the given name

Specified by:
  `setField` in class `SolrDocumentBase<Object,SolrDocument>`
Parameters:
  `name` - name of the field to set
  `value` - value of the field

#### addField

    public void addField(String name,
                         Object value)

This will add a field to the document. If fields already exist with this name it will append value to the collection. If the value is Collection, each value will be added independently. The class type of value and the name parameter should match schema.xml. schema.xml can be found in conf directory under the solr home by default.

Specified by:
  `addField` in class `SolrDocumentBase<Object,SolrDocument>`
Parameters:
  `name` - Name of the field, should match one of the field names defined under "fields" tag in schema.xml.
  `value` - Value of the field, should be of same class type as defined by "type" attribute of the corresponding field in schema.xml.

#### getFirstValue

    public Object getFirstValue(String name)

returns the first value for a field

#### getFieldValue

    public Object getFieldValue(String name)

Get the value or collection of values for a given field.

Specified by:
  `getFieldValue` in class `SolrDocumentBase<Object,SolrDocument>`

#### getFieldValues

    public Collection<Object> getFieldValues(String name)

Get a collection of values for a given field name

Specified by:
  `getFieldValues` in class `SolrDocumentBase<Object,SolrDocument>`

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### iterator

    public Iterator<Map.Entry<String,Object>> iterator()

Iterate of String->Object keys

Specified by:
  `iterator` in interface `Iterable<Map.Entry<String,Object>>`

#### visitSelfAndNestedDocs

    public void visitSelfAndNestedDocs(BiConsumer<String,SolrDocument> consumer)

Beta API; may change at will.

#### getFieldValuesMap

    public Map<String,Collection<Object>> getFieldValuesMap()

Expose a Map interface to the solr field value collection.

#### getFieldValueMap

    public Map<String,Object> getFieldValueMap()

Expose a Map interface to the solr fields. This function is useful for JSTL

#### containsKey

    public boolean containsKey(Object key)

Specified by:
  `containsKey` in interface `Map<String,Object>`

#### containsValue

    public boolean containsValue(Object value)

Specified by:
  `containsValue` in interface `Map<String,Object>`

#### entrySet

    public Set<Map.Entry<String,Object>> entrySet()

Specified by:
  `entrySet` in interface `Map<String,Object>`

#### get

    public Object get(Object key)

Specified by:
  `get` in interface `Map<String,Object>`

#### isEmpty

    public boolean isEmpty()

Specified by:
  `isEmpty` in interface `Map<String,Object>`

#### keySet

    public Set<String> keySet()

Specified by:
  `keySet` in interface `Map<String,Object>`

#### put

    public Object put(String key,
                      Object value)

Specified by:
  `put` in interface `Map<String,Object>`

#### putAll

    public void putAll(Map<? extends String,? extends Object> t)

Specified by:
  `putAll` in interface `Map<String,Object>`

#### remove

    public Object remove(Object key)

Specified by:
  `remove` in interface `Map<String,Object>`

#### size

    public int size()

Specified by:
  `size` in interface `Map<String,Object>`

#### values

    public Collection<Object> values()

Specified by:
  `values` in interface `Map<String,Object>`

#### addChildDocument

    public void addChildDocument(SolrDocument child)

Specified by:
  `addChildDocument` in class `SolrDocumentBase<Object,SolrDocument>`

#### addChildDocuments

    public void addChildDocuments(Collection<SolrDocument> children)

Specified by:
  `addChildDocuments` in class `SolrDocumentBase<Object,SolrDocument>`

#### getChildDocuments

    public List<SolrDocument> getChildDocuments()

Description copied from class: `SolrDocumentBase`
Returns the list of anonymous child documents, or null if none. There may be other "labelled" child documents found in field values, in which the field name is the label. This may be deprecated in 8.0.

Specified by:
  `getChildDocuments` in class `SolrDocumentBase<Object,SolrDocument>`

#### hasChildDocuments

    public boolean hasChildDocuments()

Description copied from class: `SolrDocumentBase`
Has anonymous children?

Specified by:
  `hasChildDocuments` in class `SolrDocumentBase<Object,SolrDocument>`

#### getChildDocumentCount

    @Deprecated
    public int getChildDocumentCount()

Deprecated.
Description copied from class: `SolrDocumentBase`
The anonymous child document count.

Specified by:
  `getChildDocumentCount` in class `SolrDocumentBase<Object,SolrDocument>`