You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2017/03/14 09:20:53 UTC

[15/32] lucene-solr:jira/solr-10247: LUCENE-7449: fix CROSSES queries so they don't match all docs when internal nodes are equal

LUCENE-7449: fix CROSSES queries so they don't match all docs when internal nodes are equal


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

Branch: refs/heads/jira/solr-10247
Commit: f3ba7f41057227555992c1534a8265d37bfe7c23
Parents: a3f4896
Author: Nicholas Knize <nk...@gmail.com>
Authored: Sat Mar 11 18:40:55 2017 -0600
Committer: Nicholas Knize <nk...@gmail.com>
Committed: Sat Mar 11 18:41:18 2017 -0600

----------------------------------------------------------------------
 .../src/java/org/apache/lucene/document/RangeFieldQuery.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f3ba7f41/lucene/sandbox/src/java/org/apache/lucene/document/RangeFieldQuery.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/java/org/apache/lucene/document/RangeFieldQuery.java b/lucene/sandbox/src/java/org/apache/lucene/document/RangeFieldQuery.java
index 41e64cf..10f10fa 100644
--- a/lucene/sandbox/src/java/org/apache/lucene/document/RangeFieldQuery.java
+++ b/lucene/sandbox/src/java/org/apache/lucene/document/RangeFieldQuery.java
@@ -171,8 +171,8 @@ abstract class RangeFieldQuery extends Query {
           // if query crosses, docs need to be further scrutinized
           byte[] range = getInternalRange(values.getMinPackedValue(), values.getMaxPackedValue());
           // if the internal node is not equal and not contained by the query, all docs do not match
-          if (!Arrays.equals(ranges, range)
-              && (!target.contains(range) || queryType != QueryType.WITHIN)) {
+          if (queryType == QueryType.CROSSES || (!Arrays.equals(ranges, range)
+              && (target.contains(range) == false || queryType != QueryType.WITHIN))) {
             allDocsMatch = false;
           }
         } else {