You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by tf...@apache.org on 2017/05/23 00:03:29 UTC

[07/27] lucene-solr:jira/solr-10233: SOLR-10585: Remove defaultSearchField completely in 7.0

SOLR-10585: Remove defaultSearchField completely in 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/4a57fb4d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/4a57fb4d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/4a57fb4d

Branch: refs/heads/jira/solr-10233
Commit: 4a57fb4d888f83457ea774a7e03c998eb2da59ba
Parents: 467af79
Author: Jan Høydahl <ja...@apache.org>
Authored: Fri May 19 15:25:40 2017 +0200
Committer: Jan Høydahl <ja...@apache.org>
Committed: Fri May 19 15:27:28 2017 +0200

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  6 ++++
 .../handler/FieldAnalysisRequestHandler.java    | 11 +++++--
 .../org/apache/solr/handler/SchemaHandler.java  |  9 ------
 .../solr/handler/admin/LukeRequestHandler.java  |  1 -
 .../handler/component/HighlightComponent.java   |  9 ++----
 .../apache/solr/highlight/SolrHighlighter.java  |  5 ++--
 .../apache/solr/response/SchemaXmlWriter.java   |  5 ----
 .../org/apache/solr/schema/IndexSchema.java     | 31 ++------------------
 .../apache/solr/schema/ManagedIndexSchema.java  |  1 -
 .../solr/search/ComplexPhraseQParserPlugin.java |  3 --
 .../org/apache/solr/search/DisMaxQParser.java   |  5 ++--
 .../org/apache/solr/search/LuceneQParser.java   |  3 --
 .../org/apache/solr/search/QueryParsing.java    | 13 ++++----
 .../apache/solr/search/SimpleQParserPlugin.java |  6 ++--
 .../solr/search/SurroundQParserPlugin.java      |  2 +-
 .../apache/solr/search/XmlQParserPlugin.java    |  2 +-
 .../conf/bad-schema-defaultsearchfield.xml      | 26 ++++++++++++++++
 .../test/org/apache/solr/MinimalSchemaTest.java |  1 -
 .../FieldAnalysisRequestHandlerTest.java        |  8 +++++
 .../apache/solr/schema/BadIndexSchemaTest.java  |  4 +++
 .../apache/solr/util/SolrPluginUtilsTest.java   |  3 +-
 .../example-DIH/solr/tika/conf/managed-schema   |  2 +-
 .../src/other-schema-elements.adoc              |  7 -----
 .../src/putting-the-pieces-together.adoc        |  2 --
 .../response/schema/SchemaRepresentation.java   | 10 -------
 .../solrj/response/schema/SchemaResponse.java   |  5 ----
 .../webapp/web/js/angular/controllers/schema.js |  4 ---
 solr/webapp/web/partials/schema.html            |  3 --
 28 files changed, 77 insertions(+), 110 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index ccc8f4f..b7f349b 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -73,6 +73,9 @@ Upgrading from Solr 6.x
 * Setting <solrQueryParser defaultOperator="..."/> in schema is no longer allowed and will cause an exception.
   Please use "q.op" parameter on the request instead. For more details, see SOLR-10584.
 
+* Setting <defaultSearchField> in schema is no longer allowed and will cause an exception.
+  Please use "df" parameter on the request instead. For more details, see SOLR-10585.
+
 New Features
 ----------------------
 * SOLR-9857, SOLR-9858: Collect aggregated metrics from nodes and shard leaders in overseer. (ab)
@@ -159,6 +162,9 @@ Other Changes
 * SOLR-10584: We'll now always throw an exception if defaultOperator is found in schema. This config has
   been deprecated since 3.6, and enforced for new configs since 6.6 (janhoy)
 
