You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by sh...@apache.org on 2008/12/30 08:19:26 UTC

svn commit: r730059 - in /lucene/solr/trunk/contrib/dataimporthandler/src: main/java/org/apache/solr/handler/dataimport/ test/java/org/apache/solr/handler/dataimport/

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>";
 
 }