You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2011/05/14 01:18:15 UTC

svn commit: r1102922 - in /lucene/dev/branches/branch_3x: ./ lucene/ lucene/backwards/ solr/ solr/src/java/org/apache/solr/search/ solr/src/test/org/apache/solr/search/

Author: hossman
Date: Fri May 13 23:18:15 2011
New Revision: 1102922

URL: http://svn.apache.org/viewvc?rev=1102922&view=rev
Log:
SOLR-2113: backport r995607 from trunk

Added:
    lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/TermQParserPlugin.java
      - copied, changed from r995607, lucene/dev/trunk/solr/src/java/org/apache/solr/search/TermQParserPlugin.java
Modified:
    lucene/dev/branches/branch_3x/   (props changed)
    lucene/dev/branches/branch_3x/lucene/   (props changed)
    lucene/dev/branches/branch_3x/lucene/backwards/   (props changed)
    lucene/dev/branches/branch_3x/solr/   (props changed)
    lucene/dev/branches/branch_3x/solr/CHANGES.txt
    lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/QParserPlugin.java
    lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/RawQParserPlugin.java
    lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/search/TestQueryTypes.java

Modified: lucene/dev/branches/branch_3x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/CHANGES.txt?rev=1102922&r1=1102921&r2=1102922&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_3x/solr/CHANGES.txt Fri May 13 23:18:15 2011
@@ -51,6 +51,11 @@ New Features
   Example: [{"id":"doc1"},{"id":"doc2"}] 
   (yonik)
 
+* SOLR-2113: Add TermQParserPlugin, registered as "term".  This is useful
+  when generating filter queries from terms returned from field faceting or
+  the terms component. Example: fq={!term f=weight}1.5   (hossman, yonik) 
+
+
 Optimizations
 ----------------------
 

Modified: lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/QParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/QParserPlugin.java?rev=1102922&r1=1102921&r2=1102922&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/QParserPlugin.java (original)
+++ lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/QParserPlugin.java Fri May 13 23:18:15 2011
@@ -35,6 +35,7 @@ public abstract class QParserPlugin impl
     ExtendedDismaxQParserPlugin.NAME, ExtendedDismaxQParserPlugin.class,
     FieldQParserPlugin.NAME, FieldQParserPlugin.class,
     RawQParserPlugin.NAME, RawQParserPlugin.class,
+    TermQParserPlugin.NAME, TermQParserPlugin.class,
     NestedQParserPlugin.NAME, NestedQParserPlugin.class,
     FunctionRangeQParserPlugin.NAME, FunctionRangeQParserPlugin.class,
     SpatialFilterQParserPlugin.NAME, SpatialFilterQParserPlugin.class,

Modified: lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/RawQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/RawQParserPlugin.java?rev=1102922&r1=1102921&r2=1102922&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/RawQParserPlugin.java (original)
+++ lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/RawQParserPlugin.java Fri May 13 23:18:15 2011
@@ -26,6 +26,11 @@ import org.apache.solr.request.SolrQuery
 
 /**
  * Create a term query from the input value without any text analysis or transformation whatsoever.
+ * This is useful in debugging, or when raw terms are returned from the terms component (this is not the default).
+ *
+ * <br>For easy filter construction to drill down in faceting, the {@link TermQParserPlugin} is recommended.
+ * <br>For full analysis on all fields, including text fields, see the {@link FieldQParserPlugin}. 
+ *
  * <br>Other parameters: <code>f</code>, the field
  * <br>Example: <code>{!raw f=myfield}Foo Bar</code> creates <code>TermQuery(Term("myfield","Foo Bar"))</code>
  */

Copied: lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/TermQParserPlugin.java (from r995607, lucene/dev/trunk/solr/src/java/org/apache/solr/search/TermQParserPlugin.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/TermQParserPlugin.java?p2=lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/TermQParserPlugin.java&p1=lucene/dev/trunk/solr/src/java/org/apache/solr/search/TermQParserPlugin.java&r1=995607&r2=1102922&rev=1102922&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/search/TermQParserPlugin.java (original)
+++ lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/search/TermQParserPlugin.java Fri May 13 23:18:15 2011
@@ -20,7 +20,6 @@ import org.apache.lucene.index.Term;
 import org.apache.lucene.queryParser.ParseException;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.util.BytesRef;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
@@ -53,13 +52,9 @@ public class TermQParserPlugin extends Q
         String fname = localParams.get(QueryParsing.F);
         FieldType ft = req.getSchema().getFieldTypeNoEx(fname);
         String val = localParams.get(QueryParsing.V);
-        BytesRef term = new BytesRef();
-        if (ft != null) {
-          ft.readableToIndexed(val, term);
-        } else {
-          term.copy(val);
-        }
-        return new TermQuery(new Term(fname, term));
+
+        return new TermQuery(new Term(fname, 
+                                      null == ft ? val : ft.readableToIndexed(val)));
       }
     };
   }

Modified: lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/search/TestQueryTypes.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/search/TestQueryTypes.java?rev=1102922&r1=1102921&r2=1102922&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/search/TestQueryTypes.java (original)
+++ lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/search/TestQueryTypes.java Fri May 13 23:18:15 2011
@@ -134,6 +134,8 @@ public class TestQueryTypes extends Abst
             req("q","{!raw f=v_t}hello")
             ,"//result[@numFound='2']"
             );
+
+    // no analysis is done, so these should match nothing
     assertQ("test raw query",
             req("q","{!raw f=v_t}Hello")
             ,"//result[@numFound='0']"
@@ -143,6 +145,23 @@ public class TestQueryTypes extends Abst
             ,"//result[@numFound='0']"
             );
 
+    // test "term" qparser, which should only do readableToIndexed
+    assertQ(
+            req("q","{!term f=v_f}1.5")
+            ,"//result[@numFound='1']"
+            );
+    
+    // text fields are *not* analyzed since they may not be idempotent
+    assertQ(
+           req("q","{!term f=v_t}Hello")
+           ,"//result[@numFound='0']"
+           );
+     assertQ(
+           req("q","{!term f=v_t}hello")
+           ,"//result[@numFound='2']"
+           );
+
+
     //
     // test escapes in quoted strings
     //