You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by kr...@apache.org on 2016/11/16 03:14:37 UTC

[07/12] lucene-solr:jira/solr-8593: SOLR-9666: SolrJ LukeResponse support dynamic fields

SOLR-9666: SolrJ LukeResponse support dynamic fields


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/782923b8
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/782923b8
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/782923b8

Branch: refs/heads/jira/solr-8593
Commit: 782923b894a7eda6cc8940e83d1e8b4863d7d063
Parents: 6c3c6bc
Author: Kevin Risden <kr...@apache.org>
Authored: Tue Nov 15 18:41:11 2016 -0600
Committer: Kevin Risden <kr...@apache.org>
Committed: Tue Nov 15 18:58:00 2016 -0600

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  2 ++
 .../client/solrj/response/LukeResponse.java     | 31 ++++++++++++++++++++
 .../solr/client/solrj/SolrExampleTests.java     |  3 +-
 3 files changed, 35 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/782923b8/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index bc939b9..20873c3 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -116,6 +116,8 @@ New Features
 * SOLR-9633: Limit memory consumed by FastLRUCache with a new 'maxRamMB' config parameter.
   (yonik, Michael Sun, shalin)
 
+* SOLR-9666: SolrJ LukeResponse support dynamic fields (Fengtan via Kevin Risden)
+
 Optimizations
 ----------------------
 * SOLR-9704: Facet Module / JSON Facet API: Optimize blockChildren facets that have

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/782923b8/solr/solrj/src/java/org/apache/solr/client/solrj/response/LukeResponse.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/response/LukeResponse.java b/solr/solrj/src/java/org/apache/solr/client/solrj/response/LukeResponse.java
index 6e76deb..4b024e9 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/response/LukeResponse.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/response/LukeResponse.java
@@ -42,6 +42,7 @@ public class LukeResponse extends SolrResponseBase {
     boolean tokenized;
     String analyzer;
     List<String> fields;
+    List<String> dynamicFields;
 
 
     public FieldTypeInfo(String name) {
@@ -62,6 +63,10 @@ public class LukeResponse extends SolrResponseBase {
       return fields;
     }
 
+    public List<String> getDynamicFields() {
+      return dynamicFields;
+    }
+
     public String getName() {
       return name;
     }
@@ -96,6 +101,9 @@ public class LukeResponse extends SolrResponseBase {
         if ("fields".equals(key) && entry.getValue() != null) {
           List<String> theFields = (List<String>) entry.getValue();
           fields = new ArrayList<>(theFields);
+        } else if ("dynamicFields".equals(key) && entry.getValue() != null) {
+          List<String> theDynamicFields = (List<String>) entry.getValue();
+          dynamicFields = new ArrayList<>(theDynamicFields);
         } else if ("tokenized".equals(key) == true) {
           tokenized = Boolean.parseBoolean(entry.getValue().toString());
         } else if ("analyzer".equals(key) == true) {
@@ -194,6 +202,7 @@ public class LukeResponse extends SolrResponseBase {
 
   private NamedList<Object> indexInfo;
   private Map<String, FieldInfo> fieldInfo;
+  private Map<String, FieldInfo> dynamicFieldInfo;
   private Map<String, FieldTypeInfo> fieldTypeInfo;
 
   @Override
@@ -206,6 +215,8 @@ public class LukeResponse extends SolrResponseBase {
 
     NamedList<Object> schema = (NamedList<Object>) res.get("schema");
     NamedList<Object> flds = (NamedList<Object>) res.get("fields");
+    NamedList<Object> dynamicFlds = (NamedList<Object>) res.get("dynamicFields");
+
     if (flds == null && schema != null ) {
       flds = (NamedList<Object>) schema.get("fields");
     }
@@ -218,6 +229,18 @@ public class LukeResponse extends SolrResponseBase {
       }
     }
 
+    if (dynamicFlds == null && schema != null) {
+      dynamicFlds = (NamedList<Object>) schema.get("dynamicFields");
+    }
+    if (dynamicFlds != null) {
+      dynamicFieldInfo = new HashMap<>();
+      for (Map.Entry<String, Object> dynamicField : dynamicFlds) {
+        FieldInfo f = new FieldInfo(dynamicField.getKey());
+        f.read((NamedList<Object>) dynamicField.getValue());
+        dynamicFieldInfo.put(dynamicField.getKey(), f);
+      }
+    }
+
     if( schema != null ) {
       NamedList<Object> fldTypes = (NamedList<Object>) schema.get("types");
       if (fldTypes != null) {
@@ -274,5 +297,13 @@ public class LukeResponse extends SolrResponseBase {
     return fieldInfo.get(f);
   }
 
+  public Map<String, FieldInfo> getDynamicFieldInfo() {
+    return dynamicFieldInfo;
+  }
+
+  public FieldInfo getDynamicFieldInfo(String f) {
+    return dynamicFieldInfo.get(f);
+  }
+
   //----------------------------------------------------------------
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/782923b8/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
index 88227ba..f403f3f 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
@@ -694,13 +694,14 @@ abstract public class SolrExampleTests extends SolrExampleTestsBase
     luke.setShowSchema( false );
     LukeResponse rsp = luke.process( client );
     assertNull( rsp.getFieldTypeInfo() ); // if you don't ask for it, the schema is null
+    assertNull( rsp.getDynamicFieldInfo() );
     
     luke.setShowSchema( true );
     rsp = luke.process( client );
     assertNotNull( rsp.getFieldTypeInfo() );
     assertNotNull(rsp.getFieldInfo().get("id").getSchemaFlags());
     assertTrue(rsp.getFieldInfo().get("id").getSchemaFlags().contains(FieldFlag.INDEXED));
-
+    assertNotNull( rsp.getDynamicFieldInfo() );
   }
 
  @Test