You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by er...@apache.org on 2012/02/08 23:31:07 UTC

svn commit: r1242152 - in /lucene/dev/branches/branch_3x/solr/core/src: java/org/apache/solr/handler/admin/LukeRequestHandler.java test/org/apache/solr/handler/admin/LukeRequestHandlerTest.java

Author: erick
Date: Wed Feb  8 22:31:07 2012
New Revision: 1242152

URL: http://svn.apache.org/viewvc?rev=1242152&view=rev
Log:
Fix for SOLR-3111 - fl param not working when more than one field was specified. Also honors * for "all fields"

Modified:
    lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
    lucene/dev/branches/branch_3x/solr/core/src/test/org/apache/solr/handler/admin/LukeRequestHandlerTest.java

Modified: lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java?rev=1242152&r1=1242151&r2=1242152&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java (original)
+++ lucene/dev/branches/branch_3x/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java Wed Feb  8 22:31:07 2012
@@ -101,9 +101,11 @@ public class LukeRequestHandler extends 
 
     // If no doc is given, show all fields and top terms
     Set<String> fields = null;
-    if( params.get( CommonParams.FL ) != null ) {
-      fields = new TreeSet<String>(Arrays.asList(params.getParams( CommonParams.FL ) ) );
+    String fl = params.get(CommonParams.FL);
+    if (fl != null) {
+      fields = new TreeSet<String>(Arrays.asList(fl.split( "[,\\s]+" )));
     }
+
     if ( "schema".equals( params.get( "show" ))) {
       numTerms = 0; // Abort any statistics gathering.
     }
@@ -301,7 +303,7 @@ public class LukeRequestHandler extends 
     // Walk the term enum and keep a priority queue for each map in our set
     SimpleOrderedMap<Object> finfo = new SimpleOrderedMap<Object>();
     for (String fieldName : fieldNames) {
-      if( fields != null && !fields.contains( fieldName ) ) {
+      if (fields != null && ! fields.contains(fieldName) && ! fields.contains("*")) {
         continue; // if a field is specified, only them
       }
       SimpleOrderedMap<Object> f = new SimpleOrderedMap<Object>();
@@ -536,7 +538,7 @@ public class LukeRequestHandler extends 
             lastField = field;
 
             // Skip fields not in fl list (if specified)
-            if (fields != null && !fields.contains(field)) {
+            if (fields != null && !fields.contains(field) && ! fields.contains("*")) {
               continue;
             }
             tiq = new TopTermQueue(numTerms + 1);

Modified: lucene/dev/branches/branch_3x/solr/core/src/test/org/apache/solr/handler/admin/LukeRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/core/src/test/org/apache/solr/handler/admin/LukeRequestHandlerTest.java?rev=1242152&r1=1242151&r2=1242152&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/core/src/test/org/apache/solr/handler/admin/LukeRequestHandlerTest.java (original)
+++ lucene/dev/branches/branch_3x/solr/core/src/test/org/apache/solr/handler/admin/LukeRequestHandlerTest.java Wed Feb  8 22:31:07 2012
@@ -18,7 +18,9 @@
 package org.apache.solr.handler.admin;
 
 import org.apache.solr.common.luke.FieldFlag;
+import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.util.AbstractSolrTestCase;
+import org.junit.Before;
 import org.junit.Test;
 
 import java.util.EnumSet;
@@ -63,37 +65,42 @@ public class LukeRequestHandlerTest exte
   private void assertHistoBucket(int slot, int in) {
     assertEquals("histobucket: " + in, slot, 32 - Integer.numberOfLeadingZeros(Math.max(0, in - 1)));
   }
-  @Test
-  public void testLuke() {
+
+  @Before
+  public void before() {
     assertU(adoc("id","SOLR1000", "name","Apache Solr",
-      "solr_si", "10",
-      "solr_sl", "10",
-      "solr_sf", "10",
-      "solr_sd", "10",
-      "solr_s", "10",
-      "solr_sI", "10",
-      "solr_sS", "10",
-      "solr_t", "10",
-      "solr_tt", "10",
-      "solr_b", "true",
-      "solr_i", "10",
-      "solr_l", "10",
-      "solr_f", "10",
-      "solr_d", "10",
-      "solr_ti", "10",
-      "solr_tl", "10",
-      "solr_tf", "10",
-      "solr_td", "10",
-      "solr_pi", "10",
-      "solr_pl", "10",
-      "solr_pf", "10",
-      "solr_pd", "10",
-      "solr_dt", "2000-01-01T01:01:01Z",
-      "solr_tdt", "2000-01-01T01:01:01Z",
-      "solr_pdt", "2000-01-01T01:01:01Z"
+        "solr_si", "10",
+        "solr_sl", "10",
+        "solr_sf", "10",
+        "solr_sd", "10",
+        "solr_s", "10",
+        "solr_sI", "10",
+        "solr_sS", "10",
+        "solr_t", "10",
+        "solr_tt", "10",
+        "solr_b", "true",
+        "solr_i", "10",
+        "solr_l", "10",
+        "solr_f", "10",
+        "solr_d", "10",
+        "solr_ti", "10",
+        "solr_tl", "10",
+        "solr_tf", "10",
+        "solr_td", "10",
+        "solr_pi", "10",
+        "solr_pl", "10",
+        "solr_pf", "10",
+        "solr_pd", "10",
+        "solr_dt", "2000-01-01T01:01:01Z",
+        "solr_tdt", "2000-01-01T01:01:01Z",
+        "solr_pdt", "2000-01-01T01:01:01Z"
     ));
     assertU(commit());
 
+  }
+  @Test
+  public void testLuke() {
+
     // test that Luke can handle all of the field types
     assertQ(req("qt","/admin/luke", "id","SOLR1000"));
 
@@ -140,5 +147,37 @@ public class LukeRequestHandlerTest exte
   private static String getFieldXPathHistogram(String field) {
     return "//lst[@name='fields']/lst[@name='"+field+"']/lst";
   }
-  
+
+  @Test
+  public void testFlParam() {
+    SolrQueryRequest req = req("qt", "/admin/luke", "fl", "solr_t solr_s");
+    try {
+      // First, determine that the two fields ARE there
+      String response = h.query(req);
+      assertNull(h.validateXPath(response,
+          getFieldXPathPrefix("solr_t") + "[@name='index']",
+          getFieldXPathPrefix("solr_s") + "[@name='index']"
+      ));
+
+      // Now test that the other fields are NOT there
+      for (String f : Arrays.asList("solr_ti",
+          "solr_td", "solr_pl", "solr_dt", "solr_b")) {
+
+        assertNotNull(h.validateXPath(response,
+            getFieldXPathPrefix(f) + "[@name='index']"));
+
+      }
+      // Insure * works
+      req = req("qt", "/admin/luke", "fl", "*");
+      response = h.query(req);
+      for (String f : Arrays.asList("solr_t", "solr_s", "solr_ti",
+          "solr_td", "solr_pl", "solr_dt", "solr_b")) {
+
+        assertNull(h.validateXPath(response,
+            getFieldXPathPrefix(f) + "[@name='index']"));
+      }
+    } catch (Exception e) {
+      fail("Caught unexpected exception " + e.getMessage());
+    }
+  }
 }