You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2012/09/20 19:50:31 UTC

svn commit: r1388136 - in /lucene/dev/branches/branch_4x: ./ dev-tools/ lucene/ lucene/analysis/ lucene/analysis/icu/src/java/org/apache/lucene/collation/ lucene/backwards/ lucene/benchmark/ lucene/codecs/ lucene/core/ lucene/demo/ lucene/facet/ lucene...

Author: yonik
Date: Thu Sep 20 17:50:29 2012
New Revision: 1388136

URL: http://svn.apache.org/viewvc?rev=1388136&view=rev
Log:
SOLR-3825: Added optional capability to log what ids are in a response

Added:
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java
      - copied, changed from r1386613, lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java
    lucene/dev/branches/branch_4x/solr/core/src/test-files/solr/collection1/conf/solrconfig-response-log-component.xml
      - copied unchanged from r1386613, lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-response-log-component.xml
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java
      - copied, changed from r1386613, lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java
Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/dev-tools/   (props changed)
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/BUILD.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/CHANGES.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/JRE_VERSION_MIGRATION.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/LICENSE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/MIGRATE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/README.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilterFactory.java   (props changed)
    lucene/dev/branches/branch_4x/lucene/backwards/   (props changed)
    lucene/dev/branches/branch_4x/lucene/benchmark/   (props changed)
    lucene/dev/branches/branch_4x/lucene/build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/codecs/   (props changed)
    lucene/dev/branches/branch_4x/lucene/common-build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/   (props changed)
    lucene/dev/branches/branch_4x/lucene/demo/   (props changed)
    lucene/dev/branches/branch_4x/lucene/facet/   (props changed)
    lucene/dev/branches/branch_4x/lucene/grouping/   (props changed)
    lucene/dev/branches/branch_4x/lucene/highlighter/   (props changed)
    lucene/dev/branches/branch_4x/lucene/ivy-settings.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/join/   (props changed)
    lucene/dev/branches/branch_4x/lucene/licenses/   (props changed)
    lucene/dev/branches/branch_4x/lucene/memory/   (props changed)
    lucene/dev/branches/branch_4x/lucene/misc/   (props changed)
    lucene/dev/branches/branch_4x/lucene/module-build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/queries/   (props changed)
    lucene/dev/branches/branch_4x/lucene/queryparser/   (props changed)
    lucene/dev/branches/branch_4x/lucene/sandbox/   (props changed)
    lucene/dev/branches/branch_4x/lucene/site/   (props changed)
    lucene/dev/branches/branch_4x/lucene/spatial/   (props changed)
    lucene/dev/branches/branch_4x/lucene/suggest/   (props changed)
    lucene/dev/branches/branch_4x/lucene/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/lucene/tools/   (props changed)
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/branch_4x/solr/LICENSE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/README.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/cloud-dev/   (props changed)
    lucene/dev/branches/branch_4x/solr/common-build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/contrib/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/dev-tools/   (props changed)
    lucene/dev/branches/branch_4x/solr/example/   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/scripts/   (props changed)
    lucene/dev/branches/branch_4x/solr/solrj/   (props changed)
    lucene/dev/branches/branch_4x/solr/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/solr/testlogging.properties   (props changed)
    lucene/dev/branches/branch_4x/solr/webapp/   (props changed)

Modified: lucene/dev/branches/branch_4x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/CHANGES.txt?rev=1388136&r1=1388135&r2=1388136&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Thu Sep 20 17:50:29 2012
@@ -67,6 +67,9 @@ New Features
   to query on these shapes too.  Polygons requires adding JTS to the classpath.
   (David Smiley)
 
+* SOLR-3825: Added optional capability to log what ids are in a response
+        (Scott Stults via gsingers)
+
 Optimizations
 ----------------------
 

