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) {