You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by tf...@apache.org on 2016/10/31 02:15:47 UTC

[1/4] lucene-solr:jira/solr-8396: Skip facet.exists test with PointFields. It requires enum which is not currently supported

Repository: lucene-solr
Updated Branches:
  refs/heads/jira/solr-8396 e2fe6fbfd -> 656350333


Skip facet.exists test with PointFields. It requires enum which is not currently supported


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

Branch: refs/heads/jira/solr-8396
Commit: d3deaec1f0764b78a46fd2fcd506eae559303e75
Parents: e2fe6fb
Author: Tomas Fernandez Lobbe <tf...@apache.org>
Authored: Fri Oct 21 09:41:43 2016 -0700
Committer: Tomas Fernandez Lobbe <tf...@apache.org>
Committed: Fri Oct 21 09:41:43 2016 -0700

----------------------------------------------------------------------
 .../src/test/org/apache/solr/TestRandomFaceting.java    | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d3deaec1/solr/core/src/test/org/apache/solr/TestRandomFaceting.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/TestRandomFaceting.java b/solr/core/src/test/org/apache/solr/TestRandomFaceting.java
index 2ffefdc..c3a3e02 100644
--- a/solr/core/src/test/org/apache/solr/TestRandomFaceting.java
+++ b/solr/core/src/test/org/apache/solr/TestRandomFaceting.java
@@ -184,7 +184,6 @@ public class TestRandomFaceting extends SolrTestCaseJ4 {
     SolrQueryRequest req = req();
     try {
       Random rand = random();
-      boolean validate = validateResponses;
       ModifiableSolrParams params = params("facet","true", "wt","json", "indent","true", "omitHeader","true");
       params.add("q","*:*");  // TODO: select subsets
       params.add("rows","0");
@@ -244,8 +243,9 @@ public class TestRandomFaceting extends SolrTestCaseJ4 {
 
       List<String> methods = multiValued ? multiValuedMethods : singleValuedMethods;
       List<String> responses = new ArrayList<>(methods.size());
+      
       for (String method : methods) {
-        for (boolean exists : new boolean [] {false, true}) {
+        for (boolean exists : new boolean[]{false, true}) {
           // params.add("facet.field", "{!key="+method+"}" + ftype.fname);
           // TODO: allow method to be passed on local params?
           if (method!=null) {
@@ -253,7 +253,6 @@ public class TestRandomFaceting extends SolrTestCaseJ4 {
           } else {
             params.remove("facet.method");
           }
-          
           params.set("facet.exists", ""+exists);
           if (!exists && rand.nextBoolean()) {
             params.remove("facet.exists");
@@ -275,6 +274,13 @@ public class TestRandomFaceting extends SolrTestCaseJ4 {
                   "facet.exists", req(params), ErrorCode.BAD_REQUEST);
               continue;
             }
+            if (exists && sf.getType().isPointField()) {
+              // PointFields don't yet support "enum" method or the "facet.exists" parameter
+              assertQEx("Expecting failure, since ", 
+                  "facet.exists=true is requested, but facet.method=enum can't be used with " + sf.getName(), 
+                  req(params), ErrorCode.BAD_REQUEST);
+              continue;
+            }
           }
           String strResponse = h.query(req(params));
           responses.add(strResponse);


[3/4] lucene-solr:jira/solr-8396: Facet Refinement can't use Term Query. Using Exact query for PointFields

Posted by tf...@apache.org.
Facet Refinement can't use Term Query. Using Exact query for PointFields


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

Branch: refs/heads/jira/solr-8396
Commit: e3cde0bcb1f29af5a01bb405d6586f39a299a82f
Parents: c788aae
Author: Tomas Fernandez Lobbe <tf...@apache.org>
Authored: Mon Oct 24 16:52:00 2016 -0700
Committer: Tomas Fernandez Lobbe <tf...@apache.org>
Committed: Mon Oct 24 16:52:00 2016 -0700

----------------------------------------------------------------------
 .../org/apache/solr/request/SimpleFacets.java    | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e3cde0bc/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
index 17b5fd2..ab769e1 100644
--- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
+++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
@@ -73,6 +73,7 @@ import org.apache.solr.request.IntervalFacets.FacetInterval;
 import org.apache.solr.schema.BoolField;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.IndexSchema;
+import org.apache.solr.schema.PointField;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.schema.TrieField;
 import org.apache.solr.search.BitDocSet;
@@ -811,12 +812,20 @@ public class SimpleFacets {
    * @param terms a list of term values (in the specified field) to compute the counts for 
    */
   protected NamedList<Integer> getListedTermCounts(String field, final ParsedParams parsed, List<String> terms) throws IOException {
-    FieldType ft = searcher.getSchema().getFieldType(field);
+    SchemaField sf = searcher.getSchema().getField(field);
+    FieldType ft = sf.getType();
     NamedList<Integer> res = new NamedList<>();
-    for (String term : terms) {
-      String internal = ft.toInternal(term);
-      int count = searcher.numDocs(new TermQuery(new Term(field, internal)), parsed.docs);
-      res.add(term, count);
+    if (ft.isPointField()) {
+      for (String term : terms) {
+        int count = searcher.numDocs(((PointField)ft).getExactQuery(sf, term), parsed.docs);
+        res.add(term, count);
+      }
+    } else {
+      for (String term : terms) {
+        String internal = ft.toInternal(term);
+        int count = searcher.numDocs(new TermQuery(new Term(field, internal)), parsed.docs);
+        res.add(term, count);
+      }
     }
     return res;    
   }


[4/4] lucene-solr:jira/solr-8396: 'tType' fields are now always tries. Ideally most tests will use the 'Type' fields instead unless specifically requiring a TrieField

Posted by tf...@apache.org.
'tType' fields are now always tries. Ideally most tests will use the 'Type' fields instead unless specifically requiring a TrieField


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

Branch: refs/heads/jira/solr-8396
Commit: 656350333196f4b441f0334711b84333e27edaa6
Parents: e3cde0b
Author: Tomas Fernandez Lobbe <tf...@apache.org>
Authored: Mon Oct 24 16:52:55 2016 -0700
Committer: Tomas Fernandez Lobbe <tf...@apache.org>
Committed: Mon Oct 24 16:52:55 2016 -0700

----------------------------------------------------------------------
 .../test-files/solr/collection1/conf/schema11.xml | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/65635033/solr/core/src/test-files/solr/collection1/conf/schema11.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema11.xml b/solr/core/src/test-files/solr/collection1/conf/schema11.xml
index 53f18b8..370f321 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema11.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema11.xml
@@ -352,17 +352,17 @@ valued. -->
    <dynamicField name="*_d"    type="${solr.tests.doubleClass:pdouble}" indexed="true"  stored="true"/>
 
    <dynamicField name="*_ti"      type="tint"    indexed="true"  stored="true"/>
-   <dynamicField name="*_ti_dv"   type="${solr.tests.intClass:pint}"    indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_ti_ni_dv"   type="${solr.tests.intClass:pint}"    indexed="true"  stored="true" docValues="true"/>
+   <dynamicField name="*_ti_dv"   type="tint"    indexed="true"  stored="true" docValues="true"/>
+   <dynamicField name="*_ti_ni_dv"   type="tint"    indexed="true"  stored="true" docValues="true"/>
    <dynamicField name="*_tl"      type="tlong"   indexed="true"  stored="true"/>
-   <dynamicField name="*_tl_dv"    type="${solr.tests.longClass:plong}"   indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_tl_ni_dv"   type="${solr.tests.longClass:plong}"   indexed="false"  stored="true" docValues="true"/>
-   <dynamicField name="*_tf"      type="${solr.tests.floatClass:pfloat}"  indexed="true"  stored="true"/>
-   <dynamicField name="*_tf_dv"    type="${solr.tests.floatClass:pfloat}"  indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_tf_ni_dv"   type="${solr.tests.floatClass:pfloat}"  indexed="false"  stored="true" docValues="true"/>
+   <dynamicField name="*_tl_dv"    type="tlong"   indexed="true"  stored="true" docValues="true"/>
+   <dynamicField name="*_tl_ni_dv"   type="tlong"   indexed="false"  stored="true" docValues="true"/>
+   <dynamicField name="*_tf"      type="tfloat"  indexed="true"  stored="true"/>
+   <dynamicField name="*_tf_dv"    type="tfloat"  indexed="true"  stored="true" docValues="true"/>
+   <dynamicField name="*_tf_ni_dv"   type="tfloat"  indexed="false"  stored="true" docValues="true"/>
    <dynamicField name="*_td"      type="tdouble" indexed="true"  stored="true"/>
-   <dynamicField name="*_td_dv"    type="${solr.tests.doubleClass:pdouble}" indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_td_ni_dv"   type="${solr.tests.doubleClass:pdouble}" indexed="false"  stored="true" docValues="true"/>
+   <dynamicField name="*_td_dv"    type="tdouble" indexed="true"  stored="true" docValues="true"/>
+   <dynamicField name="*_td_ni_dv"   type="tdouble" indexed="false"  stored="true" docValues="true"/>
    <dynamicField name="*_tdt"     type="tdate"   indexed="true"  stored="true"/>
    <dynamicField name="*_tdt_dv"   type="tdate"   indexed="true"  stored="true" docValues="true"/>
    <dynamicField name="*_tdt_ni_dv"  type="tdate"   indexed="false"  stored="true" docValues="true"/>


[2/4] lucene-solr:jira/solr-8396: Fixed issue with distributed queries and distributed faceting

Posted by tf...@apache.org.
Fixed issue with distributed queries and distributed faceting


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

Branch: refs/heads/jira/solr-8396
Commit: c788aae15c544fcacca68462d55770271738c51e
Parents: d3deaec
Author: Tomas Fernandez Lobbe <tf...@apache.org>
Authored: Sun Oct 23 20:43:26 2016 -0700
Committer: Tomas Fernandez Lobbe <tf...@apache.org>
Committed: Sun Oct 23 20:43:26 2016 -0700

----------------------------------------------------------------------
 .../solr/handler/component/FacetComponent.java  | 12 +++++++++--
 .../solr/handler/component/QueryComponent.java  | 21 +++++++++++++++-----
 .../apache/solr/schema/DoublePointField.java    |  2 +-
 .../org/apache/solr/schema/FloatPointField.java |  2 +-
 .../org/apache/solr/schema/IntPointField.java   |  2 +-
 .../org/apache/solr/schema/LongPointField.java  |  2 +-
 .../java/org/apache/solr/schema/PointField.java |  6 +++---
 7 files changed, 33 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c788aae1/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java b/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java
index 90608c0..da4283f 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java
@@ -33,6 +33,7 @@ import java.util.Map.Entry;
 
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
+import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.FixedBitSet;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
@@ -47,6 +48,7 @@ import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.request.SimpleFacets;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.FieldType;
+import org.apache.solr.schema.PointField;
 import org.apache.solr.search.QueryParsing;
 import org.apache.solr.search.SyntaxError;
 import org.apache.solr.search.facet.FacetDebugInfo;
@@ -1472,7 +1474,13 @@ public class FacetComponent extends SearchComponent {
           if (sfc == null) {
             sfc = new ShardFacetCount();
             sfc.name = name;
-            sfc.indexed = ftype == null ? sfc.name : ftype.toInternal(sfc.name);
+            if (ftype == null) {
+              sfc.indexed = null;
+            } else if (ftype.isPointField()) {
+              sfc.indexed = ((PointField)ftype).toInternalByteRef(sfc.name);
+            } else {
+              sfc.indexed = new BytesRef(ftype.toInternal(sfc.name));
+            }
             sfc.termNum = termNum++;
             counts.put(name, sfc);
           }
@@ -1548,7 +1556,7 @@ public class FacetComponent extends SearchComponent {
   public static class ShardFacetCount {
     public String name;
     // the indexed form of the name... used for comparisons
-    public String indexed; 
+    public BytesRef indexed; 
     public long count;
     public int termNum; // term number starting at 0 (used in bit arrays)
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c788aae1/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
index da17ffe..1f2ac25 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
@@ -69,6 +69,7 @@ import org.apache.solr.response.ResultContext;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.IndexSchema;
+import org.apache.solr.schema.PointField;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.CursorMark;
 import org.apache.solr.search.DocIterator;
@@ -337,11 +338,21 @@ public class QueryComponent extends SearchComponent
       List<String> idArr = StrUtils.splitSmart(ids, ",", true);
       int[] luceneIds = new int[idArr.size()];
       int docs = 0;
-      for (int i=0; i<idArr.size(); i++) {
-        int id = searcher.getFirstMatch(
-                new Term(idField.getName(), idField.getType().toInternal(idArr.get(i))));
-        if (id >= 0)
-          luceneIds[docs++] = id;
+      if (idField.getType().isPointField()) {
+        for (int i=0; i<idArr.size(); i++) {
+          int id = searcher.search(
+              ((PointField)idField.getType()).getExactQuery(idField, idArr.get(i)), 1).scoreDocs[0].doc;
+          if (id >= 0) {
+            luceneIds[docs++] = id;
+          }
+        }
+      } else {
+        for (int i=0; i<idArr.size(); i++) {
+          int id = searcher.getFirstMatch(
+                  new Term(idField.getName(), idField.getType().toInternal(idArr.get(i))));
+          if (id >= 0)
+            luceneIds[docs++] = id;
+        }
       }
 
       DocListAndSet res = new DocListAndSet();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c788aae1/solr/core/src/java/org/apache/solr/schema/DoublePointField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/DoublePointField.java b/solr/core/src/java/org/apache/solr/schema/DoublePointField.java
index b9f54ae..ed5fae7 100644
--- a/solr/core/src/java/org/apache/solr/schema/DoublePointField.java
+++ b/solr/core/src/java/org/apache/solr/schema/DoublePointField.java
@@ -97,7 +97,7 @@ public class DoublePointField extends PointField implements DoubleValueFieldType
   }
 
   @Override
-  protected Query getExactQuery(QParser parser, SchemaField field, String externalVal) {
+  public Query getExactQuery(SchemaField field, String externalVal) {
     // TODO: better handling of string->int conversion
     return DoublePoint.newExactQuery(field.getName(), Double.parseDouble(externalVal));
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c788aae1/solr/core/src/java/org/apache/solr/schema/FloatPointField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/FloatPointField.java b/solr/core/src/java/org/apache/solr/schema/FloatPointField.java
index 94a5dda..b55a037 100644
--- a/solr/core/src/java/org/apache/solr/schema/FloatPointField.java
+++ b/solr/core/src/java/org/apache/solr/schema/FloatPointField.java
@@ -97,7 +97,7 @@ public class FloatPointField extends PointField implements FloatValueFieldType {
   }
 
   @Override
-  protected Query getExactQuery(QParser parser, SchemaField field, String externalVal) {
+  public Query getExactQuery(SchemaField field, String externalVal) {
     return FloatPoint.newExactQuery(field.getName(), Float.parseFloat(externalVal));
   }
   

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c788aae1/solr/core/src/java/org/apache/solr/schema/IntPointField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/IntPointField.java b/solr/core/src/java/org/apache/solr/schema/IntPointField.java
index 89f40c1..b263236 100644
--- a/solr/core/src/java/org/apache/solr/schema/IntPointField.java
+++ b/solr/core/src/java/org/apache/solr/schema/IntPointField.java
@@ -108,7 +108,7 @@ public class IntPointField extends PointField implements IntValueFieldType {
   }
 
   @Override
-  protected Query getExactQuery(QParser parser, SchemaField field, String externalVal) {
+  public Query getExactQuery(SchemaField field, String externalVal) {
     // TODO: better handling of string->int conversion
     return IntPoint.newExactQuery(field.getName(), Integer.parseInt(externalVal));
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c788aae1/solr/core/src/java/org/apache/solr/schema/LongPointField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/LongPointField.java b/solr/core/src/java/org/apache/solr/schema/LongPointField.java
index c414ab5..73f53f1 100644
--- a/solr/core/src/java/org/apache/solr/schema/LongPointField.java
+++ b/solr/core/src/java/org/apache/solr/schema/LongPointField.java
@@ -97,7 +97,7 @@ public class LongPointField extends PointField implements LongValueFieldType {
   }
 
   @Override
-  protected Query getExactQuery(QParser parser, SchemaField field, String externalVal) {
+  public Query getExactQuery(SchemaField field, String externalVal) {
     return LongPoint.newExactQuery(field.getName(), Long.parseLong(externalVal));
   }
   

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c788aae1/solr/core/src/java/org/apache/solr/schema/PointField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/PointField.java b/solr/core/src/java/org/apache/solr/schema/PointField.java
index 161e0ac..31b52bd 100644
--- a/solr/core/src/java/org/apache/solr/schema/PointField.java
+++ b/solr/core/src/java/org/apache/solr/schema/PointField.java
@@ -136,11 +136,11 @@ public abstract class PointField extends PrimitiveFieldType {
       // currently implemented as singleton range
       return getRangeQuery(parser, field, externalVal, externalVal, true, true);
     } else {
-      return getExactQuery(parser, field, externalVal);
+      return getExactQuery(field, externalVal);
     }
   }
 
-  protected abstract Query getExactQuery(QParser parser, SchemaField field, String externalVal);
+  public abstract Query getExactQuery(SchemaField field, String externalVal);
 
   @Override
   public String storedToReadable(IndexableField f) {
@@ -149,7 +149,7 @@ public abstract class PointField extends PrimitiveFieldType {
 
   @Override
   public String toInternal(String val) {
-    return toInternalByteRef(val).utf8ToString();
+    throw new UnsupportedOperationException("Can't generate internal string in PointField. use PointField.toInternalByteRef");
   }
   
   public BytesRef toInternalByteRef(String val) {