From b4acfc32df8fcc996399b822915e1cdd68b89a09 Mon Sep 17 00:00:00 2001
From: Yonik Seeley
Date: Sat, 8 Aug 2009 17:20:43 +0000
Subject: [PATCH] SOLR-1067: further progress on the problem with null qparser
git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@802424 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/solr/handler/FieldAnalysisRequestHandler.java | 2 +-
.../org/apache/solr/handler/admin/LukeRequestHandler.java | 2 +-
src/java/org/apache/solr/highlight/SolrHighlighter.java | 2 +-
src/java/org/apache/solr/schema/IndexSchema.java | 3 +--
src/java/org/apache/solr/search/DisMaxQParser.java | 2 +-
src/java/org/apache/solr/search/LuceneQParserPlugin.java | 2 +-
src/java/org/apache/solr/search/SolrQueryParser.java | 2 +-
src/java/org/apache/solr/util/SolrPluginUtils.java | 7 ++++++-
src/test/org/apache/solr/util/SolrPluginUtilsTest.java | 2 +-
9 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/src/java/org/apache/solr/handler/FieldAnalysisRequestHandler.java b/src/java/org/apache/solr/handler/FieldAnalysisRequestHandler.java
index a5e31b14a96..8a1997faf70 100644
--- a/src/java/org/apache/solr/handler/FieldAnalysisRequestHandler.java
+++ b/src/java/org/apache/solr/handler/FieldAnalysisRequestHandler.java
@@ -143,7 +143,7 @@ public class FieldAnalysisRequestHandler extends AnalysisRequestHandlerBase {
useDefaultSearchField = false;
}
if (useDefaultSearchField) {
- analysisRequest.addFieldName(req.getSchema().getSolrQueryParser(null).getField());
+ analysisRequest.addFieldName(req.getSchema().getDefaultSearchFieldName());
}
analysisRequest.setQuery(solrParams.get(AnalysisParams.QUERY, solrParams.get(CommonParams.Q)));
analysisRequest.setFieldValue(solrParams.get(AnalysisParams.FIELD_VALUE));
diff --git a/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java b/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
index 6fdd2baf0a2..4102fccd243 100644
--- a/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
+++ b/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
@@ -371,7 +371,7 @@ public class LukeRequestHandler extends RequestHandlerBase
finfo.add("fields", fields);
finfo.add("dynamicFields", dynamicFields);
finfo.add("uniqueKeyField", uniqueField.getName());
- finfo.add("defaultSearchField", schema.getSolrQueryParser(null).getField());
+ finfo.add("defaultSearchField", schema.getDefaultSearchFieldName());
finfo.add("types", types);
return finfo;
}
diff --git a/src/java/org/apache/solr/highlight/SolrHighlighter.java b/src/java/org/apache/solr/highlight/SolrHighlighter.java
index 4235360c6af..f4fdf65aa08 100644
--- a/src/java/org/apache/solr/highlight/SolrHighlighter.java
+++ b/src/java/org/apache/solr/highlight/SolrHighlighter.java
@@ -73,7 +73,7 @@ public abstract class SolrHighlighter
if(emptyArray(fields)) {
// use default search field if highlight fieldlist not specified.
if (emptyArray(defaultFields)) {
- String defaultSearchField = request.getSchema().getSolrQueryParser(null).getField();
+ String defaultSearchField = request.getSchema().getDefaultSearchFieldName();
fields = null == defaultSearchField ? new String[]{} : new String[]{defaultSearchField};
}
else {
diff --git a/src/java/org/apache/solr/schema/IndexSchema.java b/src/java/org/apache/solr/schema/IndexSchema.java
index 13a6a5a9054..7b076dde173 100644
--- a/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/src/java/org/apache/solr/schema/IndexSchema.java
@@ -251,6 +251,7 @@ public final class IndexSchema {
* <solrQueryParser> configuration for this IndexSchema.
*
* @param defaultField if non-null overrides the schema default
+ * @deprecated
*/
public SolrQueryParser getSolrQueryParser(String defaultField) {
SolrQueryParser qp = new SolrQueryParser(this,defaultField);
@@ -262,9 +263,7 @@ public final class IndexSchema {
/**
* Name of the default search field specified in the schema file
- * @deprecated use getSolrQueryParser().getField()
*/
- @Deprecated
public String getDefaultSearchFieldName() {
return defaultSearchFieldName;
}
diff --git a/src/java/org/apache/solr/search/DisMaxQParser.java b/src/java/org/apache/solr/search/DisMaxQParser.java
index 67fa3b2533c..79b2516deb5 100644
--- a/src/java/org/apache/solr/search/DisMaxQParser.java
+++ b/src/java/org/apache/solr/search/DisMaxQParser.java
@@ -207,7 +207,7 @@ public class DisMaxQParser extends QParser {
protected SolrPluginUtils.DisjunctionMaxQueryParser getParser(Map fields, String paramName,
SolrParams solrParams, float tiebreaker) {
int slop = solrParams.getInt(paramName, 0);
- SolrPluginUtils.DisjunctionMaxQueryParser parser = new SolrPluginUtils.DisjunctionMaxQueryParser(req.getSchema(),
+ SolrPluginUtils.DisjunctionMaxQueryParser parser = new SolrPluginUtils.DisjunctionMaxQueryParser(this,
IMPOSSIBLE_FIELD_NAME);
parser.addAlias(IMPOSSIBLE_FIELD_NAME, tiebreaker, fields);
parser.setPhraseSlop(slop);
diff --git a/src/java/org/apache/solr/search/LuceneQParserPlugin.java b/src/java/org/apache/solr/search/LuceneQParserPlugin.java
index 69879c44c6e..0d84f0ce34d 100755
--- a/src/java/org/apache/solr/search/LuceneQParserPlugin.java
+++ b/src/java/org/apache/solr/search/LuceneQParserPlugin.java
@@ -61,7 +61,7 @@ class LuceneQParser extends QParser {
String defaultField = getParam(CommonParams.DF);
if (defaultField==null) {
- defaultField = getReq().getSchema().getSolrQueryParser(null).getField();
+ defaultField = getReq().getSchema().getDefaultSearchFieldName();
}
lparser = new SolrQueryParser(this, defaultField);
diff --git a/src/java/org/apache/solr/search/SolrQueryParser.java b/src/java/org/apache/solr/search/SolrQueryParser.java
index 48e120cb59e..2283b5f72bd 100644
--- a/src/java/org/apache/solr/search/SolrQueryParser.java
+++ b/src/java/org/apache/solr/search/SolrQueryParser.java
@@ -64,7 +64,7 @@ public class SolrQueryParser extends QueryParser {
*
* @param schema Used for default search field name if defaultField is null and field information is used for analysis
* @param defaultField default field used for unspecified search terms. if null, the schema default field is used
- * @see IndexSchema#getSolrQueryParser(String defaultField)
+ * @see IndexSchema#getDefaultSearchFieldName()
*/
public SolrQueryParser(IndexSchema schema, String defaultField) {
super(defaultField == null ? schema.getDefaultSearchFieldName() : defaultField, schema.getQueryAnalyzer());
diff --git a/src/java/org/apache/solr/util/SolrPluginUtils.java b/src/java/org/apache/solr/util/SolrPluginUtils.java
index 2c3a45a784e..32bc5980bb6 100644
--- a/src/java/org/apache/solr/util/SolrPluginUtils.java
+++ b/src/java/org/apache/solr/util/SolrPluginUtils.java
@@ -523,6 +523,7 @@ public class SolrPluginUtils {
* NOTE: intra-function whitespace is not allowed.
*
* @see #parseFieldBoosts
+ * @deprecated
*/
public static List parseFuncs(IndexSchema s, String in)
throws ParseException {
@@ -731,7 +732,11 @@ public class SolrPluginUtils {
* DisjunctionMaxQuery and the tiebreaker to use.
*/
protected Map aliases = new HashMap(3);
-
+ public DisjunctionMaxQueryParser(QParser qp, String defaultField) {
+ super(qp,defaultField);
+ // don't trust that our parent class won't ever change it's default
+ setDefaultOperator(QueryParser.Operator.OR);
+ }
public DisjunctionMaxQueryParser(IndexSchema s, String defaultField) {
super(s,defaultField);
// don't trust that our parent class won't ever change it's default
diff --git a/src/test/org/apache/solr/util/SolrPluginUtilsTest.java b/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
index 0098635e2b8..4bbc2fde48c 100644
--- a/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
+++ b/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
@@ -133,7 +133,7 @@ public class SolrPluginUtilsTest extends AbstractSolrTestCase {
assertTrue(t+" sanity test isn't TermQuery: " + out.getClass(),
out instanceof TermQuery);
assertEquals(t+" sanity test is wrong field",
- h.getCore().getSchema().getSolrQueryParser(null).getField(),
+ h.getCore().getSchema().getDefaultSearchFieldName(),
((TermQuery)out).getTerm().field());
t = "subject:XXXXXXXX";