You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2016/08/26 07:11:10 UTC

lucene-solr:branch_6x: Revert "LUCENE-7416: Rewrite optimizations for BooleanQuery."

Repository: lucene-solr
Updated Branches:
  refs/heads/branch_6x 07ebc563f -> 35382a815


Revert "LUCENE-7416: Rewrite optimizations for BooleanQuery."

This reverts commit 1ac9609caedbf739379bdabdac909f77fee2f5c6.


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

Branch: refs/heads/branch_6x
Commit: 35382a815566f8f64e7b26dd4c0ac1129d860887
Parents: 07ebc56
Author: Adrien Grand <jp...@gmail.com>
Authored: Fri Aug 26 09:09:58 2016 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Fri Aug 26 09:10:22 2016 +0200

----------------------------------------------------------------------
 lucene/CHANGES.txt                              |  7 +----
 .../org/apache/lucene/search/BooleanQuery.java  | 29 -------------------
 .../lucene/search/TestBooleanRewrites.java      | 30 --------------------
 3 files changed, 1 insertion(+), 65 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/35382a81/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 70092e1..5e5c955 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -4,12 +4,7 @@ For more information on past and future Lucene versions, please see:
 http://s.apache.org/luceneversions
 
 ======================= Lucene 6.3.0 =======================
-
-Optimizations
-
-* LUCENE-7416: BooleanQuery optimizes queries that have queries that occur both
-  in the sets of SHOULD and FILTER clauses, or both in MUST/FILTER and MUST_NOT
-  clauses. (Spyros Kapnissis via Adrien Grand)
+(No Changes)
 
 ======================= Lucene 6.2.0 =======================
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/35382a81/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java b/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java
index ec8e52c..d6a53bd 100644
--- a/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java
+++ b/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java
@@ -318,35 +318,6 @@ public class BooleanQuery extends Query implements Iterable<BooleanClause> {
       }
     }
 
-    // convert FILTER clauses that are also SHOULD clauses to MUST clauses
-    if (clauseSets.get(Occur.SHOULD).size() > 0 && clauseSets.get(Occur.FILTER).size() > 0) {
-      final Collection<Query> filters = clauseSets.get(Occur.FILTER);
-      final Collection<Query> shoulds = clauseSets.get(Occur.SHOULD);
-
-      Set<Query> intersection = new HashSet<>(filters);
-      intersection.retainAll(shoulds);
-
-      if (intersection.isEmpty() == false) {
-        BooleanQuery.Builder builder = new BooleanQuery.Builder();
-        int minShouldMatch = getMinimumNumberShouldMatch();
-
-        for (BooleanClause clause : clauses) {
-          if (intersection.contains(clause.getQuery())) {
-            if (clause.getOccur() == Occur.SHOULD) {
-              builder.add(new BooleanClause(clause.getQuery(), Occur.MUST));
-              minShouldMatch--;
-            }
-          } else {
-            builder.add(clause);
-          }
-        }
-
-        builder.setMinimumNumberShouldMatch(Math.max(0, minShouldMatch));
-        return builder.build();
-      }
-    }
-
-
     // Rewrite queries whose single scoring clause is a MUST clause on a
     // MatchAllDocsQuery to a ConstantScoreQuery
     {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/35382a81/lucene/core/src/test/org/apache/lucene/search/TestBooleanRewrites.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestBooleanRewrites.java b/lucene/core/src/test/org/apache/lucene/search/TestBooleanRewrites.java
index c928653..fd54640 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestBooleanRewrites.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestBooleanRewrites.java
@@ -215,36 +215,6 @@ public class TestBooleanRewrites extends LuceneTestCase {
         .build();
     assertEquals(expected, searcher.rewrite(bq));
   }
-  
-  // Duplicate Should and Filter query is converted to Must (with minShouldMatch -1)
-  public void testConvertShouldAndFilterToMust() throws IOException {
-    IndexSearcher searcher = newSearcher(new MultiReader());
-
-    // no minShouldMatch
-    BooleanQuery bq = new BooleanQuery.Builder()
-        .add(new TermQuery(new Term("foo", "bar")), Occur.SHOULD)
-        .add(new TermQuery(new Term("foo", "bar")), Occur.FILTER)
-        .build();
-    assertEquals(new TermQuery(new Term("foo", "bar")), searcher.rewrite(bq));
-
-
-    // minShouldMatch is set to -1
-    bq = new BooleanQuery.Builder()
-        .add(new TermQuery(new Term("foo", "bar")), Occur.SHOULD)
-        .add(new TermQuery(new Term("foo", "bar")), Occur.FILTER)
-        .add(new TermQuery(new Term("foo", "baz")), Occur.SHOULD)
-        .add(new TermQuery(new Term("foo", "quz")), Occur.SHOULD)
-        .setMinimumNumberShouldMatch(2)
-        .build();
-
-    BooleanQuery expected = new BooleanQuery.Builder()
-        .add(new TermQuery(new Term("foo", "bar")), Occur.MUST)
-        .add(new TermQuery(new Term("foo", "baz")), Occur.SHOULD)
-        .add(new TermQuery(new Term("foo", "quz")), Occur.SHOULD)
-        .setMinimumNumberShouldMatch(1)
-        .build();
-    assertEquals(expected, searcher.rewrite(bq));
-  }
 
   public void testRemoveMatchAllFilter() throws IOException {
     IndexSearcher searcher = newSearcher(new MultiReader());