mirror of
https://github.com/apache/lucene.git
synced 2025-02-28 05:19:17 +00:00
LUCENE-2605: Classic QueryParser no longer splits on whitespace by default.
This commit is contained in:
parent
17d113dac1
commit
24e5c1c205
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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")
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user