anchor.diff:  That feature now works from the configset dir too.
   SolrCloud doesn't support that but may sometime.
   
  -=== Rolling Upgrades with Solr 9
  -
  -=== Reindexing After Upgrades in Solr 9
  -
  -In Solr 8, it's possible to add docValues to a schema without re-indexing via UninvertDocValuesMergePolicy, an advanced/expert utility.
  +=== Rolling Upgrades
  +
  +* SOLR-14702: All references to "master" and "slave" were replaced in the code with "leader" and "follower".
  +This includes API calls for the replication handler and metrics.
  +For rolling upgrades into 9.0, you need to be on Solr version 8.7 or greater. Some metrics also changed, alerts and  monitors on Solr KPIs that mention "master" or "slave" will also now be "leader" and "follower"
  +
  +=== Reindexing After Upgrade
  +
  +In Solr 8, it's possible to add docValues to a schema without re-indexing via `UninvertDocValuesMergePolicy`, an advanced/expert utility.
   Due to changes in Lucene 9, that isn't possible any more; the component was removed.
   If re-indexing is too onerous, use this mechanism in Solr 8.
   
  -== New Features & Enhancements in Solr 9
  -
  -== Configuration and Default Parameter Changes in Solr 9
  +== Solr 9.0 Raw Notes
  +
  +_(raw; not yet edited)_
  +
  +
  +* SOLR-13671: Allow 'var' keyword in Java sources
  +
  +* SOLR-12055 introduces async logging by default. There's a small window where log messages may be lost in the event of some hard crash.
  +Switch back to synchronous logging if this is unacceptable, see comments in the log4j2 configuration files (log4j2.xml by default).
  +
  +* SOLR-13323: The unused package org.apache.solr.internal.csv.writer and associated classes/tests that were easily confused with but not used by org.apache.solr.response.CSVWriter (or any other code) have been removed
  +
  +* SOLR-13854, SOLR-13858: SolrMetricProducer / SolrInfoBean APIs have changed and third-party components that implement these APIs need to be updated.
  +
  +* SOLR-14344: Remove Deprecated HttpSolrClient.RemoteSolrException and HttpSolrClient.RemoteExcecutionException.
  +All the usages are replaced by BaseHttpSolrClient.RemoteSolrException and BaseHttpSolrClient.RemoteExcecutionException.
  +
  +* SOLR-15409: Zookeeper client libraries upgraded to 3.7.0, which may not be compatible with your existing server installations
  +
  +
  +== New Features & Enhancements
  +
  +* Replica placement plugins
  +
  +* Rate limiting and task management
  +
  +* Certificate Auth Plugin
  +
  +* SQL Query interface in UI
  +
  +== Configuration and Default Parameter Changes
  +
  +* SOLR-7530: TermsComponent's JSON response format was changed so that "terms" property carries per field arrays by default regardless of distrib, terms.list, terms.ttf parameters.
  +This affects JSON based response format but not others
  +
  +* SOLR-14036: Implicit /terms handler now returns terms across all shards in SolrCloud instead of only the local core.
  +Users/apps may be assuming the old behavior.
  +A request can be modified via the standard distrib=false param to only use the local core receiving the request.
  +
  +* SOLR-13783: In situations where a NamedList must be output as plain text, commas between key-value pairs will now be followed by a space (e.g., {shape=square, color=yellow} rather than {shape=square,color=yellow}) for consistency with other `java.util.Map` implementations based on `AbstractMap`.
  +
  +* SOLR-11725: JSON aggregations uses corrected sample formula to compute standard deviation and variance.
  +The computation of stdDev and variance in JSON aggregation is same as StatsComponent.
  +
  +* SOLR-14012: unique and hll aggregations always returns long value irrespective of standalone or solcloud
  +
  +* SOLR-11775: Return long value for facet count in Json Facet module irrespective of number of shards
  +
  +* SOLR-15276: V2 API call to look up async request status restful style of "/cluster/command-status/1000" instead of "/cluster/command-status?requestid=1000".
  +
  +* SOLR-14972: The default port of prometheus exporter has changed from 9983 to 8989, so you may need to adjust your configuration after upgrade.
  +
  +* SOLR-15471: The language identification "whitelist" configuration is now an "allowlist" to better convey the meaning of the property
  +
  +* SOLR-12891: MacroExpander will no longer will expand URL parameters inside of the 'expr' parameter (used by streaming expressions).
  +Additionally, users are advised to use the 'InjectionDefense' class when constructing streaming expressions that include user supplied data to avoid risks similar to SQL injection.
  +The legacy behavior of expanding the 'expr' parameter can be reinstated with -DStreamingExpressionMacros=true passed to the JVM at startup
  +
  +* SOLR-13324: URLClassifyProcessor#getCanonicalUrl now throws MalformedURLException rather than hiding it.
  +Although the present code is unlikely to produce such an exception it may be possible in future changes or in subclasses.
  +Currently this change should only effect compatibility of custom code overriding this method.
  +
  +* SOLR-14510: The `writeStartDocumentList` in `TextResponseWriter` now receives an extra boolean parameter representing the "exactness" of the `numFound` value (exact vs approximation).
  +Any custom response writer extending `TextResponseWriter` will need to implement this abstract method now (instead previous with the same name but without the new boolean parameter).
   
   === solr.xml maxBooleanClauses now enforced recursively
   
   Lucene 9.0 has additional safety checks over previous versions that impact how the `solr.xml` global `<<configuring-solr-xml#global-maxbooleanclauses,maxBooleanClauses>>` option is enforced.
   
  -In previous versios of Solr, this option was a hard limit on the number of clauses in any `BooleanQuery` object - but it was only enforced for the _direct_ clauses.  Starting with Solr 9, this global limit is now also enforced against the total number of clauses in a _nested_ query structure.
  +In previous versios of Solr, this option was a hard limit on the number of clauses in any `BooleanQuery` object - but it was only enforced for the _direct_ clauses.
  +Starting with Solr 9, this global limit is now also enforced against the total number of clauses in a _nested_ query structure.
   
   Users who upgrade from prior versions of Solr may find that some requests involving complex internal query structures (Example: long query strings using `edismax` with many `qf` and `pf` fields that include query time synonym expansion) which worked in the past now hit this limit and fail.
   
  
