mirror of https://github.com/apache/lucene.git
check for null copyField source, delay some allocations
git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@551060 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
89bf821efe
commit
951dab2048
|
@ -43,7 +43,7 @@ import org.apache.solr.schema.SchemaField;
|
||||||
public class DocumentBuilder {
|
public class DocumentBuilder {
|
||||||
private final IndexSchema schema;
|
private final IndexSchema schema;
|
||||||
private Document doc;
|
private Document doc;
|
||||||
private HashMap<String,String> map = new HashMap<String,String>();
|
private HashMap<String,String> map;
|
||||||
|
|
||||||
public DocumentBuilder(IndexSchema schema) {
|
public DocumentBuilder(IndexSchema schema) {
|
||||||
this.schema = schema;
|
this.schema = schema;
|
||||||
|
@ -51,7 +51,7 @@ public class DocumentBuilder {
|
||||||
|
|
||||||
public void startDoc() {
|
public void startDoc() {
|
||||||
doc = new Document();
|
doc = new Document();
|
||||||
map.clear();
|
map = new HashMap<String,String>();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void addSingleField(SchemaField sfield, String val, float boost) {
|
protected void addSingleField(SchemaField sfield, String val, float boost) {
|
||||||
|
@ -69,11 +69,6 @@ public class DocumentBuilder {
|
||||||
+ ": first='" + oldValue + "' second='" + val + "'");
|
+ ": first='" + oldValue + "' second='" + val + "'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( doc == null ) {
|
|
||||||
throw new SolrException( SolrException.ErrorCode.SERVER_ERROR,
|
|
||||||
"must call startDoc() before adding fields!" );
|
|
||||||
}
|
|
||||||
|
|
||||||
// field.setBoost(boost);
|
// field.setBoost(boost);
|
||||||
doc.add(field);
|
doc.add(field);
|
||||||
|
@ -122,18 +117,21 @@ public class DocumentBuilder {
|
||||||
|
|
||||||
// Check for all required fields -- Note, all fields with a
|
// Check for all required fields -- Note, all fields with a
|
||||||
// default value are defacto 'required' fields.
|
// default value are defacto 'required' fields.
|
||||||
List<String> missingFields = new ArrayList<String>( schema.getRequiredFields().size() );
|
List<String> missingFields = null;
|
||||||
for (SchemaField field : schema.getRequiredFields()) {
|
for (SchemaField field : schema.getRequiredFields()) {
|
||||||
if (doc.getField(field.getName() ) == null) {
|
if (doc.getField(field.getName() ) == null) {
|
||||||
if (field.getDefaultValue() != null) {
|
if (field.getDefaultValue() != null) {
|
||||||
doc.add( field.createField( field.getDefaultValue(), 1.0f ) );
|
doc.add( field.createField( field.getDefaultValue(), 1.0f ) );
|
||||||
} else {
|
} else {
|
||||||
|
if (missingFields==null) {
|
||||||
|
missingFields = new ArrayList<String>(1);
|
||||||
|
}
|
||||||
missingFields.add(field.getName());
|
missingFields.add(field.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (missingFields.size() > 0) {
|
if (missingFields != null) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
// add the uniqueKey if possible
|
// add the uniqueKey if possible
|
||||||
if( schema.getUniqueKeyField() != null ) {
|
if( schema.getUniqueKeyField() != null ) {
|
||||||
|
@ -181,7 +179,7 @@ public class DocumentBuilder {
|
||||||
|
|
||||||
// Make sure it has the correct number
|
// Make sure it has the correct number
|
||||||
Collection<Object> vals = doc.getFieldValues( name );
|
Collection<Object> vals = doc.getFieldValues( name );
|
||||||
if( vals.size() > 1 && !sfield.multiValued() ) {
|
if(vals.size() > 1 && sfield!=null && !sfield.multiValued() ) {
|
||||||
throw new SolrException( SolrException.ErrorCode.BAD_REQUEST,
|
throw new SolrException( SolrException.ErrorCode.BAD_REQUEST,
|
||||||
"ERROR: multiple values encountered for non multiValued field " +
|
"ERROR: multiple values encountered for non multiValued field " +
|
||||||
sfield.getName() + ": " +vals.toString() );
|
sfield.getName() + ": " +vals.toString() );
|
||||||
|
|
Loading…
Reference in New Issue