You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by nk...@apache.org on 2016/02/08 23:36:00 UTC
[25/50] [abbrv] lucene-solr git commit: LUCENE-6929: Fix SpanNotQuery
to not ignore the pre/post parameters when rewriting.
LUCENE-6929: Fix SpanNotQuery to not ignore the pre/post parameters when rewriting.
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_5_4@1724051 13f79535-47bb-0310-9956-ffa450edef68
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a9bfb90a
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a9bfb90a
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a9bfb90a
Branch: refs/heads/branch_5_4
Commit: a9bfb90a71e80f8a47eafb4ecf6553b8d77b780d
Parents: 21ccf61
Author: Adrien Grand <jp...@apache.org>
Authored: Mon Jan 11 14:58:38 2016 +0000
Committer: Adrien Grand <jp...@apache.org>
Committed: Mon Jan 11 14:58:38 2016 +0000
----------------------------------------------------------------------
lucene/CHANGES.txt | 3 ++
.../lucene/search/spans/SpanNotQuery.java | 3 +-
.../apache/lucene/search/spans/TestSpans.java | 43 ++++++++++++++++----
3 files changed, 40 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a9bfb90a/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index a0bf877..2ee15c9 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -17,6 +17,9 @@ Bug Fixes
* SOLR-7865: BlendedInfixSuggester was returning too many results
(Arcadius Ahouansou via Mike McCandless)
+* LUCENE-6929: Fix SpanNotQuery rewriting to not drop the pre/post parameters.
+ (Tim Allison via Adrien Grand)
+
======================= Lucene 5.4.0 =======================
New Features
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a9bfb90a/lucene/core/src/java/org/apache/lucene/search/spans/SpanNotQuery.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/spans/SpanNotQuery.java b/lucene/core/src/java/org/apache/lucene/search/spans/SpanNotQuery.java
index f8f871b..a7a8a40 100644
--- a/lucene/core/src/java/org/apache/lucene/search/spans/SpanNotQuery.java
+++ b/lucene/core/src/java/org/apache/lucene/search/spans/SpanNotQuery.java
@@ -200,11 +200,10 @@ public final class SpanNotQuery extends SpanQuery {
SpanQuery rewrittenInclude = (SpanQuery) include.rewrite(reader);
SpanQuery rewrittenExclude = (SpanQuery) exclude.rewrite(reader);
if (rewrittenInclude != include || rewrittenExclude != exclude) {
- return new SpanNotQuery(rewrittenInclude, rewrittenExclude);
+ return new SpanNotQuery(rewrittenInclude, rewrittenExclude, pre, post);
}
return super.rewrite(reader);
}
-
/** Returns true iff <code>o</code> is equal to this. */
@Override
public boolean equals(Object o) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a9bfb90a/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java b/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java
index 9529a45..2ad93d9 100644
--- a/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java
+++ b/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java
@@ -17,21 +17,26 @@ package org.apache.lucene.search.spans;
* limitations under the License.
*/
+import java.io.IOException;
+import java.util.List;
+
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
-import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReaderContext;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.ReaderUtil;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.CheckHits;
import org.apache.lucene.search.DocIdSetIterator;
+import org.apache.lucene.search.FuzzyQuery;
import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.PrefixQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.TermQuery;
@@ -40,10 +45,13 @@ import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
-import java.io.IOException;
-import java.util.List;
-
-import static org.apache.lucene.search.spans.SpanTestUtil.*;
+import static org.apache.lucene.search.spans.SpanTestUtil.assertFinished;
+import static org.apache.lucene.search.spans.SpanTestUtil.assertNext;
+import static org.apache.lucene.search.spans.SpanTestUtil.spanNearOrderedQuery;
+import static org.apache.lucene.search.spans.SpanTestUtil.spanNearUnorderedQuery;
+import static org.apache.lucene.search.spans.SpanTestUtil.spanNotQuery;
+import static org.apache.lucene.search.spans.SpanTestUtil.spanOrQuery;
+import static org.apache.lucene.search.spans.SpanTestUtil.spanTermQuery;
public class TestSpans extends LuceneTestCase {
private IndexSearcher searcher;
@@ -87,7 +95,10 @@ public class TestSpans extends LuceneTestCase {
"u2 u1 xx u2",
"u1 u2 xx u2",
"t1 t2 t1 t3 t2 t3",
- "s2 s1 s1 xx xx s2 xx s2 xx s1 xx xx xx xx xx s2 xx"
+ "s2 s1 s1 xx xx s2 xx s2 xx s1 xx xx xx xx xx s2 xx",
+ "r1 s11",
+ "r1 s21"
+
};
private void checkHits(Query query, int[] results) throws IOException {
@@ -375,7 +386,25 @@ public class TestSpans extends LuceneTestCase {
reader.close();
dir.close();
}
-
+
+ public void testSpanNotWithMultiterm() throws Exception {
+ SpanQuery q = spanNotQuery(
+ spanTermQuery(field, "r1"),
+ new SpanMultiTermQueryWrapper<>(new PrefixQuery(new Term(field, "s1"))),3,3);
+ checkHits(q, new int[] {14});
+
+ q = spanNotQuery(
+ spanTermQuery(field, "r1"),
+ new SpanMultiTermQueryWrapper<>(new FuzzyQuery(new Term(field, "s12"), 1, 2)),3,3);
+ checkHits(q, new int[] {14});
+
+ q = spanNotQuery(
+ new SpanMultiTermQueryWrapper<>(new PrefixQuery(new Term(field, "r"))),
+ spanTermQuery(field, "s21"),3,3);
+ checkHits(q, new int[] {13});
+
+
+ }
public void testSpanNots() throws Throwable{
assertEquals("SpanNotIncludeExcludeSame1", 0, spanCount("s2", "s2", 0, 0), 0);