positive.code: 
  A thorough review of the list in Major Changes in Earlier 8.x Versions as well as the {solr-javadocs}/changes//Changes.html[CHANGES.txt] in your Solr instance will help you plan your migration to Solr 9.
  
  == Solr 9.0
  
  _(raw; not yet edited)_
  
  * SOLR-14912: Cleaned up solr-extraction contrib to produce solr-extraction-* jar
    (instead of solr-cell-*). (Dawid Weiss)
  
  * LUCENE-8738: Move to Java 11 as minimum Java version.
    (Adrien Grand, Uwe Schindler)
  
  * SOLR-13671: Allow 'var' keyword in Java sources
  
  * SOLR-12055 introduces async logging by default. There's a small window where log messages may be lost
    in the event of some hard crash. Switch back to synchronous logging if this is unacceptable, see
    see comments in the log4j2 configuration files (log4j2.xml by default).
  
  * SOLR-12891: MacroExpander will no longer will expand URL parameters inside of the 'expr' parameter (used by streaming
    expressions) Additionally, users are advised to use the 'InjectionDefense' class when constructing streaming
    expressions that include user supplied data to avoid risks similar to SQL injection. The legacy behavior of
    expanding the 'expr' parameter can be reinstated with -DStreamingExpressionMacros=true passed to the JVM at startup
    (Gus Heck).
  
  * SOLR-13324: URLClassifyProcessor#getCanonicalUrl now throws MalformedURLException rather than hiding it. Although the
    present code is unlikely to produce such an exception it may be possible in future changes or in subclasses.
    Currently this change should only effect compatibility of custom code overriding this method (Gus Heck).
  
  * SOLR-13323: The unused package org.apache.solr.internal.csv.writer and associated classes/tests that were easily
    confused with but not used by org.apache.solr.response.CSVWriter (or any other code) have been removed (Gus Heck)
  
  * SOLR-7530: TermsComponent's JSON response format was changed so that "terms" property carries per field arrays by default
    regardless of distrib, terms.list, terms.ttf parameters. This affects JSON based response format but not others
    (Munendra S N, Mikhail Khludnev)
  
  * SOLR-13596: Deprecated GroupingSpecification methods are removed. (Munendra S N)
  
  * SOLR-13649: Property 'blockUnknown' of BasicAuthPlugin and JWTAuthPlugin now defaults to 'true'. This change is backward
    incompatible. To achieve the previous default behavior, explicitly set 'blockUnknown':'false' in security.json
    (marcussorealheis, janhoy, shalin)
  
  * SOLR-11266: default Content-Type override for JSONResponseWriter from _default configSet is removed. Example has been
    provided in sample_techproducts_configs to override content-type. (Ishan Chattopadhyaya, Munendra S N, Gus Heck)
  
  * SOLR-13593 SOLR-13690 SOLR-13691: Allow to look up analyzer components by their SPI names in field type configuration. (Tomoko Uchida)
  
  * SOLR-13854, SOLR-13858: SolrMetricProducer / SolrInfoBean APIs have changed and third-party components that implement these APIs need to be updated. (ab)
  
  * SOLR-13783: In situations where a NamedList must be output as plain text, commas between key-value pairs will now be
    followed by a space (e.g., {shape=square, color=yellow} rather than {shape=square,color=yellow}) for consistency with
    other java.util.Map implementations based on AbstractMap (Chris Hennick).
  
  * SOLR-13817: Legacy SolrCache implementations (LRUCache, LFUCache, FastLRUCache) have been removed.
    Users have to modify their existing configurations to use CaffeineCache instead. (ab)
  
  * SOLR-14092: Deprecated BlockJoinFacetComponent and BlockJoinDocSetFacetComponent are removed
    Users are encouraged to migrate to uniqueBlock() in JSON Facet API.  (Mikhail Khludnev)
  
  * SOLR-13985: Solr's Jetty now binds to localhost network interface by default for better out of the box security.
    Administrators that need Solr exposed more broadly can change the SOLR_JETTY_HOST property in their Solr include
    (solr.in.sh/solr.in.cmd) file. (Jason Gerlowski, David Smiley, Robert Muir)
  
  * SOLR-14147: Solr now runs with the java security manager enabled by default. Administrators that need to run Solr with Hadoop will need to disable this feature by setting SOLR_SECURITY_MANAGER_ENABLED=false in the environment or in one of the Solr init scripts. Other features in Solr could also break. (Robert Muir, marcussorealheis)
  
  * SOLR-14118: Solr embedded zookeeper only binds to localhost by default.
    This embedded zookeeper should not be used in production. If you rely
    upon the previous behavior, then you can change the clientPortAddress
    in solr/server/solr/zoo.cfg (Robert Muir)
  
  * SOLR-11725: JSON aggregations uses corrected sample formula to compute standard deviation and variance.
    The computation of stdDev and variance in JSON aggregation is same as StatsComponent. (hossman, Munendra S N, yonik)
  
  * SOLR-14012: unique and hll aggregations always returns long value irrespective of standalone or solcloud
    (Munendra S N, hossman)
  
  * SOLR-14344: Remove Deprecated HttpSolrClient.RemoteSolrException and HttpSolrClient.RemoteExcecutionException.
    All the usages are replaced by BaseHttpSolrClient.RemoteSolrException and BaseHttpSolrClient.RemoteExcecutionException.
    (Munendra S N)
  
  * SOLR-12720: To change the auto add replica wait period modify the `waitFor` attribute of the `.auto_add_replicas` trigger.
    (marcussorealheis, shalin)
  
  * SOLR-11775: Return long value for facet count in Json Facet module irrespective of number of shards (hossman, Munendra S N)
  
  * SOLR-12823: Remove /clusterstate.json support, i.e., support for collections created with stateFormat=1 as well as support
    for Collection API MIGRATESTATEFORMAT action. Also removes support for cluster property `legacyCloud` (as if always false now).
  
  * SOLR-14656: Autoscaling framework removed
    This includes:
      Autoscaling, policy, triggers etc.
      withCollection handling (SOLR-14964)
      UTILIZENODE command
      Sim framework
      Suggestions tab in UI
      Reference guide pages for autoscaling
      autoAddReplicas feature
  
  * SOLR-14702: All references to "master" and "slave" were replaced in the code with "leader"
    and "follower". This includes API calls for the replication handler and metrics. For rolling
    upgrades into 9.0, you need to be on Solr version 8.7 or greater. Some metrics also changed, alerts and
    monitors on Solr KPIs that mention "master" or "slave" will also now be "leader" and "follower"
  
  * SOLR-14783: Data Import Handler (DIH) has been removed from Solr. The community package is available at: https://github.com/rohitbemax/dataimporthandler (Alexandre Rafalovitch)
  
  * SOLR-14792: VelocityResponseWriter has been removed from Solr.  This encompasses all previous included `/browse` and
    `wt=velocity` examples.  This feature has been migrated to an installable package at
    https://github.com/erikhatcher/solr-velocity
  
  * SOLR-14510: The `writeStartDocumentList` in `TextResponseWriter` now receives an extra boolean parameter representing the "exactness" of the numFound value (exact vs approximation).
    Any custom response writer extending `TextResponseWriter` will need to implement this abstract method now (instead previous with the same name but without the new boolean parameter).
  
  * SOLR-14036: Implicit /terms handler now returns terms across all shards in SolrCloud instead of only the local core.  Users/apps may be assuming the old behavior.  A request can be modified via the standard distrib=false param to only use the local core receiving the request.
  
  * SOLR-12847: maxShardsPerNode parameter has been removed because it was broken and inconsistent with other replica placement strategies. Other relevant placement strategies
    should be used instead, such as autoscaling policy or rules-based placement.
  
  * SOLR-14654: plugins cannot be loaded using "runtimeLib=true" option. Use the package manager to use and load plugins
  
  * SOLR-14972: The default port of prometheus exporter has changed from 9983 to 8989, so you may need to adjust your configuration after upgrade.
  
  * SOLR-14067: StatelessScriptUpdateProcessorFactory moved to /contrib/scripting/ package instead
   of shipping as part of Solr, due to security concerns.  Renamed to ScriptUpdateProcessorFactory for simpler name.
  
  * SOLR-15121: XSLTResponseWriter moved to /contrib/scripting/ package instead
   of shipping as part of Solr, due to security concerns.
  
  * SOLR-15203: Remove the deprecated `jwkUrl` in favour of `jwksUrl` when configuring JWT authentication.
  
  * SOLR-15276: V2 API call to look up async request status restful style of "/cluster/command-status/1000" instead of "/cluster/command-status?requestid=1000".
  
  * SOLR-15409: Zookeeper client libraries upgraded to 3.7.0, which may not be compatible with your existing server installations
  
  * SOLR-15470: The binary distribution no longer contains test-framework jars.
  
  * SOLR-15471: The language identification "whitelist" configuration is now an "allowlist" to better convey the meaning of the property
  
  === Upgrade Prerequisites in Solr 9
  
  * Upgrade all collections in stateFormat=1 to stateFormat=2 *before* upgrading to Solr 9, as Solr 9 does not support the
  older format and no longer supports migrating collections from the older format to the current format (previously known
  as stateFormat=2).
  Upgrade is to be done using Collection API MIGRATESTATEFORMAT action using a previous version of Solr.
  See for example https://solr.apache.org/guide/8_8/cluster-node-management.html#migratestateforma[Solr 8.8 Ref Guide].
  // Can't link directly to .adoc file, need to link to 8.something ref guide as MIGRATESTATEFORMAT no longer exists in 9.0.
  
  * If you're using a SolrJ CloudClient to connect to your Solr cluster, you must be using SolrJ version 8.10 or higher (8.x) when upgrading your SolrCloud from 8.x to 9.x.
  Otherwise, SolrJ will not be able to connect to the cluster once it has upgraded to Solr 9.
  