Copied: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java (from r1386613, lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java?p2=lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java&p1=lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java&r1=1386613&r2=1388136&rev=1388136&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java Thu Sep 20 17:50:29 2012
@@ -17,11 +17,16 @@ package org.apache.solr.handler.componen
  */
 
 import java.io.IOException;
+import java.util.Collections;
+import java.util.Set;
 
+import org.apache.lucene.index.StoredFieldVisitor;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.response.ResultContext;
+import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.search.DocIterator;
 import org.apache.solr.search.DocList;
+import org.apache.solr.search.SolrIndexSearcher;
 
 /**
  * Adds to the log file the document IDs that are sent in the query response.
@@ -62,32 +67,45 @@ public class ResponseLogComponent extend
     SolrParams params = rb.req.getParams();
     if (!params.getBool(COMPONENT_NAME, false)) return;
     
+    IndexSchema schema = rb.req.getSchema();
+    if (schema.getUniqueKeyField() == null) return;
+
     ResultContext rc = (ResultContext) rb.rsp.getValues().get("response");
+    SolrIndexSearcher searcher = rb.req.getSearcher();    
+    
     if (rc.docs.hasScores()) {
-      processScores(rb, rc.docs);
+      processScores(rb, rc.docs, schema, searcher);
     } else {
-      processIds(rb, rc.docs);
+      processIds(rb, rc.docs, schema, searcher);
     }
   }
 
-  protected void processIds(ResponseBuilder rb, DocList dl) {
+  protected void processIds(ResponseBuilder rb, DocList dl, IndexSchema schema,
+      SolrIndexSearcher searcher) throws IOException {
+    
     StringBuilder sb = new StringBuilder();
+
+    Set<String> fields = Collections.singleton(schema.getUniqueKeyField().getName());
     for(DocIterator iter = dl.iterator(); iter.hasNext();) {
-        sb.append(iter.nextDoc())
-          .append(',');
+
+      sb.append(schema.printableUniqueKey(searcher.doc(iter.nextDoc(), fields)))
+        .append(',');
     }
     if (sb.length() > 0) {
       rb.rsp.addToLog("responseLog", sb.substring(0, sb.length() - 1));
     }  
   }
   
-  protected void processScores(ResponseBuilder rb, DocList dl) {
+  protected void processScores(ResponseBuilder rb, DocList dl, IndexSchema schema,
+      SolrIndexSearcher searcher) throws IOException {
+    
     StringBuilder sb = new StringBuilder();
+    Set<String> fields = Collections.singleton(schema.getUniqueKeyField().getName());
     for(DocIterator iter = dl.iterator(); iter.hasNext();) {
-        sb.append(iter.nextDoc())
-          .append(':')
-          .append(iter.score())
-          .append(',');
+      sb.append(schema.printableUniqueKey(searcher.doc(iter.nextDoc(), fields)))
+        .append(':')
+        .append(iter.score())
+        .append(',');
     }
     if (sb.length() > 0) {
       rb.rsp.addToLog("responseLog", sb.substring(0, sb.length() - 1));
@@ -104,4 +122,4 @@ public class ResponseLogComponent extend
     return "$URL$";
   }
   
-}
\ No newline at end of file
+}

Copied: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java (from r1386613, lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java?p2=lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java&p1=lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java&r1=1386613&r2=1388136&rev=1388136&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java Thu Sep 20 17:50:29 2012
@@ -30,7 +30,7 @@ public class ResponseLogComponentTest ex
   public static void beforeTest() throws Exception {
     initCore("solrconfig-response-log-component.xml","schema12.xml");
     assertNull(h.validateUpdate(adoc("id", "1", "subject", "aa")));
-    assertNull(h.validateUpdate(adoc("id", "2", "subject", "aa")));
+    assertNull(h.validateUpdate(adoc("id", "two", "subject", "aa")));
     assertNull(h.validateUpdate(adoc("id", "3", "subject", "aa")));
     assertU(commit());
   }
@@ -46,11 +46,9 @@ public class ResponseLogComponentTest ex
       NamedList<Object> entries = qr.getToLog();
       String responseLog = (String) entries.get("responseLog");
       assertNotNull(responseLog);
-      assertTrue(responseLog.matches("\\d+,\\d+"));
+      assertTrue(responseLog.matches("\\w+,\\w+"));
     } finally {
-      if (req != null) {
-        req.close();
-      }
+      req.close();
     }
   }
 
@@ -65,11 +63,9 @@ public class ResponseLogComponentTest ex
       NamedList<Object> entries = qr.getToLog();
       String responseLog = (String) entries.get("responseLog");
       assertNotNull(responseLog);
-      assertTrue(responseLog.matches("\\d+:\\d+\\.\\d+,\\d+:\\d+\\.\\d+"));
+      assertTrue(responseLog.matches("\\w+:\\d+\\.\\d+,\\w+:\\d+\\.\\d+"));
     } finally {
-      if (req != null) {
-        req.close();
-      }
+      req.close();
     }
   }
   
@@ -85,9 +81,7 @@ public class ResponseLogComponentTest ex
       String responseLog = (String) entries.get("responseLog");
       assertNull(responseLog);
     } finally {
-      if (req != null) {
-        req.close();
-      }
+      req.close();
     }    
   }
 }