mirror of
https://github.com/apache/lucene.git
synced 2025-02-28 13:29:26 +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 =======================
|
======================= 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
|
Bug Fixes
|
||||||
|
|
||||||
Improvements
|
Improvements
|
||||||
|
@ -85,7 +85,7 @@ public class QueryParser extends QueryParserBase implements QueryParserConstants
|
|||||||
static public enum Operator { OR, AND }
|
static public enum Operator { OR, AND }
|
||||||
|
|
||||||
/** default split on whitespace behavior */
|
/** 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.
|
/** Create a query parser.
|
||||||
* @param f the default field for query terms.
|
* @param f the default field for query terms.
|
||||||
|
@ -109,7 +109,7 @@ public class QueryParser extends QueryParserBase {
|
|||||||
static public enum Operator { OR, AND }
|
static public enum Operator { OR, AND }
|
||||||
|
|
||||||
/** default split on whitespace behavior */
|
/** 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.
|
/** Create a query parser.
|
||||||
* @param f the default field for query terms.
|
* @param f the default field for query terms.
|
||||||
|
@ -1,5 +1,17 @@
|
|||||||
/* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */
|
/* Generated By:JavaCC: Do not edit this line. QueryParserTokenManager.java */
|
||||||
package org.apache.lucene.queryparser.classic;
|
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. */
|
/** Token Manager. */
|
||||||
@SuppressWarnings("cast")
|
@SuppressWarnings("cast")
|
||||||
|
@ -690,16 +690,17 @@ public class TestQueryParser extends QueryParserTestBase {
|
|||||||
public void testDefaultSplitOnWhitespace() throws Exception {
|
public void testDefaultSplitOnWhitespace() throws Exception {
|
||||||
QueryParser parser = new QueryParser("field", new Analyzer1());
|
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();
|
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);
|
bqBuilder.add(new TermQuery(new Term("field", "pig")), BooleanClause.Occur.SHOULD);
|
||||||
assertEquals(bqBuilder.build(), parser.parse("guinea pig"));
|
assertEquals(bqBuilder.build(), parser.parse("guinea pig"));
|
||||||
|
|
||||||
boolean oldSplitOnWhitespace = splitOnWhitespace;
|
boolean oldSplitOnWhitespace = splitOnWhitespace;
|
||||||
splitOnWhitespace = QueryParser.DEFAULT_SPLIT_ON_WHITESPACE;
|
splitOnWhitespace = QueryParser.DEFAULT_SPLIT_ON_WHITESPACE;
|
||||||
assertQueryEquals("guinea pig", new MockSynonymAnalyzer(), "guinea pig");
|
assertQueryEquals("guinea pig", new MockSynonymAnalyzer(), "Synonym(cavy guinea) pig");
|
||||||
splitOnWhitespace = oldSplitOnWhitespace;
|
splitOnWhitespace = oldSplitOnWhitespace;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user