negative.code: * JaegerTracerConfigurator no longer recognizes any configuration in solr.xml.
    It is now completely configured via System properties and/or Environment variables as documented by Jaeger.
  
  === Schema Changes
  
  * `LegacyBM25SimilarityFactory` has been removed.
  
  * SOLR-13593 SOLR-13690 SOLR-13691: Allow to look up analyzer components by their SPI names in field type configuration.
  
  === Authentication & Security Changes
  
  * The property `blockUnknown` in the BasicAuthPlugin and the JWTAuthPlugin now defaults to `true`.
  This change is backward incompatible.
  If you need the pre-9.0 default behavior, you need to explicitly set `blockUnknown:false` in `security.json`.
  
  * The allow-list defining allowed URLs for the `shards` parameter is not in the `shardHandler` configuration anymore. It is defined by the `allowUrls` top-level property of the `solr.xml` file. For more information, see <<configuring-solr-xml.adoc#allow-urls, Format of solr.allowUrls>> documentation.
  
  * SOLR-13985: Solr's Jetty now binds to localhost network interface by default for better out of the box security.
  Administrators that need Solr exposed more broadly can change the SOLR_JETTY_HOST property in their Solr include (solr.in.sh/solr.in.cmd) file.
  
  * SOLR-14147: Solr now runs with the java security manager enabled by default. Administrators that need to run Solr with Hadoop will need to disable this feature by setting SOLR_SECURITY_MANAGER_ENABLED=false in the environment or in one of the Solr init scripts. Other features in Solr could also break. (Robert Muir, marcussorealheis)
  
  * SOLR-14118: Solr embedded zookeeper only binds to localhost by default.
  This embedded zookeeper should not be used in production.
  If you rely upon the previous behavior, then you can change the clientPortAddress in solr/server/solr/zoo.cfg
  
  === Contrib Changes
  
  * SOLR-14067: `StatelessScriptUpdateProcessorFactory` moved to `contrib/scripting` package instead of shipping as part of Solr, due to security concerns.
  Renamed to ScriptUpdateProcessorFactory for simpler name.
  
  * SOLR-15121: `XSLTResponseWriter` moved to `contrib/scripting` package instead
  of shipping as part of Solr, due to security concerns.
  
  * SOLR-14926: `contrib/clustering` back and rewritten
  
  * SOLR-14912: Cleaned up solr-extraction contrib to produce solr-extraction-* jar (instead of solr-cell-*). (Dawid Weiss)
  
  == Deprecations & Removed Features
  
  The following list of features have been permanently removed from Solr:
  
  * SOLR-14656: Autoscaling framework removed.
  This includes:
  ** Autoscaling, policy, triggers etc.
  ** withCollection handling (SOLR-14964)
  ** UTILIZENODE command
  ** Sim framework
  ** Suggestions tab in UI
  ** Reference guide pages for autoscaling
  ** autoAddReplicas feature
  
  * SOLR-14783: Data Import Handler (DIH) has been removed from Solr.
  The community package is available at: https://github.com/rohitbemax/dataimporthandler
  
  * SOLR-14792: VelocityResponseWriter has been removed from Solr.
  This encompasses all previous included `/browse` and `wt=velocity` examples.
  This feature has been migrated to an installable package at https://github.com/erikhatcher/solr-velocity
  
  * SOLR-13817: Legacy SolrCache implementations (LRUCache, LFUCache, FastLRUCache) have been removed.
  Users have to modify their existing configurations to use CaffeineCache instead. (ab)
  
  * CDCR
  
  * Storing indexes and backups in HDFS
  
  * Solr's blob store
  ** SOLR-14654: plugins cannot be loaded using "runtimeLib=true" option. Use the package manager to use and load plugins
  
  * Metrics History
  
  * SOLR-15470: The binary distribution no longer contains test-framework jars.
  
  * SOLR-15203: Remove the deprecated `jwkUrl` in favour of `jwksUrl` when configuring JWT authentication.
  
  * SOLR-12847: maxShardsPerNode parameter has been removed because it was broken and inconsistent with other replica placement strategies.
  Other relevant placement strategies should be used instead, such as autoscaling policy or rules-based placement.
  
  * SOLR-14092: Deprecated BlockJoinFacetComponent and BlockJoinDocSetFacetComponent are removed.
  Users are encouraged to migrate to uniqueBlock() in JSON Facet API.  (Mikhail Khludnev)
  
  * SOLR-13596: Deprecated GroupingSpecification methods are removed.
  
  * SOLR-11266: default Content-Type override for JSONResponseWriter from `_default` configSet is removed.
  Example has been provided in `sample_techproducts_configs` to override content-type.
  
  * `min_rf` deprecated in 7.x
  