Author: shalin
Date: Mon Dec 29 23:19:26 2008
New Revision: 730059
URL: http://svn.apache.org/viewvc?rev=730059&view=rev
Log:
SOLR-942 -- Different Fields with same column and different names do not work
Modified:
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataConfig.java
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java
Modified:
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataConfig.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataConfig.java?rev=730059&r1=730058&r2=730059&view=diff
==============================================================================
---
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataConfig.java
(original)
+++
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataConfig.java
Mon Dec 29 23:19:26 2008
@@ -100,7 +100,7 @@
public Script script;
- public Map<String, Field> colNameVsField;
+ public Map<String, List<Field>> colNameVsField;
public Entity() {
}
@@ -114,11 +114,14 @@
allAttributes = getAllAttributes(element);
List<Element> n = getChildNodes(element, "field");
fields = new ArrayList<Field>();
- colNameVsField = new HashMap<String, Field>();
+ colNameVsField = new HashMap<String, List<Field>>();
for (Element elem : n) {
Field field = new Field(elem);
fields.add(field);
- colNameVsField.put(field.column, field);
+ List<Field> l = colNameVsField.get(field.column);
+ if(l == null) l = new ArrayList<Field>();
+ l.add(field);
+ colNameVsField.put(field.column, l);
}
n = getChildNodes(element, "entity");
if (!n.isEmpty())
Modified:
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java?rev=730059&r1=730058&r2=730059&view=diff
==============================================================================
---
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
(original)
+++
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
Mon Dec 29 23:19:26 2008
@@ -378,7 +378,7 @@
// All fields starting with $ are special values and don't need to be
added
continue;
}
- DataConfig.Field field = entity.colNameVsField.get(key);
+ List<DataConfig.Field> field = entity.colNameVsField.get(key);
if (field == null && dataImporter.getSchema() != null) {
// This can be a dynamic field or a field which does not have an entry
in data-config ( an implicit field)
SchemaField sf = dataImporter.getSchema().getFieldOrNull(key);
@@ -390,11 +390,12 @@
}
//else do nothing. if we add it it may fail
} else {
- if (field != null && field.toWrite) {
- addFieldToDoc(entry.getValue(), field.getName(), field.boost,
field.multiValued, doc);
+ if (field != null ) {
+ for (DataConfig.Field f : field) {
+ if(f.toWrite) addFieldToDoc(entry.getValue(), f.getName(),
f.boost, f.multiValued, doc);
+ }
}
}
-
}
}
Modified:
lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java?rev=730059&r1=730058&r2=730059&view=diff
==============================================================================
---
lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java
(original)
+++
lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java
Mon Dec 29 23:19:26 2008
@@ -135,9 +135,9 @@
Map<String, Object> map = (Map<String, Object>) l.get(i);
SolrInputDocument doc = swi.docs.get(i);
for (Map.Entry<String, Object> entry : map.entrySet()) {
- Assert.assertEquals(entry.getValue(), doc.getFieldValue(entry
- .getKey()));
+ Assert.assertEquals(entry.getValue(),
doc.getFieldValue(entry.getKey()));
}
+ Assert.assertEquals(map.get("desc"), doc.getFieldValue("desc_s"));
}
Assert.assertEquals(1, di.getDocBuilder().importStatistics.queryCount
.get());
@@ -182,7 +182,8 @@
+ " <document name=\"X\" >\n"
+ " <entity name=\"x\" query=\"select * from x\">\n"
+ " <field column=\"id\"/>\n"
- + " <field column=\"desc\"/>\n" + " </entity>\n"
+ + " <field column=\"desc\"/>\n"
+ + " <field column=\"desc\" name=\"desc_s\" />" + "
</entity>\n"
+ " </document>\n" + "</dataConfig>";
}