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 yo...@apache.org on 2009/11/23 13:14:39 UTC

svn commit: r883315 - in /lucene/solr/trunk: CHANGES.txt src/solrj/org/apache/solr/client/solrj/SolrQuery.java src/test/org/apache/solr/client/solrj/SolrQueryTest.java

Author: yonik
Date: Mon Nov 23 12:14:38 2009
New Revision: 883315

URL: http://svn.apache.org/viewvc?rev=883315&view=rev
Log:
SOLR-1584: fix SolrQuery.setIncludeScore()

Modified:
    lucene/solr/trunk/CHANGES.txt
    lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/SolrQuery.java
    lucene/solr/trunk/src/test/org/apache/solr/client/solrj/SolrQueryTest.java

Modified: lucene/solr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=883315&r1=883314&r2=883315&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Mon Nov 23 12:14:38 2009
@@ -44,14 +44,14 @@
 
 * SOLR-1574: Add many new functions from java Math (e.g. sin, cos) (yonik)
 
+* SOLR-1569: Allow functions to take in literal strings by modifying the FunctionQParser and adding LiteralValueSource (gsingers)
+
 Optimizations
 ----------------------
 
 Bug Fixes
 ----------------------
 
-* SOLR-1569: Allow functions to take in literal strings by modifying the FunctionQParser and adding LiteralValueSource (gsingers)
-
 * SOLR-1432: Make the new ValueSource.getValues(context,reader) delegate
   to the original ValueSource.getValues(reader) so custom sources
   will work. (yonik)
@@ -70,6 +70,10 @@
   string, which is treated the same as if no dataDir had been specified,
   hence the "data" directory under the solr home will be used.  (yonik)
 
+* SOLR-1584: SolrJ - SolrQuery.setIncludeScore() incorrectly added
+  fl=score to the parameter list instead of appending score to the
+  existing field list. (yonik)
+
 
 Other Changes
 ----------------------

Modified: lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/SolrQuery.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/SolrQuery.java?rev=883315&r1=883314&r2=883315&view=diff
==============================================================================
--- lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/SolrQuery.java (original)
+++ lucene/solr/trunk/src/solrj/org/apache/solr/client/solrj/SolrQuery.java Mon Nov 23 12:14:38 2009
@@ -23,6 +23,8 @@
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.StatsParams;
 
+import java.util.regex.Pattern;
+
 
 /**
  * This is an augmented SolrParams with get/set/add fields for common fields used
@@ -445,11 +447,16 @@
     return fields;
   }
 
+  private static Pattern scorePattern = Pattern.compile("(^|[, ])score");
+
   public SolrQuery setIncludeScore(boolean includeScore) {
+    String fields = get(CommonParams.FL,"*");
     if (includeScore) {
-      this.add(CommonParams.FL, "score");
+      if (!scorePattern.matcher(fields).find()) {   
+        this.set(CommonParams.FL, fields+",score");
+      }
     } else {
-      this.remove(CommonParams.FL, "score");
+      this.set(CommonParams.FL, scorePattern.matcher(fields).replaceAll(""));
     }
     return this;
   }

Modified: lucene/solr/trunk/src/test/org/apache/solr/client/solrj/SolrQueryTest.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/client/solrj/SolrQueryTest.java?rev=883315&r1=883314&r2=883315&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/client/solrj/SolrQueryTest.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/client/solrj/SolrQueryTest.java Mon Nov 23 12:14:38 2009
@@ -130,6 +130,13 @@
       assertEquals( Boolean.TRUE, q.setMissing(Boolean.TRUE.toString()).getBool( FacetParams.FACET_MISSING ) );
       assertEquals( Boolean.FALSE, q.setFacetMissing( Boolean.FALSE ).getBool( FacetParams.FACET_MISSING ) );      
       assertEquals( "true", q.setParam( "xxx", true ).getParams( "xxx" )[0] );
+
+      assertEquals( "x,y", q.setFields("x","y").getFields() );    
+      assertEquals( "x,y,score", q.setIncludeScore(true).getFields() );
+      assertEquals( "x,y,score", q.setIncludeScore(true).getFields() ); // set twice on purpose
+      assertEquals( "x,y", q.setIncludeScore(false).getFields() );
+      assertEquals( "x,y", q.setIncludeScore(false).getFields() ); // remove twice on purpose
+
   }
   
   public void testOrder() {