Repository: lucene-solr
Updated Branches:
refs/heads/branch_6_2 100b50f23 -> 12e7384b3
refs/heads/branch_6x ffef46ec9 -> 1963b1701
refs/heads/master 221a6870b -> 6739e075b
LUCENE-7472: MultiFieldQueryParser.getFieldQuery() drops queries that are neither BooleanQuery nor TermQuery.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/6739e075
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/6739e075
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/6739e075
Branch: refs/heads/master
Commit: 6739e075b4c1dedab3b49b1d299cd713135c1ec3
Parents: 221a687
Author: Steve Rowe <sa...@apache.org>
Authored: Tue Oct 4 10:51:00 2016 -0400
Committer: Steve Rowe <sa...@apache.org>
Committed: Tue Oct 4 10:51:00 2016 -0400
----------------------------------------------------------------------
lucene/CHANGES.txt | 3 +++
.../classic/MultiFieldQueryParser.java | 6 +++---
.../classic/TestMultiFieldQueryParser.java | 22 ++++++++++++++++++++
3 files changed, 28 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6739e075/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 366ad21..f752217 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -46,6 +46,9 @@ New Features
Bug Fixes
+* LUCENE-7472: MultiFieldQueryParser.getFieldQuery() drops queries that are
+ neither BooleanQuery nor TermQuery. (Steve Rowe)
+
Improvements
* LUCENE-7439: FuzzyQuery now matches all terms within the specified
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6739e075/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
index 8ab0dfd..2d8db0d 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
@@ -154,10 +154,10 @@ public class MultiFieldQueryParser extends QueryParser
for (int i = 0; i < fields.length; i++) {
Query q = super.getFieldQuery(fields[i], queryText, quoted);
if (q != null) {
- if (q instanceof TermQuery) {
- maxTerms = Math.max(1, maxTerms);
- } else if (q instanceof BooleanQuery) {
+ if (q instanceof BooleanQuery) {
maxTerms = Math.max(maxTerms, ((BooleanQuery)q).clauses().size());
+ } else {
+ maxTerms = Math.max(1, maxTerms);
}
fieldQueries[i] = q;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6739e075/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
index 1faf0f6..86ef54b 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
@@ -28,6 +28,7 @@ import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
+import org.apache.lucene.queryparser.util.QueryParserTestBase;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
@@ -331,4 +332,25 @@ public class TestMultiFieldQueryParser extends LuceneTestCase {
assertEquals(bq.build(), mfqp.parse("/[a-z][123]/"));
}
+ /** whitespace+lowercase analyzer with synonyms (dogs,dog) and (guinea pig,cavy) */
+ private class MockSynonymAnalyzer extends Analyzer {
+ @Override
+ public TokenStreamComponents createComponents(String fieldName) {
+ Tokenizer tokenizer = new MockTokenizer(MockTokenizer.WHITESPACE, true);
+ return new TokenStreamComponents(tokenizer, new MockSynonymFilter(tokenizer));
+ }
+ }
+
+ public void testSynonyms() throws ParseException {
+ String[] fields = {"b", "t"};
+ MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new MockSynonymAnalyzer());
+ Query q = parser.parse("dogs");
+ assertEquals("Synonym(b:dog b:dogs) Synonym(t:dog t:dogs)", q.toString());
+ q = parser.parse("guinea pig");
+ assertFalse(parser.getSplitOnWhitespace());
+ assertEquals("(Synonym(b:cavy b:guinea) Synonym(t:cavy t:guinea)) (b:pig t:pig)", q.toString());
+ parser.setSplitOnWhitespace(true);
+ q = parser.parse("guinea pig");
+ assertEquals("(b:guinea t:guinea) (b:pig t:pig)", q.toString());
+ }
}
LUCENE-7472: switch TestMultiFieldQueryParser.testSynonyms default split-on-whitespace to true (it's false on master/7.0)
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/1963b170
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/1963b170
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/1963b170
Branch: refs/heads/branch_6x
Commit: 1963b1701d2c331daa452ae6d16fc754c3e84bc4
Parents: c398949
Author: Steve Rowe <sa...@apache.org>
Authored: Tue Oct 4 11:03:14 2016 -0400
Committer: Steve Rowe <sa...@apache.org>
Committed: Tue Oct 4 11:03:14 2016 -0400
----------------------------------------------------------------------
.../queryparser/classic/TestMultiFieldQueryParser.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1963b170/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
index 72bd2a1..7d1b052 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
@@ -348,10 +348,10 @@ public class TestMultiFieldQueryParser extends LuceneTestCase {
Query q = parser.parse("dogs");
assertEquals("Synonym(b:dog b:dogs) Synonym(t:dog t:dogs)", q.toString());
q = parser.parse("guinea pig");
- assertFalse(parser.getSplitOnWhitespace());
- assertEquals("(Synonym(b:cavy b:guinea) Synonym(t:cavy t:guinea)) (b:pig t:pig)", q.toString());
- parser.setSplitOnWhitespace(true);
- q = parser.parse("guinea pig");
+ assertTrue(parser.getSplitOnWhitespace());
assertEquals("(b:guinea t:guinea) (b:pig t:pig)", q.toString());
+ parser.setSplitOnWhitespace(false);
+ q = parser.parse("guinea pig");
+ assertEquals("(Synonym(b:cavy b:guinea) Synonym(t:cavy t:guinea)) (b:pig t:pig)", q.toString());
}
}
LUCENE-7472: MultiFieldQueryParser.getFieldQuery() drops queries that are neither BooleanQuery nor TermQuery.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/c398949d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/c398949d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/c398949d
Branch: refs/heads/branch_6x
Commit: c398949d3788676bbf8b3f1ae7e819f851d20767
Parents: ffef46e
Author: Steve Rowe <sa...@apache.org>
Authored: Tue Oct 4 10:51:00 2016 -0400
Committer: Steve Rowe <sa...@apache.org>
Committed: Tue Oct 4 10:51:42 2016 -0400
----------------------------------------------------------------------
lucene/CHANGES.txt | 3 +++
.../classic/MultiFieldQueryParser.java | 6 +++---
.../classic/TestMultiFieldQueryParser.java | 22 ++++++++++++++++++++
3 files changed, 28 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c398949d/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index a240a8e..44b8536 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -11,6 +11,9 @@ New Features
Bug Fixes
+* LUCENE-7472: MultiFieldQueryParser.getFieldQuery() drops queries that are
+ neither BooleanQuery nor TermQuery. (Steve Rowe)
+
Improvements
* LUCENE-7439: FuzzyQuery now matches all terms within the specified
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c398949d/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
index 69a7559..2b48930 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
@@ -154,10 +154,10 @@ public class MultiFieldQueryParser extends QueryParser
for (int i = 0; i < fields.length; i++) {
Query q = super.getFieldQuery(fields[i], queryText, quoted);
if (q != null) {
- if (q instanceof TermQuery) {
- maxTerms = Math.max(1, maxTerms);
- } else if (q instanceof BooleanQuery) {
+ if (q instanceof BooleanQuery) {
maxTerms = Math.max(maxTerms, ((BooleanQuery)q).clauses().size());
+ } else {
+ maxTerms = Math.max(1, maxTerms);
}
fieldQueries[i] = q;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c398949d/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
index d4d8b93..72bd2a1 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
@@ -28,6 +28,7 @@ import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
+import org.apache.lucene.queryparser.util.QueryParserTestBase;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
@@ -332,4 +333,25 @@ public class TestMultiFieldQueryParser extends LuceneTestCase {
assertEquals(bq.build(), mfqp.parse("/[a-z][123]/"));
}
+ /** whitespace+lowercase analyzer with synonyms (dogs,dog) and (guinea pig,cavy) */
+ private class MockSynonymAnalyzer extends Analyzer {
+ @Override
+ public TokenStreamComponents createComponents(String fieldName) {
+ Tokenizer tokenizer = new MockTokenizer(MockTokenizer.WHITESPACE, true);
+ return new TokenStreamComponents(tokenizer, new MockSynonymFilter(tokenizer));
+ }
+ }
+
+ public void testSynonyms() throws ParseException {
+ String[] fields = {"b", "t"};
+ MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new MockSynonymAnalyzer());
+ Query q = parser.parse("dogs");
+ assertEquals("Synonym(b:dog b:dogs) Synonym(t:dog t:dogs)", q.toString());
+ q = parser.parse("guinea pig");
+ assertFalse(parser.getSplitOnWhitespace());
+ assertEquals("(Synonym(b:cavy b:guinea) Synonym(t:cavy t:guinea)) (b:pig t:pig)", q.toString());
+ parser.setSplitOnWhitespace(true);
+ q = parser.parse("guinea pig");
+ assertEquals("(b:guinea t:guinea) (b:pig t:pig)", q.toString());
+ }
}
LUCENE-7472: switch TestMultiFieldQueryParser.testSynonyms default split-on-whitespace to true (it's false on master/7.0)
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/12e7384b
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/12e7384b
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/12e7384b
Branch: refs/heads/branch_6_2
Commit: 12e7384b35a92a366e74af5fd4aed4f555ffd2da
Parents: 4ecc9d8
Author: Steve Rowe <sa...@apache.org>
Authored: Tue Oct 4 11:03:14 2016 -0400
Committer: Steve Rowe <sa...@apache.org>
Committed: Tue Oct 4 11:05:25 2016 -0400
----------------------------------------------------------------------
.../queryparser/classic/TestMultiFieldQueryParser.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/12e7384b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
index 72bd2a1..7d1b052 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
@@ -348,10 +348,10 @@ public class TestMultiFieldQueryParser extends LuceneTestCase {
Query q = parser.parse("dogs");
assertEquals("Synonym(b:dog b:dogs) Synonym(t:dog t:dogs)", q.toString());
q = parser.parse("guinea pig");
- assertFalse(parser.getSplitOnWhitespace());
- assertEquals("(Synonym(b:cavy b:guinea) Synonym(t:cavy t:guinea)) (b:pig t:pig)", q.toString());
- parser.setSplitOnWhitespace(true);
- q = parser.parse("guinea pig");
+ assertTrue(parser.getSplitOnWhitespace());
assertEquals("(b:guinea t:guinea) (b:pig t:pig)", q.toString());
+ parser.setSplitOnWhitespace(false);
+ q = parser.parse("guinea pig");
+ assertEquals("(Synonym(b:cavy b:guinea) Synonym(t:cavy t:guinea)) (b:pig t:pig)", q.toString());
}
}
LUCENE-7472: move CHANGES.txt entry under 6.2.2 section
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/4ecc9d8e
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/4ecc9d8e
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/4ecc9d8e
Branch: refs/heads/branch_6_2
Commit: 4ecc9d8eeac781ecb5f141491057a57226f61c6a
Parents: 100b50f
Author: Steve Rowe <sa...@apache.org>
Authored: Tue Oct 4 10:51:00 2016 -0400
Committer: Steve Rowe <sa...@apache.org>
Committed: Tue Oct 4 11:05:04 2016 -0400
----------------------------------------------------------------------
lucene/CHANGES.txt | 3 +++
.../classic/MultiFieldQueryParser.java | 6 +++---
.../classic/TestMultiFieldQueryParser.java | 22 ++++++++++++++++++++
3 files changed, 28 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4ecc9d8e/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 7c6d82e..dfb8435 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -31,6 +31,9 @@ Bug Fixes
were restored in their original packages: LowercaseFilter and StopFilter,
as well as several utility classes. (Uwe Schindler, Mike McCandless)
+* LUCENE-7472: MultiFieldQueryParser.getFieldQuery() drops queries that are
+ neither BooleanQuery nor TermQuery. (Steve Rowe)
+
======================= Lucene 6.2.0 =======================
API Changes
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4ecc9d8e/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
index 69a7559..2b48930 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.java
@@ -154,10 +154,10 @@ public class MultiFieldQueryParser extends QueryParser
for (int i = 0; i < fields.length; i++) {
Query q = super.getFieldQuery(fields[i], queryText, quoted);
if (q != null) {
- if (q instanceof TermQuery) {
- maxTerms = Math.max(1, maxTerms);
- } else if (q instanceof BooleanQuery) {
+ if (q instanceof BooleanQuery) {
maxTerms = Math.max(maxTerms, ((BooleanQuery)q).clauses().size());
+ } else {
+ maxTerms = Math.max(1, maxTerms);
}
fieldQueries[i] = q;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4ecc9d8e/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
index d4d8b93..72bd2a1 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
@@ -28,6 +28,7 @@ import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
+import org.apache.lucene.queryparser.util.QueryParserTestBase;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
@@ -332,4 +333,25 @@ public class TestMultiFieldQueryParser extends LuceneTestCase {
assertEquals(bq.build(), mfqp.parse("/[a-z][123]/"));
}
+ /** whitespace+lowercase analyzer with synonyms (dogs,dog) and (guinea pig,cavy) */
+ private class MockSynonymAnalyzer extends Analyzer {
+ @Override
+ public TokenStreamComponents createComponents(String fieldName) {
+ Tokenizer tokenizer = new MockTokenizer(MockTokenizer.WHITESPACE, true);
+ return new TokenStreamComponents(tokenizer, new MockSynonymFilter(tokenizer));
+ }
+ }
+
+ public void testSynonyms() throws ParseException {
+ String[] fields = {"b", "t"};
+ MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new MockSynonymAnalyzer());
+ Query q = parser.parse("dogs");
+ assertEquals("Synonym(b:dog b:dogs) Synonym(t:dog t:dogs)", q.toString());
+ q = parser.parse("guinea pig");
+ assertFalse(parser.getSplitOnWhitespace());
+ assertEquals("(Synonym(b:cavy b:guinea) Synonym(t:cavy t:guinea)) (b:pig t:pig)", q.toString());
+ parser.setSplitOnWhitespace(true);
+ q = parser.parse("guinea pig");
+ assertEquals("(b:guinea t:guinea) (b:pig t:pig)", q.toString());
+ }
}