+* SOLR-10585: We'll now always throw an exception if defaultSearchField is found in schema. This config has
+  been deprecated since 3.6, and enforced for new configs since 6.6 (janhoy, David Smiley)
+
 * SOLR-10414: RecoveryStrategy is now a Runnable instead of a Thread. (Tomás Fernández Löbbe)
 
 * SOLR-10042: Delete old deprecated Admin UI, leaving the AngularJS UI the only one supported (janhoy)

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/handler/FieldAnalysisRequestHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/FieldAnalysisRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/FieldAnalysisRequestHandler.java
index 7198b59..7c16606 100644
--- a/solr/core/src/java/org/apache/solr/handler/FieldAnalysisRequestHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/FieldAnalysisRequestHandler.java
@@ -116,7 +116,7 @@ public class FieldAnalysisRequestHandler extends AnalysisRequestHandlerBase {
    * @return AnalysisRequest containing all the information about what needs to be analyzed, and using what
    *         fields/types
    */
-  FieldAnalysisRequest resolveAnalysisRequest(SolrQueryRequest req) {
+  FieldAnalysisRequest resolveAnalysisRequest(SolrQueryRequest req) throws SolrException {
     SolrParams solrParams = req.getParams();
     FieldAnalysisRequest analysisRequest = new FieldAnalysisRequest();
 
@@ -129,8 +129,13 @@ public class FieldAnalysisRequestHandler extends AnalysisRequestHandlerBase {
       analysisRequest.setFieldNames(Arrays.asList(solrParams.get(AnalysisParams.FIELD_NAME).split(",")));
       useDefaultSearchField = false;
     }
-    if (useDefaultSearchField)  {
-      analysisRequest.addFieldName(req.getSchema().getDefaultSearchFieldName());
+    if (useDefaultSearchField) {
+      if (solrParams.get(CommonParams.DF) != null) {
+        analysisRequest.addFieldName(solrParams.get(CommonParams.DF));
+      } else {
+        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+            "Field analysis request must contain one of analysis.fieldtype, analysis.fieldname or df.");
+      }
     }
     analysisRequest.setQuery(solrParams.get(AnalysisParams.QUERY, solrParams.get(CommonParams.Q)));
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
index 38f29a7..41285be 100644
--- a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
@@ -137,15 +137,6 @@ public class SchemaHandler extends RequestHandlerBase implements SolrCoreAware,
           rsp.add(IndexSchema.NAME, schemaName);
           break;
         }
-        case "/schema/defaultsearchfield": {
-          final String defaultSearchFieldName = req.getSchema().getDefaultSearchFieldName();
-          if (null == defaultSearchFieldName) {
-            final String message = "undefined " + IndexSchema.DEFAULT_SEARCH_FIELD;
-            throw new SolrException(SolrException.ErrorCode.NOT_FOUND, message);
-          }
-          rsp.add(IndexSchema.DEFAULT_SEARCH_FIELD, defaultSearchFieldName);
-          break;
-        }
         case "/schema/zkversion": {
           int refreshIfBelowVersion = -1;
           Object refreshParam = req.getParams().get("refreshIfBelowVersion");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
index 2db04d9..9864016 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
@@ -472,7 +472,6 @@ public class LukeRequestHandler extends RequestHandlerBase
 
     finfo.add("uniqueKeyField",
         null == uniqueField ? null : uniqueField.getName());
-    finfo.add("defaultSearchField", schema.getDefaultSearchFieldName());
     finfo.add("similarity", getSimilarityInfo(schema.getSimilarity()));
     finfo.add("types", types);
     return finfo;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java b/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
index cc5211b..f1c9680 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
@@ -26,7 +26,6 @@ import java.util.stream.Stream;
 import com.google.common.base.Objects;
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.HighlightParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
@@ -154,12 +153,8 @@ public class HighlightComponent extends SearchComponent implements PluginInfoIni
 
       SolrHighlighter highlighter = getHighlighter(params);
 
-      String[] defaultHighlightFields;  //TODO: get from builder by default?
-      if (rb.getQparser() != null) {
-        defaultHighlightFields = rb.getQparser().getDefaultHighlightFields();
-      } else {
-        defaultHighlightFields = params.getParams(CommonParams.DF);
-      }
+      //TODO: get from builder by default?
+      String[] defaultHighlightFields = rb.getQparser() != null ? rb.getQparser().getDefaultHighlightFields() : null;
       
       Query highlightQuery = rb.getHighlightQuery();
       if(highlightQuery==null) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/highlight/SolrHighlighter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/SolrHighlighter.java b/solr/core/src/java/org/apache/solr/highlight/SolrHighlighter.java
index ade4c6b..f906a69 100644
--- a/solr/core/src/java/org/apache/solr/highlight/SolrHighlighter.java
+++ b/solr/core/src/java/org/apache/solr/highlight/SolrHighlighter.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.highlight;
 import org.apache.lucene.search.Query;
+import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.HighlightParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
@@ -56,9 +57,9 @@ public abstract class SolrHighlighter
 
     // if no fields specified in the request, or the handler, fall back to programmatic default, or default search field.
     if(emptyArray(fields)) {
-      // use default search field if highlight fieldlist not specified.
+      // use default search field from request if highlight fieldlist not specified.
       if (emptyArray(defaultFields)) {
-        String defaultSearchField = request.getSchema().getDefaultSearchFieldName();
+        String defaultSearchField = request.getParams().get(CommonParams.DF);
         fields = null == defaultSearchField ? new String[]{} : new String[]{defaultSearchField};
       } else {
         fields = defaultFields;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/response/SchemaXmlWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/SchemaXmlWriter.java b/solr/core/src/java/org/apache/solr/response/SchemaXmlWriter.java
index 5801575..1af6634 100644
--- a/solr/core/src/java/org/apache/solr/response/SchemaXmlWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/SchemaXmlWriter.java
@@ -98,11 +98,6 @@ public class SchemaXmlWriter extends TextResponseWriter {
         closeStartTag(false);
         writer.write(val.toString());
         endTag(IndexSchema.UNIQUE_KEY, false);
-      } else if (schemaPropName.equals(IndexSchema.DEFAULT_SEARCH_FIELD)) {
-        openStartTag(IndexSchema.DEFAULT_SEARCH_FIELD);
-        closeStartTag(false);
-        writer.write(val.toString());
-        endTag(IndexSchema.DEFAULT_SEARCH_FIELD, false);
       } else if (schemaPropName.equals(IndexSchema.SIMILARITY)) {
         writeSimilarity((SimpleOrderedMap<Object>) val);
       } else if (schemaPropName.equals(IndexSchema.FIELD_TYPES)) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index 9a69ec5..13385b7 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -95,7 +95,6 @@ public class IndexSchema {
   public static final String COPY_FIELD = "copyField";
   public static final String COPY_FIELDS = COPY_FIELD + "s";
   public static final String DEFAULT_SCHEMA_FILE = "schema.xml";
-  public static final String DEFAULT_SEARCH_FIELD = "defaultSearchField";
   public static final String DESTINATION = "dest";
   public static final String DYNAMIC_FIELD = "dynamicField";
   public static final String DYNAMIC_FIELDS = DYNAMIC_FIELD + "s";
@@ -145,8 +144,6 @@ public class IndexSchema {
 
   protected List<SchemaAware> schemaAware = new ArrayList<>();
 
-  protected String defaultSearchFieldName=null;
-
   protected Map<String, List<CopyField>> copyFieldsMap = new HashMap<>();
   public Map<String,List<CopyField>> getCopyFieldsMap() { return Collections.unmodifiableMap(copyFieldsMap); }
   
@@ -298,15 +295,6 @@ public class IndexSchema {
   public Analyzer getQueryAnalyzer() { return queryAnalyzer; }
 
   
-  /**
-   * Name of the default search field specified in the schema file.
-   * <br><b>Note:</b>Avoid calling this, try to use this method so that the 'df' param is consulted as an override:
-   * {@link org.apache.solr.search.QueryParsing#getDefaultField(IndexSchema, String)}
-   */
-  public String getDefaultSearchFieldName() {
-    return defaultSearchFieldName;
-  }
-
   protected SchemaField uniqueKeyField;
 
   /**
@@ -509,22 +497,10 @@ public class IndexSchema {
       }
 
       //                      /schema/defaultSearchField/text()
-      expression = stepsToPath(SCHEMA, DEFAULT_SEARCH_FIELD, TEXT_FUNCTION);
+      expression = stepsToPath(SCHEMA, "defaultSearchField", TEXT_FUNCTION);
       node = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);
-      if (node==null) {
-        log.debug("no default search field specified in schema.");
-      } else {
-        defaultSearchFieldName=node.getNodeValue().trim();
-        // throw exception if specified, but not found or not indexed
-        if (defaultSearchFieldName!=null) {
-          SchemaField defaultSearchField = getFields().get(defaultSearchFieldName);
-          if ((defaultSearchField == null) || !defaultSearchField.indexed()) {
-            String msg =  "default search field '" + defaultSearchFieldName + "' not defined or not indexed" ;
-            throw new SolrException(ErrorCode.SERVER_ERROR, msg);
-          }
-        }
-        log.warn("[{}] default search field in schema is {}. WARNING: Deprecated, please use 'df' on request instead.",
-            coreName, defaultSearchFieldName);
+      if (node != null) {
+        throw new SolrException(ErrorCode.SERVER_ERROR, "Setting defaultSearchField in schema not supported since Solr 7");
       }
 
       //                      /schema/solrQueryParser/@defaultOperator
@@ -1384,7 +1360,6 @@ public class IndexSchema {
       NAME(IndexSchema.NAME, sp -> sp.schema.getSchemaName()),
       VERSION(IndexSchema.VERSION, sp -> sp.schema.getVersion()),
       UNIQUE_KEY(IndexSchema.UNIQUE_KEY, sp -> sp.schema.uniqueKeyFieldName),
-      DEFAULT_SEARCH_FIELD(IndexSchema.DEFAULT_SEARCH_FIELD, sp -> sp.schema.defaultSearchFieldName),
       SIMILARITY(IndexSchema.SIMILARITY, sp -> sp.schema.isExplicitSimilarity ?
           sp.schema.similarityFactory.getNamedPropertyValues() :
           null),

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
index de292fd..3806dd3 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
@@ -1357,7 +1357,6 @@ public final class ManagedIndexSchema extends IndexSchema {
     
     newSchema.name = name;
     newSchema.version = version;
-    newSchema.defaultSearchFieldName = defaultSearchFieldName;
     newSchema.similarity = similarity;
     newSchema.similarityFactory = similarityFactory;
     newSchema.isExplicitSimilarity = isExplicitSimilarity;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/search/ComplexPhraseQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/ComplexPhraseQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/ComplexPhraseQParserPlugin.java
index 1ce7aed..85b40cd 100644
--- a/solr/core/src/java/org/apache/solr/search/ComplexPhraseQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/ComplexPhraseQParserPlugin.java
@@ -110,9 +110,6 @@ public class ComplexPhraseQParserPlugin extends QParserPlugin {
       String qstr = getString();
 
       String defaultField = getParam(CommonParams.DF);
-      if (defaultField == null) {
-        defaultField = getReq().getSchema().getDefaultSearchFieldName();
-      }
 
       SolrQueryParserDelegate reverseAwareParser = new SolrQueryParserDelegate(this, defaultField);
       

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java b/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java
index 28c80b0..2af5def 100644
--- a/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java
@@ -65,15 +65,14 @@ public class DisMaxQParser extends QParser {
 
   /**
    * Uses {@link SolrPluginUtils#parseFieldBoosts(String)} with the 'qf' parameter. Falls back to the 'df' parameter
-   * or {@link org.apache.solr.schema.IndexSchema#getDefaultSearchFieldName()}.
    */
   public static Map<String, Float> parseQueryFields(final IndexSchema indexSchema, final SolrParams solrParams)
       throws SyntaxError {
     Map<String, Float> queryFields = SolrPluginUtils.parseFieldBoosts(solrParams.getParams(DisMaxParams.QF));
     if (queryFields.isEmpty()) {
-      String df = QueryParsing.getDefaultField(indexSchema, solrParams.get(CommonParams.DF));
+      String df = solrParams.get(CommonParams.DF);
       if (df == null) {
-        throw new SyntaxError("Neither "+DisMaxParams.QF+", "+CommonParams.DF +", nor the default search field are present.");
+        throw new SyntaxError("Neither "+DisMaxParams.QF+" nor "+CommonParams.DF +" are present.");
       }
       queryFields.put(df, 1.0f);
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/search/LuceneQParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/LuceneQParser.java b/solr/core/src/java/org/apache/solr/search/LuceneQParser.java
index 16b29d3..753b36b 100644
--- a/solr/core/src/java/org/apache/solr/search/LuceneQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/LuceneQParser.java
@@ -39,9 +39,6 @@ public class LuceneQParser extends QParser {
     if (qstr == null || qstr.length()==0) return null;
 
     String defaultField = getParam(CommonParams.DF);
-    if (defaultField==null) {
-      defaultField = getReq().getSchema().getDefaultSearchFieldName();
-    }
     lparser = new SolrQueryParser(this, defaultField);
 
     lparser.setDefaultOperator(QueryParsing.parseOP(getParam(QueryParsing.OP)));

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/search/QueryParsing.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/QueryParsing.java b/solr/core/src/java/org/apache/solr/search/QueryParsing.java
index 4398ac4..381276c 100644
--- a/solr/core/src/java/org/apache/solr/search/QueryParsing.java
+++ b/solr/core/src/java/org/apache/solr/search/QueryParsing.java
@@ -71,13 +71,16 @@ public class QueryParsing {
   }
 
   /**
-   * Returns the effective default field based on the 'df' param or
-   * hardcoded schema default.  May be null if either exists specified.
+   * Returns the effective default field based on the 'df' param.
+   * TODO: This is kept for 3rd party QParser compat in 7.x. Remove this method in Solr 8.0
+   * @param ignored Not in use
+   * @param df the default field, which will be returned as-is
    * @see org.apache.solr.common.params.CommonParams#DF
-   * @see org.apache.solr.schema.IndexSchema#getDefaultSearchFieldName
+   * @deprecated IndexScema does not contain defaultField anymore, you must rely on df alone
    */
-  public static String getDefaultField(final IndexSchema s, final String df) {
-    return df != null ? df : s.getDefaultSearchFieldName();
+  @Deprecated
+  public static String getDefaultField(final IndexSchema ignored, final String df) {
+    return df;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java
index f265d93..47e88ce 100644
--- a/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/SimpleQParserPlugin.java
@@ -109,12 +109,12 @@ public class SimpleQParserPlugin extends QParserPlugin {
 
       if (queryFields.isEmpty()) {
         // It qf is not specified setup up the queryFields map to use the defaultField.
-        String defaultField = QueryParsing.getDefaultField(req.getSchema(), defaultParams.get(CommonParams.DF));
+        String defaultField = defaultParams.get(CommonParams.DF);
 
         if (defaultField == null) {
           // A query cannot be run without having a field or set of fields to run against.
-          throw new IllegalStateException("Neither " + SimpleParams.QF + ", " + CommonParams.DF
-              + ", nor the default search field are present.");
+          throw new IllegalStateException("Neither " + SimpleParams.QF + " nor " + CommonParams.DF
+              + " are present.");
         }
 
         queryFields.put(defaultField, 1.0F);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/search/SurroundQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SurroundQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/SurroundQParserPlugin.java
index a90cb25..4654a5c 100644
--- a/solr/core/src/java/org/apache/solr/search/SurroundQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/SurroundQParserPlugin.java
@@ -95,7 +95,7 @@ public class SurroundQParserPlugin extends QParserPlugin {
       // processing based on example in LIA Ch 9
 
       BasicQueryFactory bqFactory = new BasicQueryFactory(this.maxBasicQueries);
-      String defaultField = QueryParsing.getDefaultField(getReq().getSchema(),getParam(CommonParams.DF));
+      String defaultField = getParam(CommonParams.DF);
       Query lquery = sq.makeLuceneQueryField(defaultField, bqFactory);
       return lquery;
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/java/org/apache/solr/search/XmlQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/XmlQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/XmlQParserPlugin.java
index ee8e062..f71d7eb 100755
--- a/solr/core/src/java/org/apache/solr/search/XmlQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/XmlQParserPlugin.java
@@ -53,7 +53,7 @@ public class XmlQParserPlugin extends QParserPlugin {
         return null;
       }
       final IndexSchema schema = req.getSchema();
-      final String defaultField = QueryParsing.getDefaultField(schema, getParam(CommonParams.DF));
+      final String defaultField = getParam(CommonParams.DF);
       final Analyzer analyzer = schema.getQueryAnalyzer();
 
       final SolrCoreParser solrParser = new SolrCoreParser(defaultField, analyzer, req);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/test-files/solr/collection1/conf/bad-schema-defaultsearchfield.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/bad-schema-defaultsearchfield.xml b/solr/core/src/test-files/solr/collection1/conf/bad-schema-defaultsearchfield.xml
new file mode 100644
index 0000000..9567e30
--- /dev/null
+++ b/solr/core/src/test-files/solr/collection1/conf/bad-schema-defaultsearchfield.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<schema name="bad-schema-defaultsearchfield" version="1.6">
+  <fieldType name="string" class="solr.StrField"/>
+  <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="false"/>
+  <uniqueKey>id</uniqueKey>
+  <!-- BEGIN BAD STUFF: not allowed anymore -->
+  <defaultSearchField>id</defaultSearchField>
+  <!-- END BAD STUFF -->
+</schema>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java b/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java
index df8b552..4c06438 100644
--- a/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java
+++ b/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java
@@ -88,7 +88,6 @@ public class MinimalSchemaTest extends SolrTestCaseJ4 {
                 "show","schema")
             ,"//int[@name='numDocs'][.='2']"
             ,"//null[@name='uniqueKeyField']"
-            ,"//null[@name='defaultSearchField']"
             );
 
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
index fc0f6be..2b2fba9 100644
--- a/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
@@ -479,6 +479,14 @@ public class FieldAnalysisRequestHandlerTest extends AnalysisRequestHandlerTestB
     assertEquals(901, tokenInfoList.get(0).get("org.apache.lucene.analysis.tokenattributes.FlagsAttribute#flags"));
   }
 
+  @Test(expected = Exception.class)
+  public void testNoDefaultField() throws Exception {
+    ModifiableSolrParams params = new ModifiableSolrParams();
+    params.add(CommonParams.Q, "fox brown");
+    SolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), params);
+    handler.resolveAnalysisRequest(req);
+  }
+
   /** A custom impl of a standard attribute impl; test this instance is used. */
   public class CustomFlagsAttributeImpl extends FlagsAttributeImpl {
     @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/test/org/apache/solr/schema/BadIndexSchemaTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/BadIndexSchemaTest.java b/solr/core/src/test/org/apache/solr/schema/BadIndexSchemaTest.java
index e24386b..2d5adf9 100644
--- a/solr/core/src/test/org/apache/solr/schema/BadIndexSchemaTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/BadIndexSchemaTest.java
@@ -132,4 +132,8 @@ public class BadIndexSchemaTest extends AbstractBadConfigTestBase {
     doTest("bad-schema-default-operator.xml",
            "default operator in schema (solrQueryParser/@defaultOperator) not supported");
   }
+
+  public void testSchemaWithDefaultSearchField() throws Exception {
+    doTest("bad-schema-defaultsearchfield.xml", "Setting defaultSearchField in schema not supported since Solr 7");
+  }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java b/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
index 59795d8..0ffb206 100644
--- a/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
+++ b/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
@@ -35,7 +35,6 @@ import org.apache.lucene.search.TermQuery;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.QParser;
-import org.apache.solr.search.QueryParsing;
 import org.apache.solr.util.SolrPluginUtils.DisjunctionMaxQueryParser;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -131,7 +130,7 @@ public class SolrPluginUtilsTest extends SolrTestCaseJ4 {
     QParser qparser = QParser.getParser("hi", "dismax", req);
 
     DisjunctionMaxQueryParser qp =
-      new SolrPluginUtils.DisjunctionMaxQueryParser(qparser, QueryParsing.getDefaultField(req.getSchema(), req.getParams().get("df")));
+      new SolrPluginUtils.DisjunctionMaxQueryParser(qparser, req.getParams().get("df"));
 
     qp.addAlias("hoss", 0.01f, SolrPluginUtils.parseFieldBoosts
                 ("title^2.0 title_stemmed name^1.2 subject^0.5"));

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/example/example-DIH/solr/tika/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/tika/conf/managed-schema b/solr/example/example-DIH/solr/tika/conf/managed-schema
index 6d506f7..b90f314 100644
--- a/solr/example/example-DIH/solr/tika/conf/managed-schema
+++ b/solr/example/example-DIH/solr/tika/conf/managed-schema
@@ -25,7 +25,7 @@
   <field name="title" type="text_simple" indexed="true" stored="true" multiValued="true"/>
   <field name="format" type="string" indexed="true" stored="true"/>
 
-  <!-- field "text" is searchable (it is the default search field) but it is not stored to save space -->
+  <!-- field "text" is searchable but it is not stored to save space -->
   <field name="text" type="text_simple" indexed="true" stored="false" multiValued="true"/>
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/solr-ref-guide/src/other-schema-elements.adoc
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/other-schema-elements.adoc b/solr/solr-ref-guide/src/other-schema-elements.adoc
index e36c093..c76d6c3 100644
--- a/solr/solr-ref-guide/src/other-schema-elements.adoc
+++ b/solr/solr-ref-guide/src/other-schema-elements.adoc
@@ -21,13 +21,6 @@ Schema defaults and `copyFields` cannot be used to populate the `uniqueKey` fiel
 Further, the operation will fail if the `uniqueKey` field is used, but is multivalued (or inherits the multivalue-ness from the `fieldtype`). However, `uniqueKey` will continue to work, as long as the field is properly used.
 
 
-[[OtherSchemaElements-DefaultSearchField]]
-== Default Search Field
-
-Although it has been deprecated for quite some time, Solr still has support for Schema based configuration of a `<defaultSearchField/>` (which is superseded by the <<the-standard-query-parser.adoc#the-standard-query-parser,`df parameter`>>).
-
-If you have this option specified in your Schema, you are strongly encouraged to replace it with request parameters (or <<request-parameters-api.adoc#request-parameters-api,request parameter defaults>>) as support for it will be removed from future Solr release.
-
 [[OtherSchemaElements-Similarity]]
 == Similarity
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/solr-ref-guide/src/putting-the-pieces-together.adoc
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/putting-the-pieces-together.adoc b/solr/solr-ref-guide/src/putting-the-pieces-together.adoc
index eac49b2..73b37d7 100644
--- a/solr/solr-ref-guide/src/putting-the-pieces-together.adoc
+++ b/solr/solr-ref-guide/src/putting-the-pieces-together.adoc
@@ -22,8 +22,6 @@ These are supplemented by `copyFields`.
 
 The `uniqueKey` must always be defined.
 
-In older Solr versions you would find `defaultSearchField` and `solrQueryParser` tags as well, but although these still work they are deprecated and discouraged, see <<other-schema-elements.adoc#other-schema-elements,Other Schema Elements>>.
-
 .Types and fields are optional tags
 [NOTE]
 ====

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/solrj/src/java/org/apache/solr/client/solrj/response/schema/SchemaRepresentation.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/response/schema/SchemaRepresentation.java b/solr/solrj/src/java/org/apache/solr/client/solrj/response/schema/SchemaRepresentation.java
index 68441bc..f9c1cf4 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/response/schema/SchemaRepresentation.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/response/schema/SchemaRepresentation.java
@@ -29,8 +29,6 @@ public class SchemaRepresentation {
 
   private String uniqueKey;
 
-  private String defaultSearchField;
-
   private Map<String, Object> similarity;
 
   private List<Map<String, Object>> fields;
@@ -66,14 +64,6 @@ public class SchemaRepresentation {
     this.uniqueKey = uniqueKey;
   }
 
-  public String getDefaultSearchField() {
-    return defaultSearchField;
-  }
-
-  public void setDefaultSearchField(String defaultSearchField) {
-    this.defaultSearchField = defaultSearchField;
-  }
-
   public Map<String, Object> getSimilarity() {
     return similarity;
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/solrj/src/java/org/apache/solr/client/solrj/response/schema/SchemaResponse.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/response/schema/SchemaResponse.java b/solr/solrj/src/java/org/apache/solr/client/solrj/response/schema/SchemaResponse.java
index e45d023..d0ec5f7 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/response/schema/SchemaResponse.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/response/schema/SchemaResponse.java
@@ -137,7 +137,6 @@ public class SchemaResponse extends SolrResponseBase {
     schemaRepresentation.setName(getSchemaName(schemaObj));
     schemaRepresentation.setVersion(getSchemaVersion(schemaObj));
     schemaRepresentation.setUniqueKey(getSchemaUniqueKey(schemaObj));
-    schemaRepresentation.setDefaultSearchField(getDefaultSearchField(schemaObj));
     schemaRepresentation.setSimilarity(getSimilarity(schemaObj));
     schemaRepresentation.setFields(getFields(schemaObj));
     schemaRepresentation.setDynamicFields(getDynamicFields(schemaObj));
@@ -158,10 +157,6 @@ public class SchemaResponse extends SolrResponseBase {
     return (String) schemaNamedList.get("uniqueKey");
   }
 
-  private static String getDefaultSearchField(Map schemaNamedList) {
-    return (String) schemaNamedList.get("defaultSearchField");
-  }
-
   private static Map<String, Object> getSimilarity(Map schemaNamedList) {
     NamedList<Object> similarityNamedList = (NamedList<Object>) schemaNamedList.get("similarity");
     Map<String, Object> similarity = null;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/webapp/web/js/angular/controllers/schema.js
----------------------------------------------------------------------
diff --git a/solr/webapp/web/js/angular/controllers/schema.js b/solr/webapp/web/js/angular/controllers/schema.js
index a6f184c..1eefb75 100644
--- a/solr/webapp/web/js/angular/controllers/schema.js
+++ b/solr/webapp/web/js/angular/controllers/schema.js
@@ -68,13 +68,11 @@ solrAdminApp.controller('SchemaController',
                     }
                     $scope.leftbar = leftbar;
                     $scope.core = $routeParams.core;
-                    $scope.defaultSearchField = data.default_search_field;
                     $scope.uniqueKeyField = data.unique_key_field;
                     $scope.similarity = data.similarity; 
                     if ($scope.similarity && $scope.similarity.className) {
                         $scope.similarity.className = shortenPackages($scope.similarity.className); 
                     }
-                    $scope.isDefaultSearchField = ($scope.selectedType == "Field" && $scope.name == $scope.defaultSearchField);
                     $scope.isUniqueKeyField = ($scope.selectedType == "Field" && $scope.name == $scope.uniqueKeyField);
 
                     $scope.display = getFieldProperties(data, $routeParams.core, $scope.is, $scope.name);
@@ -336,7 +334,6 @@ var filterFields = function(type, data, name) {
 var mergeIndexAndSchemaData = function(index, schema) {
 
     var data = {
-        default_search_field: null,
         unique_key_field: null,
         similarity: null,
         key: {},
@@ -357,7 +354,6 @@ var mergeIndexAndSchemaData = function(index, schema) {
 
     data.key = index.info.key;
 
-    data.default_search_field = schema.defaultSearchField;
     data.unique_key_field = schema.uniqueKeyField;
     data.similarity = schema.similarity;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4a57fb4d/solr/webapp/web/partials/schema.html
----------------------------------------------------------------------
diff --git a/solr/webapp/web/partials/schema.html b/solr/webapp/web/partials/schema.html
index 1c0347f..0c6ba20 100644
--- a/solr/webapp/web/partials/schema.html
+++ b/solr/webapp/web/partials/schema.html
@@ -435,9 +435,6 @@ limitations under the License.
         <dt class="unique-key-field" ng-class="{active: isUniqueKeyField}" ng-show="uniqueKeyField">Unique Key Field</dt>
         <dd class="unique-key-field" ng-class="{active: isUniqueKeyField}"><a ng-href="#/{{core}}/schema?field={{uniqueKeyField}}">{{uniqueKeyField}}</a></dd>
 
-        <dt class="default-search-field" ng-class="{active: isDefaultSearchField}" ng-show="defaultSearchField">Default Search Field</dt>
-        <dd class="default-search-field" ng-class="{active: isDefaultSearchField}"><a ng-href="#/{{core}}/schema?field={{defaultSearchField}}">{{defaultSearchField}}</a></dd>
-
         <dt class="similarity" ng-class="{active: similarity.className}">Global Similarity:</dt>
         <dd class="similarity" ng-class="{active: similarity.className}" data-tip="{{ similarity.className }}">{{ similarity.details }}</dd>