org.apache.solr.common.SolrDocument Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of solr-solrj Show documentation
Show all versions of solr-solrj Show documentation
Apache Solr Solrj for jdk 1.5
The newest version!
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.solr.common;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.solr.common.util.NamedList;
/**
* 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
*/
public class SolrDocument implements Map, Iterable>, Serializable
{
private final Map _fields;
private List _childDocuments;
public SolrDocument()
{
_fields = new LinkedHashMap<>();
}
/**
* @return a list of field names defined in this document - this Collection is directly backed by this SolrDocument.
* @see #keySet
*/
public Collection getFieldNames() {
return this.keySet();
}
///////////////////////////////////////////////////////////////////
// Add / Set / Remove Fields
///////////////////////////////////////////////////////////////////
/**
* Remove all fields from the document
*/
@Override
public void clear()
{
_fields.clear();
if(_childDocuments != null) {
_childDocuments.clear();
}
}
/**
* Remove all fields with the name
*/
public boolean removeFields(String name)
{
return this.remove( name ) != null;
}
/**
* 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
*/
@SuppressWarnings("unchecked")
public void setField(String name, Object value)
{
if( value instanceof Object[] ) {
value = new ArrayList(Arrays.asList( (Object[])value ));
}
else if( value instanceof Collection ) {
// nothing
}
else if( value instanceof NamedList ) {
// nothing
}
else if( value instanceof Iterable ) {
ArrayList