diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index 50b5f3cf5b0..9f634a5c1d8 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -5,6 +5,11 @@ http://s.apache.org/luceneversions ======================= Lucene 7.0.0 ======================= +API Changes + +* LUCENE-2605: Classic QueryParser no longer splits on whitespace by default. + Use setSplitOnWhitespace(true) to get the old behavior. (Steve Rowe) + Bug Fixes Improvements diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java index c137d3043b7..dc43ab14592 100644 --- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java +++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.java @@ -85,7 +85,7 @@ public class QueryParser extends QueryParserBase implements QueryParserConstants static public enum Operator { OR, AND } /** default split on whitespace behavior */ - public static final boolean DEFAULT_SPLIT_ON_WHITESPACE = true; + public static final boolean DEFAULT_SPLIT_ON_WHITESPACE = false; /** Create a query parser. * @param f the default field for query terms. diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj index 71a5c391c27..ea185881464 100644 --- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj +++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj @@ -109,7 +109,7 @@ public class QueryParser extends QueryParserBase { static public enum Operator { OR, AND } /** default split on whitespace behavior */ - public static final boolean DEFAULT_SPLIT_ON_WHITESPACE = true; + public static final boolean DEFAULT_SPLIT_ON_WHITESPACE = false; /** Create a query parser. * @param f the default field for query terms. diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserTokenManager.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserTokenManager.java index 065ff8b4411..1915d35cd5d 100644 --- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserTokenManager.java +++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserTokenManager.java @@ -1,5 +1,17 @@ /* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */ package org.apache.lucene.queryparser.classic; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; +import org.apache.lucene.analysis.Analyzer; +import org.apache.lucene.document.DateTools; +import org.apache.lucene.search.BooleanClause; +import org.apache.lucene.search.Query; +import org.apache.lucene.search.TermRangeQuery; /** Token Manager. */ @SuppressWarnings("cast") diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestQueryParser.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestQueryParser.java index c3d7b37f5c1..7a988004b31 100644 --- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestQueryParser.java +++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestQueryParser.java @@ -690,16 +690,17 @@ public class TestQueryParser extends QueryParserTestBase { public void testDefaultSplitOnWhitespace() throws Exception { QueryParser parser = new QueryParser("field", new Analyzer1()); - assertTrue(parser.getSplitOnWhitespace()); // default is true + assertFalse(parser.getSplitOnWhitespace()); // default is false + // A multi-word synonym source will form a synonym query for the same-starting-position tokens BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder(); - bqBuilder.add(new TermQuery(new Term("field", "guinea")), BooleanClause.Occur.SHOULD); + bqBuilder.add(new SynonymQuery(new Term("field", "guinea"), new Term("field", "cavy")), BooleanClause.Occur.SHOULD); bqBuilder.add(new TermQuery(new Term("field", "pig")), BooleanClause.Occur.SHOULD); assertEquals(bqBuilder.build(), parser.parse("guinea pig")); boolean oldSplitOnWhitespace = splitOnWhitespace; splitOnWhitespace = QueryParser.DEFAULT_SPLIT_ON_WHITESPACE; - assertQueryEquals("guinea pig", new MockSynonymAnalyzer(), "guinea pig"); + assertQueryEquals("guinea pig", new MockSynonymAnalyzer(), "Synonym(cavy guinea) pig"); splitOnWhitespace = oldSplitOnWhitespace; } } \ No newline at end of file