You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2017/07/04 01:23:21 UTC

[01/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-6807: requestDispatcher/@handleSelect now defaults to false; stop using it. Deprecated StandardRequestHandler; stop using it.

Repository: lucene-solr
Updated Branches:
  refs/heads/feature/autoscaling 8e0247e94 -> 2e19a94fc


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/spelling/WordBreakSolrSpellCheckerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/spelling/WordBreakSolrSpellCheckerTest.java b/solr/core/src/test/org/apache/solr/spelling/WordBreakSolrSpellCheckerTest.java
index f24bcba..258594a 100644
--- a/solr/core/src/test/org/apache/solr/spelling/WordBreakSolrSpellCheckerTest.java
+++ b/solr/core/src/test/org/apache/solr/spelling/WordBreakSolrSpellCheckerTest.java
@@ -158,7 +158,7 @@ public class WordBreakSolrSpellCheckerTest extends SolrTestCaseJ4 {
   public void testInConjunction() throws Exception {
     assertQ(req(
         "q", "lowerfilt:(paintable pine apple good ness)", 
-        "qt", "spellCheckWithWordbreak", 
+        "qt", "/spellCheckWithWordbreak",
         "indent", "true",
         SpellCheckComponent.SPELLCHECK_BUILD, "true",
         SpellCheckComponent.COMPONENT_NAME, "true", 
@@ -222,7 +222,7 @@ public class WordBreakSolrSpellCheckerTest extends SolrTestCaseJ4 {
   public void testCollate() throws Exception {
    assertQ(req(
         "q", "lowerfilt:(paintable pine apple godness)", 
-        "qt", "spellCheckWithWordbreak", 
+        "qt", "/spellCheckWithWordbreak",
         "indent", "true",
         SpellCheckComponent.SPELLCHECK_BUILD, "true",
         SpellCheckComponent.COMPONENT_NAME, "true", 
@@ -248,7 +248,7 @@ public class WordBreakSolrSpellCheckerTest extends SolrTestCaseJ4 {
     );
     assertQ(req(
         "q", "lowerfilt:(pine AND apple)", 
-        "qt", "spellCheckWithWordbreak", 
+        "qt", "/spellCheckWithWordbreak",
         "indent", "true",
         SpellCheckComponent.COMPONENT_NAME, "true", 
         SpellCheckComponent.SPELLCHECK_ACCURACY, ".75", 
@@ -262,7 +262,7 @@ public class WordBreakSolrSpellCheckerTest extends SolrTestCaseJ4 {
     );
     assertQ(req(
         "q", "lowerfilt:pine AND NOT lowerfilt:apple", 
-        "qt", "spellCheckWithWordbreak", 
+        "qt", "/spellCheckWithWordbreak",
         "indent", "true",
         SpellCheckComponent.COMPONENT_NAME, "true", 
         SpellCheckComponent.SPELLCHECK_ACCURACY, ".75", 
@@ -275,7 +275,7 @@ public class WordBreakSolrSpellCheckerTest extends SolrTestCaseJ4 {
     );
     assertQ(req(
         "q", "lowerfilt:pine NOT lowerfilt:apple", 
-        "qt", "spellCheckWithWordbreak", 
+        "qt", "/spellCheckWithWordbreak",
         "indent", "true",
         SpellCheckComponent.COMPONENT_NAME, "true", 
         SpellCheckComponent.SPELLCHECK_ACCURACY, ".75", 
@@ -288,7 +288,7 @@ public class WordBreakSolrSpellCheckerTest extends SolrTestCaseJ4 {
     );
     assertQ(req(
         "q", "lowerfilt:(+pine -apple)", 
-        "qt", "spellCheckWithWordbreak", 
+        "qt", "/spellCheckWithWordbreak",
         "indent", "true",
         SpellCheckComponent.COMPONENT_NAME, "true", 
         SpellCheckComponent.SPELLCHECK_ACCURACY, ".75", 
@@ -301,7 +301,7 @@ public class WordBreakSolrSpellCheckerTest extends SolrTestCaseJ4 {
     );
     assertQ(req(
         "q", "lowerfilt:(+printableinpuntableplantable)", 
-        "qt", "spellCheckWithWordbreak", 
+        "qt", "/spellCheckWithWordbreak",
         "indent", "true",
         SpellCheckComponent.COMPONENT_NAME, "true", 
         SpellCheckComponent.SPELLCHECK_ACCURACY, "1", 
@@ -313,7 +313,7 @@ public class WordBreakSolrSpellCheckerTest extends SolrTestCaseJ4 {
     );
     assertQ(req(
         "q", "zxcv AND qwtp AND fghj", 
-        "qt", "spellCheckWithWordbreak",
+        "qt", "/spellCheckWithWordbreak",
         "defType", "edismax",
         "qf", "lowerfilt",
         "indent", "true",

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/example/example-DIH/solr/db/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/db/conf/solrconfig.xml b/solr/example/example-DIH/solr/db/conf/solrconfig.xml
index 46e7b87..c03529e 100644
--- a/solr/example/example-DIH/solr/db/conf/solrconfig.xml
+++ b/solr/example/example-DIH/solr/db/conf/solrconfig.xml
@@ -587,22 +587,8 @@
 
        This section contains instructions for how the SolrDispatchFilter
        should behave when processing requests for this SolrCore.
-
-       handleSelect is a legacy option that affects the behavior of requests
-       such as /select?qt=XXX
-
-       handleSelect="true" will cause the SolrDispatchFilter to process
-       the request and dispatch the query to a handler specified by the 
-       "qt" param, assuming "/select" isn't already registered.
-
-       handleSelect="false" will cause the SolrDispatchFilter to
-       ignore "/select" requests, resulting in a 404 unless a handler
-       is explicitly registered with the name "/select"
-
-       handleSelect="true" is not recommended for new users, but is the default
-       for backwards compatibility
     -->
-  <requestDispatcher handleSelect="false" >
+  <requestDispatcher>
     <!-- Request Parsing
 
          These settings indicate how Solr Requests may be parsed, and
@@ -699,14 +685,6 @@
        Incoming queries will be dispatched to a specific handler by name
        based on the path specified in the request.
 
-       Legacy behavior: If the request path uses "/select" but no Request
-       Handler has that name, and if handleSelect="true" has been specified in
-       the requestDispatcher, then the Request Handler is dispatched based on
-       the qt parameter.  Handlers without a leading '/' are accessed this way
-       like so: http://host/app/[core/]select?qt=name  If no qt is
-       given, then the requestHandler that declares default="true" will be
-       used or the one named "standard".
-
        If a Request Handler is declared with startup="lazy", then it will
        not be initialized until the first request that uses it.
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/example/example-DIH/solr/mail/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/mail/conf/solrconfig.xml b/solr/example/example-DIH/solr/mail/conf/solrconfig.xml
index 950a891..28f415c 100644
--- a/solr/example/example-DIH/solr/mail/conf/solrconfig.xml
+++ b/solr/example/example-DIH/solr/mail/conf/solrconfig.xml
@@ -590,22 +590,8 @@
 
        This section contains instructions for how the SolrDispatchFilter
        should behave when processing requests for this SolrCore.
-
-       handleSelect is a legacy option that affects the behavior of requests
-       such as /select?qt=XXX
-
-       handleSelect="true" will cause the SolrDispatchFilter to process
-       the request and dispatch the query to a handler specified by the 
-       "qt" param, assuming "/select" isn't already registered.
-
-       handleSelect="false" will cause the SolrDispatchFilter to
-       ignore "/select" requests, resulting in a 404 unless a handler
-       is explicitly registered with the name "/select"
-
-       handleSelect="true" is not recommended for new users, but is the default
-       for backwards compatibility
     -->
-  <requestDispatcher handleSelect="false" >
+  <requestDispatcher>
     <!-- Request Parsing
 
          These settings indicate how Solr Requests may be parsed, and
@@ -702,14 +688,6 @@
        Incoming queries will be dispatched to a specific handler by name
        based on the path specified in the request.
 
-       Legacy behavior: If the request path uses "/select" but no Request
-       Handler has that name, and if handleSelect="true" has been specified in
-       the requestDispatcher, then the Request Handler is dispatched based on
-       the qt parameter.  Handlers without a leading '/' are accessed this way
-       like so: http://host/app/[core/]select?qt=name  If no qt is
-       given, then the requestHandler that declares default="true" will be
-       used or the one named "standard".
-
        If a Request Handler is declared with startup="lazy", then it will
        not be initialized until the first request that uses it.
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/example/example-DIH/solr/solr/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/solr/conf/solrconfig.xml b/solr/example/example-DIH/solr/solr/conf/solrconfig.xml
index 0fd689f..7019be7 100644
--- a/solr/example/example-DIH/solr/solr/conf/solrconfig.xml
+++ b/solr/example/example-DIH/solr/solr/conf/solrconfig.xml
@@ -587,22 +587,8 @@
 
        This section contains instructions for how the SolrDispatchFilter
        should behave when processing requests for this SolrCore.
-
-       handleSelect is a legacy option that affects the behavior of requests
-       such as /select?qt=XXX
-
-       handleSelect="true" will cause the SolrDispatchFilter to process
-       the request and dispatch the query to a handler specified by the 
-       "qt" param, assuming "/select" isn't already registered.
-
-       handleSelect="false" will cause the SolrDispatchFilter to
-       ignore "/select" requests, resulting in a 404 unless a handler
-       is explicitly registered with the name "/select"
-
-       handleSelect="true" is not recommended for new users, but is the default
-       for backwards compatibility
     -->
-  <requestDispatcher handleSelect="false" >
+  <requestDispatcher>
     <!-- Request Parsing
 
          These settings indicate how Solr Requests may be parsed, and
@@ -699,14 +685,6 @@
        Incoming queries will be dispatched to a specific handler by name
        based on the path specified in the request.
 
-       Legacy behavior: If the request path uses "/select" but no Request
-       Handler has that name, and if handleSelect="true" has been specified in
-       the requestDispatcher, then the Request Handler is dispatched based on
-       the qt parameter.  Handlers without a leading '/' are accessed this way
-       like so: http://host/app/[core/]select?qt=name  If no qt is
-       given, then the requestHandler that declares default="true" will be
-       used or the one named "standard".
-
        If a Request Handler is declared with startup="lazy", then it will
        not be initialized until the first request that uses it.
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/example/files/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/example/files/conf/solrconfig.xml b/solr/example/files/conf/solrconfig.xml
index d16ddb1..71fdd47 100644
--- a/solr/example/files/conf/solrconfig.xml
+++ b/solr/example/files/conf/solrconfig.xml
@@ -585,22 +585,8 @@
 
        This section contains instructions for how the SolrDispatchFilter
        should behave when processing requests for this SolrCore.
-
-       handleSelect is a legacy option that affects the behavior of requests
-       such as /select?qt=XXX
-
-       handleSelect="true" will cause the SolrDispatchFilter to process
-       the request and dispatch the query to a handler specified by the 
-       "qt" param, assuming "/select" isn't already registered.
-
-       handleSelect="false" will cause the SolrDispatchFilter to
-       ignore "/select" requests, resulting in a 404 unless a handler
-       is explicitly registered with the name "/select"
-
-       handleSelect="true" is not recommended for new users, but is the default
-       for backwards compatibility
     -->
-  <requestDispatcher handleSelect="false" >
+  <requestDispatcher>
     <!-- Request Parsing
 
          These settings indicate how Solr Requests may be parsed, and
@@ -697,14 +683,6 @@
        Incoming queries will be dispatched to a specific handler by name
        based on the path specified in the request.
 
-       Legacy behavior: If the request path uses "/select" but no Request
-       Handler has that name, and if handleSelect="true" has been specified in
-       the requestDispatcher, then the Request Handler is dispatched based on
-       the qt parameter.  Handlers without a leading '/' are accessed this way
-       like so: http://host/app/[core/]select?qt=name  If no qt is
-       given, then the requestHandler that declares default="true" will be
-       used or the one named "standard".
-
        If a Request Handler is declared with startup="lazy", then it will
        not be initialized until the first request that uses it.
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/server/solr/configsets/_default/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/_default/conf/solrconfig.xml b/solr/server/solr/configsets/_default/conf/solrconfig.xml
index e524dbf..f75303f 100644
--- a/solr/server/solr/configsets/_default/conf/solrconfig.xml
+++ b/solr/server/solr/configsets/_default/conf/solrconfig.xml
@@ -598,21 +598,8 @@
        This section contains instructions for how the SolrDispatchFilter
        should behave when processing requests for this SolrCore.
 
-       handleSelect is a legacy option that affects the behavior of requests
-       such as /select?qt=XXX
-
-       handleSelect="true" will cause the SolrDispatchFilter to process
-       the request and dispatch the query to a handler specified by the 
-       "qt" param, assuming "/select" isn't already registered.
-
-       handleSelect="false" will cause the SolrDispatchFilter to
-       ignore "/select" requests, resulting in a 404 unless a handler
-       is explicitly registered with the name "/select"
-
-       handleSelect="true" is not recommended for new users, but is the default
-       for backwards compatibility
     -->
-  <requestDispatcher handleSelect="false" >
+  <requestDispatcher>
     <!-- Request Parsing
 
          These settings indicate how Solr Requests may be parsed, and
@@ -709,14 +696,6 @@
        Incoming queries will be dispatched to a specific handler by name
        based on the path specified in the request.
 
-       Legacy behavior: If the request path uses "/select" but no Request
-       Handler has that name, and if handleSelect="true" has been specified in
-       the requestDispatcher, then the Request Handler is dispatched based on
-       the qt parameter.  Handlers without a leading '/' are accessed this way
-       like so: http://host/app/[core/]select?qt=name  If no qt is
-       given, then the requestHandler that declares default="true" will be
-       used or the one named "standard".
-
        If a Request Handler is declared with startup="lazy", then it will
        not be initialized until the first request that uses it.
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml b/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
index 73899a6..6d0ce68 100644
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
+++ b/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
@@ -631,21 +631,8 @@
        This section contains instructions for how the SolrDispatchFilter
        should behave when processing requests for this SolrCore.
 
-       handleSelect is a legacy option that affects the behavior of requests
-       such as /select?qt=XXX
-
-       handleSelect="true" will cause the SolrDispatchFilter to process
-       the request and dispatch the query to a handler specified by the 
-       "qt" param, assuming "/select" isn't already registered.
-
-       handleSelect="false" will cause the SolrDispatchFilter to
-       ignore "/select" requests, resulting in a 404 unless a handler
-       is explicitly registered with the name "/select"
-
-       handleSelect="true" is not recommended for new users, but is the default
-       for backwards compatibility
     -->
-  <requestDispatcher handleSelect="false" >
+  <requestDispatcher>
     <!-- Request Parsing
 
          These settings indicate how Solr Requests may be parsed, and
@@ -742,14 +729,6 @@
        Incoming queries will be dispatched to a specific handler by name
        based on the path specified in the request.
 
-       Legacy behavior: If the request path uses "/select" but no Request
-       Handler has that name, and if handleSelect="true" has been specified in
-       the requestDispatcher, then the Request Handler is dispatched based on
-       the qt parameter.  Handlers without a leading '/' are accessed this way
-       like so: http://host/app/[core/]select?qt=name  If no qt is
-       given, then the requestHandler that declares default="true" will be
-       used or the one named "standard".
-
        If a Request Handler is declared with startup="lazy", then it will
        not be initialized until the first request that uses it.
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solr-ref-guide/src/distributed-requests.adoc
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/distributed-requests.adoc b/solr/solr-ref-guide/src/distributed-requests.adoc
index b89878f..6d2c585 100644
--- a/solr/solr-ref-guide/src/distributed-requests.adoc
+++ b/solr/solr-ref-guide/src/distributed-requests.adoc
@@ -76,11 +76,11 @@ http://localhost:8983/solr/gettingstarted/select?q=*:*&shards=shard1,localhost:7
 
 You can directly configure aspects of the concurrency and thread-pooling used within distributed search in Solr. This allows for finer grained control and you can tune it to target your own specific requirements. The default configuration favors throughput over latency.
 
-To configure the standard handler, provide a configuration like this in `solrconfig.xml`:
+To configure the standard search handler, provide a configuration like this in `solrconfig.xml`:
 
 [source,xml]
 ----
-<requestHandler name="standard" class="solr.SearchHandler" default="true">
+<requestHandler name="/select" class="solr.SearchHandler">
   <!-- other params go here -->
   <shardHandler class="HttpShardHandlerFactory">
     <int name="socketTimeOut">1000</int>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solr-ref-guide/src/the-dismax-query-parser.adoc
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/the-dismax-query-parser.adoc b/solr/solr-ref-guide/src/the-dismax-query-parser.adoc
index d624d7c..378fd93 100644
--- a/solr/solr-ref-guide/src/the-dismax-query-parser.adoc
+++ b/solr/solr-ref-guide/src/the-dismax-query-parser.adoc
@@ -20,9 +20,9 @@
 
 The DisMax query parser is designed to process simple phrases (without complex syntax) entered by users and to search for individual terms across several fields using different weighting (boosts) based on the significance of each field. Additional options enable users to influence the score based on rules specific to each use case (independent of user input).
 
-In general, the DisMax query parser's interface is more like that of Google than the interface of the 'standard' Solr request handler. This similarity makes DisMax the appropriate query parser for many consumer applications. It accepts a simple syntax, and it rarely produces error messages.
+In general, the DisMax query parser's interface is more like that of Google than the interface of the 'lucene' Solr query parser. This similarity makes DisMax the appropriate query parser for many consumer applications. It accepts a simple syntax, and it rarely produces error messages.
 
-The DisMax query parser supports an extremely simplified subset of the Lucene QueryParser syntax. As in Lucene, quotes can be used to group phrases, and +/- can be used to denote mandatory and optional clauses. All other Lucene query parser special characters (except AND and OR) are escaped to simplify the user experience. The DisMax query parser takes responsibility for building a good query from the user's input using Boolean clauses containing DisMax queries across fields and boosts specified by the user. It also lets the Solr administrator provide additional boosting queries, boosting functions, and filtering queries to artificially affect the outcome of all searches. These options can all be specified as default parameters for the handler in the `solrconfig.xml` file or overridden in the Solr query URL.
+The DisMax query parser supports an extremely simplified subset of the Lucene QueryParser syntax. As in Lucene, quotes can be used to group phrases, and +/- can be used to denote mandatory and optional clauses. All other Lucene query parser special characters (except AND and OR) are escaped to simplify the user experience. The DisMax query parser takes responsibility for building a good query from the user's input using Boolean clauses containing DisMax queries across fields and boosts specified by the user. It also lets the Solr administrator provide additional boosting queries, boosting functions, and filtering queries to artificially affect the outcome of all searches. These options can all be specified as default parameters for the request handler in the `solrconfig.xml` file or overridden in the Solr query URL.
 
 Interested in the technical concept behind the DisMax name? DisMax stands for Maximum Disjunction. Here's a definition of a Maximum Disjunction or "DisMax" query:
 
@@ -190,11 +190,11 @@ All of the sample URLs in this section assume you are running Solr's "techproduc
 bin/solr -e techproducts
 ----
 
-Normal results for the word "video" using the StandardRequestHandler with the default search field:
+Results for the word "video" using the standard query parser, and we assume "df" is pointing to a field to search:
 
 `\http://localhost:8983/solr/techproducts/select?q=video&fl=name+score`
 
-The "dismax" handler is configured to search across the text, features, name, sku, id, manu, and cat fields all with varying boosts designed to ensure that "better" matches appear first, specifically: documents which match on the name and cat fields get higher scores.
+The "dismax" parser is configured to search across the text, features, name, sku, id, manu, and cat fields all with varying boosts designed to ensure that "better" matches appear first, specifically: documents which match on the name and cat fields get higher scores.
 
 `\http://localhost:8983/solr/techproducts/select?defType=dismax&q=video`
 
@@ -210,13 +210,13 @@ You can boost results that have a field that matches a specific value.
 
 `\http://localhost:8983/solr/techproducts/select?defType=dismax&q=video&bq=cat:electronics^5.0`
 
-Another instance of the handler is registered using the `qt` "instock" and has slightly different configuration options, notably: a filter for (you guessed it) `inStock:true)`.
+Another request handler is registered at "/instock" and has slightly different configuration options, notably: a filter for (you guessed it) `inStock:true)`.
 
 `\http://localhost:8983/solr/techproducts/select?defType=dismax&q=video&fl=name,score,inStock`
 
-`\http://localhost:8983/solr/techproducts/select?defType=dismax&q=video&qt=instock&fl=name,score,inStock`
+`\http://localhost:8983/solr/techproducts/instock?defType=dismax&q=video&fl=name,score,inStock`
 
-One of the other really cool features in this handler is robust support for specifying the "BooleanQuery.minimumNumberShouldMatch" you want to be used based on how many terms are in your user's query. These allows flexibility for typos and partial matches. For the dismax handler, one and two word queries require that all of the optional clauses match, but for three to five word queries one missing word is allowed.
+One of the other really cool features in this parser is robust support for specifying the "BooleanQuery.minimumNumberShouldMatch" you want to be used based on how many terms are in your user's query. These allows flexibility for typos and partial matches. For the dismax parser, one and two word queries require that all of the optional clauses match, but for three to five word queries one missing word is allowed.
 
 `\http://localhost:8983/solr/techproducts/select?defType=dismax&q=belkin+ipod`
 
@@ -224,7 +224,7 @@ One of the other really cool features in this handler is robust support for spec
 
 `\http://localhost:8983/solr/techproducts/select?defType=dismax&q=belkin+ipod+apple`
 
-Just like the StandardRequestHandler, it supports the debugQuery option to viewing the parsed query, and the score explanations for each document.
+Use the debugQuery option to see the parsed query, and the score explanations for each document.
 
 `\http://localhost:8983/solr/techproducts/select?defType=dismax&q=belkin+ipod+gibberish&debugQuery=true`
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solrj/src/java/org/apache/solr/common/params/MoreLikeThisParams.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/params/MoreLikeThisParams.java b/solr/solrj/src/java/org/apache/solr/common/params/MoreLikeThisParams.java
index 919f786..882a32e 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/MoreLikeThisParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/MoreLikeThisParams.java
@@ -19,11 +19,10 @@ package org.apache.solr.common.params;
 import java.util.Locale;
 
 /**
- * @since solr 1.3
+ * Params for {@code MoreLikeThisHandler}.
  */
 public interface MoreLikeThisParams 
 {
-  // enable more like this -- this only applies to 'StandardRequestHandler' maybe DismaxRequestHandler
   public final static String MLT = "mlt";
   
   public final static String PREFIX = "mlt.";

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig-slave1.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig-slave1.xml b/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig-slave1.xml
index 9114cfd..a68ac11 100644
--- a/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig-slave1.xml
+++ b/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig-slave1.xml
@@ -29,17 +29,17 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
+  <requestHandler name="/defaults" class="solr.SearchHandler">
 
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
+  <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy">
   </requestHandler>
 
   <requestHandler name="/replication" class="solr.ReplicationHandler">
@@ -47,7 +47,7 @@
   </requestHandler>
 
 
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1"/>
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig-sql.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig-sql.xml b/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig-sql.xml
index 6a0c5b5..af659ad 100644
--- a/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig-sql.xml
+++ b/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig-sql.xml
@@ -44,13 +44,13 @@
     </lst>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
   </requestDispatcher>
 
   <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
+  <requestHandler name="/select" class="solr.SearchHandler"/>
   <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
 
   <requestHandler name="/admin/ping" class="solr.PingRequestHandler">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig.xml b/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig.xml
index a2db090..78bba01 100644
--- a/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig.xml
+++ b/solr/solrj/src/test-files/solrj/solr/collection1/conf/solrconfig.xml
@@ -35,11 +35,11 @@
     </updateLog>
   </updateHandler>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
   </requestDispatcher>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
+  <requestHandler name="/select" class="solr.SearchHandler"/>
 
   <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
     <lst name="invariants">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solrj/src/test-files/solrj/solr/configsets/ml/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/configsets/ml/conf/solrconfig.xml b/solr/solrj/src/test-files/solrj/solr/configsets/ml/conf/solrconfig.xml
index b404e87..b002a30 100644
--- a/solr/solrj/src/test-files/solrj/solr/configsets/ml/conf/solrconfig.xml
+++ b/solr/solrj/src/test-files/solrj/solr/configsets/ml/conf/solrconfig.xml
@@ -36,11 +36,11 @@
   </updateHandler>
 
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
   </requestDispatcher>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
+  <requestHandler name="/select" class="solr.SearchHandler"/>
 
   <!-- config for the admin interface -->
   <admin>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solrj/src/test-files/solrj/solr/configsets/shared/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/configsets/shared/conf/solrconfig.xml b/solr/solrj/src/test-files/solrj/solr/configsets/shared/conf/solrconfig.xml
index 6beb0b7..fbfa82b 100644
--- a/solr/solrj/src/test-files/solrj/solr/configsets/shared/conf/solrconfig.xml
+++ b/solr/solrj/src/test-files/solrj/solr/configsets/shared/conf/solrconfig.xml
@@ -35,18 +35,18 @@
     </updateLog>
   </updateHandler>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
   </requestDispatcher>
-  
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
+
+  <requestHandler name="/select" class="solr.SearchHandler"/>
 
   <!-- config for the admin interface --> 
   <admin>
     <defaultQuery>solr</defaultQuery>
   </admin>
 
-  <initParams path="standard">
+  <initParams path="/select">
     <lst name="defaults">
       <str name="df">name</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/solrconfig.xml b/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/solrconfig.xml
index c7985d2..70e9403 100644
--- a/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/solrconfig.xml
+++ b/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/solrconfig.xml
@@ -36,18 +36,18 @@
   </updateHandler>
 
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
   </requestDispatcher>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true"/>
+  <requestHandler name="/select" class="solr.SearchHandler"/>
 
   <!-- config for the admin interface -->
   <admin>
     <defaultQuery>solr</defaultQuery>
   </admin>
 
-  <initParams path="standard">
+  <initParams path="/select">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solrj/src/test-files/solrj/solr/multicore/core0/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/multicore/core0/conf/solrconfig.xml b/solr/solrj/src/test-files/solrj/solr/multicore/core0/conf/solrconfig.xml
index 58a7892..633f9d6 100644
--- a/solr/solrj/src/test-files/solrj/solr/multicore/core0/conf/solrconfig.xml
+++ b/solr/solrj/src/test-files/solrj/solr/multicore/core0/conf/solrconfig.xml
@@ -57,18 +57,18 @@
     </updateLog>
   </updateHandler>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" formdataUploadLimitInKB="-1" />
   </requestDispatcher>
-  
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
+
+  <requestHandler name="/select" class="solr.SearchHandler"/>
 
   <!-- config for the admin interface --> 
   <admin>
     <defaultQuery>solr</defaultQuery>
   </admin>
 
-  <initParams path="standard">
+  <initParams path="/select">
     <lst name="defaults">
       <str name="df">name</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solrj/src/test-files/solrj/solr/multicore/core1/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/multicore/core1/conf/solrconfig.xml b/solr/solrj/src/test-files/solrj/solr/multicore/core1/conf/solrconfig.xml
index 81ee32a..097b705 100644
--- a/solr/solrj/src/test-files/solrj/solr/multicore/core1/conf/solrconfig.xml
+++ b/solr/solrj/src/test-files/solrj/solr/multicore/core1/conf/solrconfig.xml
@@ -57,18 +57,18 @@
     </updateLog>
   </updateHandler>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" formdataUploadLimitInKB="-1" />
   </requestDispatcher>
-  
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
+
+  <requestHandler name="/select" class="solr.SearchHandler"/>
 
   <!-- config for the admin interface --> 
   <admin>
     <defaultQuery>solr</defaultQuery>
   </admin>
 
-  <initParams path="standard">
+  <initParams path="/select">
     <lst name="defaults">
       <str name="df">name</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java
index c91cb67..49cec5d 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java
@@ -456,7 +456,7 @@ public class CloudSolrClientTest extends SolrCloudTestCase {
 
   private Long getNumRequests(String baseUrl, String collectionName) throws
       SolrServerException, IOException {
-    return getNumRequests(baseUrl, collectionName, "QUERY", "standard", null, false);
+    return getNumRequests(baseUrl, collectionName, "QUERY", "/select", null, false);
   }
 
   private Long getNumRequests(String baseUrl, String collectionName, String category, String key, String scope, boolean returnNumErrors) throws

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
index c8ec6c0..f9a93f7 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
@@ -489,7 +489,7 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
       xmlStr = "<solr></solr>";
     Files.write(solrHome.resolve(SolrXmlConfig.SOLR_XML_FILE), xmlStr.getBytes(StandardCharsets.UTF_8));
     h = new TestHarness(SolrXmlConfig.fromSolrHome(solrHome));
-    lrf = h.getRequestFactory("standard", 0, 20, CommonParams.VERSION, "2.2");
+    lrf = h.getRequestFactory("/select", 0, 20, CommonParams.VERSION, "2.2");
   }
   
   /** 
@@ -687,20 +687,20 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
             solrConfig,
             getSchemaFile());
     lrf = h.getRequestFactory
-            ("standard",0,20,CommonParams.VERSION,"2.2");
+            ("",0,20,CommonParams.VERSION,"2.2");
   }
 
   public static CoreContainer createCoreContainer(Path solrHome, String solrXML) {
     testSolrHome = requireNonNull(solrHome);
     h = new TestHarness(solrHome, solrXML);
-    lrf = h.getRequestFactory("standard", 0, 20, CommonParams.VERSION, "2.2");
+    lrf = h.getRequestFactory("", 0, 20, CommonParams.VERSION, "2.2");
     return h.getCoreContainer();
   }
 
   public static CoreContainer createCoreContainer(NodeConfig config, CoresLocator locator) {
     testSolrHome = config.getSolrResourceLoader().getInstancePath();
     h = new TestHarness(config, locator);
-    lrf = h.getRequestFactory("standard", 0, 20, CommonParams.VERSION, "2.2");
+    lrf = h.getRequestFactory("", 0, 20, CommonParams.VERSION, "2.2");
     return h.getCoreContainer();
   }
 
@@ -715,7 +715,7 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
   public static CoreContainer createDefaultCoreContainer(Path solrHome) {
     testSolrHome = requireNonNull(solrHome);
     h = new TestHarness("collection1", initCoreDataDir.getAbsolutePath(), "solrconfig.xml", "schema.xml");
-    lrf = h.getRequestFactory("standard", 0, 20, CommonParams.VERSION, "2.2");
+    lrf = h.getRequestFactory("", 0, 20, CommonParams.VERSION, "2.2");
     return h.getCoreContainer();
   }
 


[52/53] [abbrv] lucene-solr:feature/autoscaling: Merge branch 'upgrade-master-to-8' of https://github.com/anshumg/lucene-solr for 7.0 release ( closes #119 )

Posted by sh...@apache.org.
Merge branch 'upgrade-master-to-8' of https://github.com/anshumg/lucene-solr for 7.0 release ( closes #119 )


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/8218a5b2
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/8218a5b2
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/8218a5b2

Branch: refs/heads/feature/autoscaling
Commit: 8218a5b2c6ca78c05a6060af4770c504e28a6f99
Parents: 68a46ac bc9c414
Author: Anshum Gupta <an...@apple.com>
Authored: Mon Jul 3 12:11:52 2017 -0700
Committer: Anshum Gupta <an...@apple.com>
Committed: Mon Jul 3 12:11:52 2017 -0700

----------------------------------------------------------------------
 lucene/CHANGES.txt                              |    3 +
 .../analysis/custom/TestCustomAnalyzer.java     |    8 +-
 .../lucene50/Lucene50SegmentInfoFormat.java     |   90 -
 .../apache/lucene/codecs/lucene50/package.html  |   25 -
 .../codecs/lucene53/Lucene53NormsFormat.java    |   91 -
 .../codecs/lucene53/Lucene53NormsProducer.java  |  236 ---
 .../lucene/codecs/lucene53/package-info.java    |   23 -
 .../lucene54/Lucene54DocValuesConsumer.java     |  797 --------
 .../lucene54/Lucene54DocValuesFormat.java       |  186 --
 .../lucene54/Lucene54DocValuesProducer.java     | 1803 ------------------
 .../lucene/codecs/lucene54/package-info.java    |  403 ----
 .../lucene/codecs/lucene60/Lucene60Codec.java   |  177 --
 .../apache/lucene/codecs/lucene60/package.html  |   25 -
 .../lucene/codecs/lucene62/Lucene62Codec.java   |  176 --
 .../apache/lucene/codecs/lucene62/package.html  |   25 -
 .../apache/lucene/index/FixBrokenOffsets.java   |  138 --
 .../java/org/apache/lucene/index/package.html   |   27 -
 .../services/org.apache.lucene.codecs.Codec     |    2 -
 .../org.apache.lucene.codecs.DocValuesFormat    |    1 -
 .../lucene50/Lucene50RWSegmentInfoFormat.java   |  125 --
 .../lucene50/TestLucene50SegmentInfoFormat.java |   50 -
 .../codecs/lucene53/Lucene53NormsConsumer.java  |  159 --
 .../codecs/lucene53/Lucene53RWNormsFormat.java  |   31 -
 .../lucene53/TestLucene53NormsFormat.java       |   44 -
 .../lucene54/TestLucene54DocValuesFormat.java   |  640 -------
 .../lucene/codecs/lucene60/Lucene60RWCodec.java |   38 -
 .../lucene/codecs/lucene62/Lucene62RWCodec.java |   44 -
 .../lucene62/Lucene62RWSegmentInfoFormat.java   |  193 --
 .../lucene62/TestLucene62SegmentInfoFormat.java |   48 -
 .../index/TestBackwardsCompatibility.java       |   64 +-
 .../lucene/index/TestFixBrokenOffsets.java      |  112 --
 .../lucene/index/TestIndexWriterOnOldIndex.java |    7 +-
 .../lucene/index/TestManyPointsInOldIndex.java  |    1 +
 .../org/apache/lucene/index/dvupdates.6.0.0.zip |  Bin 3420 -> 0 bytes
 .../org/apache/lucene/index/empty.6.0.0.zip     |  Bin 225 -> 0 bytes
 .../org/apache/lucene/index/index.6.0.0-cfs.zip |  Bin 15807 -> 0 bytes
 .../apache/lucene/index/index.6.0.0-nocfs.zip   |  Bin 15806 -> 0 bytes
 .../org/apache/lucene/index/index.6.0.1-cfs.zip |  Bin 15820 -> 0 bytes
 .../apache/lucene/index/index.6.0.1-nocfs.zip   |  Bin 15823 -> 0 bytes
 .../org/apache/lucene/index/index.6.1.0-cfs.zip |  Bin 15803 -> 0 bytes
 .../apache/lucene/index/index.6.1.0-nocfs.zip   |  Bin 15829 -> 0 bytes
 .../org/apache/lucene/index/index.6.2.0-cfs.zip |  Bin 15880 -> 0 bytes
 .../apache/lucene/index/index.6.2.0-nocfs.zip   |  Bin 15867 -> 0 bytes
 .../org/apache/lucene/index/index.6.2.1-cfs.zip |  Bin 15851 -> 0 bytes
 .../apache/lucene/index/index.6.2.1-nocfs.zip   |  Bin 15845 -> 0 bytes
 .../org/apache/lucene/index/index.6.3.0-cfs.zip |  Bin 15869 -> 0 bytes
 .../apache/lucene/index/index.6.3.0-nocfs.zip   |  Bin 15876 -> 0 bytes
 .../org/apache/lucene/index/index.6.4.0-cfs.zip |  Bin 15829 -> 0 bytes
 .../apache/lucene/index/index.6.4.0-nocfs.zip   |  Bin 15831 -> 0 bytes
 .../org/apache/lucene/index/index.6.4.1-cfs.zip |  Bin 15848 -> 0 bytes
 .../apache/lucene/index/index.6.4.1-nocfs.zip   |  Bin 15838 -> 0 bytes
 .../org/apache/lucene/index/index.6.4.2-cfs.zip |  Bin 15856 -> 0 bytes
 .../apache/lucene/index/index.6.4.2-nocfs.zip   |  Bin 15886 -> 0 bytes
 .../org/apache/lucene/index/index.6.5.0-cfs.zip |  Bin 15832 -> 0 bytes
 .../apache/lucene/index/index.6.5.0-nocfs.zip   |  Bin 15836 -> 0 bytes
 .../org/apache/lucene/index/index.6.5.1-cfs.zip |  Bin 15842 -> 0 bytes
 .../apache/lucene/index/index.6.5.1-nocfs.zip   |  Bin 15827 -> 0 bytes
 .../org/apache/lucene/index/index.6.6.0-cfs.zip |  Bin 15875 -> 0 bytes
 .../apache/lucene/index/index.6.6.0-nocfs.zip   |  Bin 15883 -> 0 bytes
 .../lucene/index/index.630.brokenoffsets.zip    |  Bin 3203 -> 0 bytes
 .../lucene/index/index.single-empty-doc.630.zip |  Bin 1363 -> 0 bytes
 .../org/apache/lucene/index/manypointsindex.zip |  Bin 3739 -> 0 bytes
 .../org/apache/lucene/index/maxposindex.zip     |  Bin 1702 -> 0 bytes
 .../org/apache/lucene/index/moreterms.6.0.0.zip |  Bin 157215 -> 0 bytes
 .../org/apache/lucene/index/sorted.6.2.0.zip    |  Bin 157007 -> 0 bytes
 .../org/apache/lucene/index/sorted.6.2.1.zip    |  Bin 100974 -> 0 bytes
 .../org/apache/lucene/index/sorted.6.3.0.zip    |  Bin 71090 -> 0 bytes
 .../lucene/index/unsupported.6.0.0-cfs.zip      |  Bin 0 -> 15807 bytes
 .../lucene/index/unsupported.6.0.0-nocfs.zip    |  Bin 0 -> 15806 bytes
 .../lucene/index/unsupported.6.0.1-cfs.zip      |  Bin 0 -> 15820 bytes
 .../lucene/index/unsupported.6.0.1-nocfs.zip    |  Bin 0 -> 15823 bytes
 .../lucene/index/unsupported.6.1.0-cfs.zip      |  Bin 0 -> 15803 bytes
 .../lucene/index/unsupported.6.1.0-nocfs.zip    |  Bin 0 -> 15829 bytes
 .../lucene/index/unsupported.6.2.0-cfs.zip      |  Bin 0 -> 15880 bytes
 .../lucene/index/unsupported.6.2.0-nocfs.zip    |  Bin 0 -> 15867 bytes
 .../lucene/index/unsupported.6.2.1-cfs.zip      |  Bin 0 -> 15851 bytes
 .../lucene/index/unsupported.6.2.1-nocfs.zip    |  Bin 0 -> 15845 bytes
 .../lucene/index/unsupported.6.3.0-cfs.zip      |  Bin 0 -> 15869 bytes
 .../lucene/index/unsupported.6.3.0-nocfs.zip    |  Bin 0 -> 15876 bytes
 .../lucene/index/unsupported.6.4.0-cfs.zip      |  Bin 0 -> 15829 bytes
 .../lucene/index/unsupported.6.4.0-nocfs.zip    |  Bin 0 -> 15831 bytes
 .../lucene/index/unsupported.6.4.1-cfs.zip      |  Bin 0 -> 15848 bytes
 .../lucene/index/unsupported.6.4.1-nocfs.zip    |  Bin 0 -> 15838 bytes
 .../lucene/index/unsupported.6.4.2-cfs.zip      |  Bin 0 -> 15856 bytes
 .../lucene/index/unsupported.6.4.2-nocfs.zip    |  Bin 0 -> 15886 bytes
 .../lucene/index/unsupported.6.5.0-cfs.zip      |  Bin 0 -> 15832 bytes
 .../lucene/index/unsupported.6.5.0-nocfs.zip    |  Bin 0 -> 15836 bytes
 .../lucene/index/unsupported.6.5.1-cfs.zip      |  Bin 0 -> 15842 bytes
 .../lucene/index/unsupported.6.5.1-nocfs.zip    |  Bin 0 -> 15827 bytes
 .../lucene/index/unsupported.6.6.0-cfs.zip      |  Bin 0 -> 15875 bytes
 .../lucene/index/unsupported.6.6.0-nocfs.zip    |  Bin 0 -> 15883 bytes
 .../org/apache/lucene/index/CheckIndex.java     |   47 +-
 .../index/IndexFormatTooOldException.java       |    2 +-
 .../org/apache/lucene/index/IndexWriter.java    |    6 +-
 .../org/apache/lucene/index/SegmentInfos.java   |    2 +-
 .../search/similarities/BM25Similarity.java     |   38 +-
 .../search/similarities/SimilarityBase.java     |   25 +-
 .../search/similarities/TFIDFSimilarity.java    |   25 +-
 .../java/org/apache/lucene/util/Version.java    |  101 +-
 .../apache/lucene/index/TestSegmentInfos.java   |   14 +-
 .../search/similarities/TestBM25Similarity.java |   42 -
 .../similarities/TestClassicSimilarity.java     |   59 +-
 .../search/similarities/TestSimilarityBase.java |   39 -
 .../org/apache/lucene/util/TestVersion.java     |   71 +-
 .../java/org/apache/lucene/util/TestUtil.java   |    4 +-
 lucene/version.properties                       |    2 +-
 solr/CHANGES.txt                                |   17 +
 .../solr/schema/FieldTypePluginLoader.java      |    6 +-
 .../org/apache/solr/schema/IndexSchema.java     |    4 +-
 .../apache/solr/schema/IndexSchemaFactory.java  |    9 +-
 .../similarities/SchemaSimilarityFactory.java   |    4 +-
 .../configsets/_default/conf/solrconfig.xml     |    2 +-
 .../TestNonDefinedSimilarityFactory.java        |   10 -
 .../example-DIH/solr/atom/conf/solrconfig.xml   |    2 +-
 .../example-DIH/solr/db/conf/solrconfig.xml     |    2 +-
 .../example-DIH/solr/mail/conf/solrconfig.xml   |    2 +-
 .../example-DIH/solr/solr/conf/solrconfig.xml   |    2 +-
 .../example-DIH/solr/tika/conf/solrconfig.xml   |    2 +-
 solr/example/files/conf/solrconfig.xml          |    2 +-
 .../configsets/_default/conf/solrconfig.xml     |    2 +-
 .../conf/solrconfig.xml                         |    2 +-
 121 files changed, 179 insertions(+), 6158 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8218a5b2/lucene/CHANGES.txt
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8218a5b2/solr/CHANGES.txt
----------------------------------------------------------------------
diff --cc solr/CHANGES.txt
index fac639b,c65671a..5e1481f
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@@ -16,17 -16,25 +16,34 @@@ In this release, there is an example So
  servlet container in the directory named "example".
  See the Quick Start guide at http://lucene.apache.org/solr/quickstart.html
  
+ ==================  8.0.0 ==================
+ 
+ Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
+ 
+ Versions of Major Components
+ ---------------------
+ Apache Tika 1.13
+ Carrot2 3.15.0
+ Velocity 1.7 and Velocity Tools 2.0
+ Apache UIMA 2.3.1
+ Apache ZooKeeper 3.4.10
+ Jetty 9.3.14.v20161028
+ 
+ 
+ (No Changes)
+ 
+ 
  ==================  7.0.0 ==================
  
 +Versions of Major Components
 +---------------------
 +Apache Tika 1.13
 +Carrot2 3.15.0
 +Velocity 1.7 and Velocity Tools 2.0
 +Apache UIMA 2.3.1
 +Apache ZooKeeper 3.4.10
 +Jetty 9.3.14.v20161028
 +
  Upgrading from Solr 6.x
  ----------------------
  


[51/53] [abbrv] lucene-solr:feature/autoscaling: Add "Versions of Major Components" section

Posted by sh...@apache.org.
Add "Versions of Major Components" section


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/68a46aca
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/68a46aca
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/68a46aca

Branch: refs/heads/feature/autoscaling
Commit: 68a46acaf03dab785524e48b63dda8e90087d8ef
Parents: 157ff9a
Author: Jan Høydahl <ja...@apache.org>
Authored: Mon Jul 3 19:11:57 2017 +0200
Committer: Jan Høydahl <ja...@apache.org>
Committed: Mon Jul 3 19:14:18 2017 +0200

----------------------------------------------------------------------
 solr/CHANGES.txt | 9 +++++++++
 1 file changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/68a46aca/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 1bc960d..fac639b 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -18,6 +18,15 @@ See the Quick Start guide at http://lucene.apache.org/solr/quickstart.html
 
 ==================  7.0.0 ==================
 
+Versions of Major Components
+---------------------
+Apache Tika 1.13
+Carrot2 3.15.0
+Velocity 1.7 and Velocity Tools 2.0
+Apache UIMA 2.3.1
+Apache ZooKeeper 3.4.10
+Jetty 9.3.14.v20161028
+
 Upgrading from Solr 6.x
 ----------------------
 


[37/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-6671: Fix tests on Windows

Posted by sh...@apache.org.
SOLR-6671: Fix tests on Windows


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/8000b25c
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/8000b25c
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/8000b25c

Branch: refs/heads/feature/autoscaling
Commit: 8000b25cabef69bc31e64dee2c3ef619b77f84f7
Parents: 5b48480
Author: Jan Høydahl <ja...@apache.org>
Authored: Sun Jul 2 01:36:09 2017 +0200
Committer: Jan Høydahl <ja...@apache.org>
Committed: Sun Jul 2 01:36:09 2017 +0200

----------------------------------------------------------------------
 .../apache/solr/core/DirectoryFactoryTest.java  | 21 +++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8000b25c/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java b/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
index 35198b7..35bb09b 100755
--- a/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
@@ -20,16 +20,19 @@ import java.io.IOException;
 import java.nio.file.Paths;
 import java.util.Properties;
 
+import org.apache.commons.exec.OS;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.handler.admin.CoreAdminHandler;
 import org.apache.solr.handler.component.HttpShardHandlerFactory;
+import org.apache.solr.util.MockCoreContainer;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
 public class DirectoryFactoryTest extends LuceneTestCase {
 
+  private static boolean IS_WINDOWS = (OS.isFamilyDOS() || OS.isFamilyWin9x() || OS.isFamilyWindows());
   public void testLockTypesUnchanged() throws Exception {
     assertEquals("simple", DirectoryFactory.LOCK_TYPE_SIMPLE);
     assertEquals("native", DirectoryFactory.LOCK_TYPE_NATIVE);
@@ -55,20 +58,28 @@ public class DirectoryFactoryTest extends LuceneTestCase {
     rdf.init(new NamedList());
 
     // No solr.data.home property set. Absolute instanceDir
-    assertEquals("/tmp/inst1/data", rdf.getDataHome(new CoreDescriptor("core_name", Paths.get("/tmp/inst1"), cp, zkAware)));
+    assertDataHome("/tmp/inst1/data", "/tmp/inst1", rdf, cc);
 
     // Simulate solr.data.home set in solrconfig.xml <directoryFactory> tag
     NamedList args = new NamedList();
     args.add("solr.data.home", "/solrdata/");
     rdf.init(args);
-    assertEquals("/solrdata/inst_dir/data", rdf.getDataHome(new CoreDescriptor("core_name", Paths.get("inst_dir"), cp, zkAware)));
-
+    assertDataHome("/solrdata/inst_dir/data", "inst_dir", rdf, cc);
+    
     // solr.data.home set with System property, and relative path
     System.setProperty("solr.data.home", "solrdata");
     rdf.init(new NamedList());
-    assertEquals("/solr/home/solrdata/inst_dir/data", rdf.getDataHome(new CoreDescriptor("core_name", Paths.get("inst_dir"), cp, zkAware)));
+    assertDataHome("/solr/home/solrdata/inst_dir/data", "inst_dir", rdf, cc);
     // Test parsing last component of instanceDir, and using custom dataDir
-    assertEquals("/solr/home/solrdata/myinst/mydata", rdf.getDataHome(new CoreDescriptor("core_name", Paths.get("/path/to/myinst"), cp, zkAware, "dataDir", "mydata")));
+    assertDataHome("/solr/home/solrdata/myinst/mydata", "/path/to/myinst", rdf, cc, "dataDir", "mydata");
+  }
+
+  private void assertDataHome(String expected, String instanceDir, RAMDirectoryFactory rdf, MockCoreContainer cc, String... properties) throws IOException {
+    String dataHome = rdf.getDataHome(new CoreDescriptor("core_name", Paths.get(instanceDir), cc.containerProperties, cc.isZooKeeperAware(), properties));
+    if (IS_WINDOWS) {
+      dataHome = dataHome.replaceFirst("^C:", "").replaceAll("\\\\","/");
+    }
+    assertEquals(expected, dataHome);
   }
 
 


[33/53] [abbrv] lucene-solr:feature/autoscaling: Changes for version upgrade to 8.0 on master for the 7.0 release

Posted by sh...@apache.org.
Changes for version upgrade to 8.0 on master for the 7.0 release


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/189f2b3f
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/189f2b3f
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/189f2b3f

Branch: refs/heads/feature/autoscaling
Commit: 189f2b3f6e0dfb3c6f8e14a1a66c7bbaa4000970
Parents: 93fbfc2
Author: Anshum Gupta <an...@apple.com>
Authored: Fri Jun 30 11:18:28 2017 -0700
Committer: Anshum Gupta <an...@apple.com>
Committed: Fri Jun 30 11:18:28 2017 -0700

----------------------------------------------------------------------
 .../analysis/custom/TestCustomAnalyzer.java     |    8 +-
 .../lucene50/Lucene50SegmentInfoFormat.java     |   90 -
 .../apache/lucene/codecs/lucene50/package.html  |   25 -
 .../codecs/lucene53/Lucene53NormsFormat.java    |   91 -
 .../codecs/lucene53/Lucene53NormsProducer.java  |  236 ---
 .../lucene/codecs/lucene53/package-info.java    |   23 -
 .../lucene54/Lucene54DocValuesConsumer.java     |  797 --------
 .../lucene54/Lucene54DocValuesFormat.java       |  186 --
 .../lucene54/Lucene54DocValuesProducer.java     | 1803 ------------------
 .../lucene/codecs/lucene54/package-info.java    |  403 ----
 .../lucene50/Lucene50RWSegmentInfoFormat.java   |  125 --
 .../lucene50/TestLucene50SegmentInfoFormat.java |   50 -
 .../codecs/lucene53/Lucene53NormsConsumer.java  |  159 --
 .../codecs/lucene53/Lucene53RWNormsFormat.java  |   31 -
 .../lucene53/TestLucene53NormsFormat.java       |   44 -
 .../lucene54/TestLucene54DocValuesFormat.java   |  640 -------
 .../index/IndexFormatTooOldException.java       |    2 +-
 .../java/org/apache/lucene/util/Version.java    |   77 -
 .../org/apache/lucene/util/TestVersion.java     |   71 +-
 19 files changed, 41 insertions(+), 4820 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/analysis/common/src/test/org/apache/lucene/analysis/custom/TestCustomAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/custom/TestCustomAnalyzer.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/custom/TestCustomAnalyzer.java
index d929bfd..d9ea43c 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/custom/TestCustomAnalyzer.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/custom/TestCustomAnalyzer.java
@@ -107,7 +107,7 @@ public class TestCustomAnalyzer extends BaseTokenStreamTestCase {
 
   public void testFactoryHtmlStripClassicFolding() throws Exception {
     CustomAnalyzer a = CustomAnalyzer.builder()
-        .withDefaultMatchVersion(Version.LUCENE_6_0_0)
+        .withDefaultMatchVersion(Version.LUCENE_7_0_0)
         .addCharFilter(HTMLStripCharFilterFactory.class)
         .withTokenizer(ClassicTokenizerFactory.class)
         .addTokenFilter(ASCIIFoldingFilterFactory.class, "preserveOriginal", "true")
@@ -126,7 +126,7 @@ public class TestCustomAnalyzer extends BaseTokenStreamTestCase {
     assertSame(LowerCaseFilterFactory.class, tokenFilters.get(1).getClass());
     assertEquals(100, a.getPositionIncrementGap("dummy"));
     assertEquals(1000, a.getOffsetGap("dummy"));
-    assertSame(Version.LUCENE_6_0_0, a.getVersion());
+    assertSame(Version.LUCENE_7_0_0, a.getVersion());
 
     assertAnalyzesTo(a, "<p>foo bar</p> FOO BAR", 
         new String[] { "foo", "bar", "foo", "bar" },
@@ -139,7 +139,7 @@ public class TestCustomAnalyzer extends BaseTokenStreamTestCase {
   
   public void testHtmlStripClassicFolding() throws Exception {
     CustomAnalyzer a = CustomAnalyzer.builder()
-        .withDefaultMatchVersion(Version.LUCENE_6_0_0)
+        .withDefaultMatchVersion(Version.LUCENE_7_0_0)
         .addCharFilter("htmlstrip")
         .withTokenizer("classic")
         .addTokenFilter("asciifolding", "preserveOriginal", "true")
@@ -158,7 +158,7 @@ public class TestCustomAnalyzer extends BaseTokenStreamTestCase {
     assertSame(LowerCaseFilterFactory.class, tokenFilters.get(1).getClass());
     assertEquals(100, a.getPositionIncrementGap("dummy"));
     assertEquals(1000, a.getOffsetGap("dummy"));
-    assertSame(Version.LUCENE_6_0_0, a.getVersion());
+    assertSame(Version.LUCENE_7_0_0, a.getVersion());
 
     assertAnalyzesTo(a, "<p>foo bar</p> FOO BAR", 
         new String[] { "foo", "bar", "foo", "bar" },

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoFormat.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoFormat.java
deleted file mode 100644
index d2a384e..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/Lucene50SegmentInfoFormat.java
+++ /dev/null
@@ -1,90 +0,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.
- */
-package org.apache.lucene.codecs.lucene50;
-
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.lucene.codecs.CodecUtil;
-import org.apache.lucene.codecs.SegmentInfoFormat;
-import org.apache.lucene.index.CorruptIndexException;
-import org.apache.lucene.index.IndexFileNames;
-import org.apache.lucene.index.SegmentInfo; // javadocs
-import org.apache.lucene.store.ChecksumIndexInput;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.IOContext;
-import org.apache.lucene.util.Version;
-
-/**
- * Lucene 5.0 Segment info format.
- * @deprecated Only for reading old 5.0-6.0 segments
- */
-@Deprecated
-public class Lucene50SegmentInfoFormat extends SegmentInfoFormat {
-
-  /** Sole constructor. */
-  public Lucene50SegmentInfoFormat() {
-  }
-  
-  @Override
-  public SegmentInfo read(Directory dir, String segment, byte[] segmentID, IOContext context) throws IOException {
-    final String fileName = IndexFileNames.segmentFileName(segment, "", Lucene50SegmentInfoFormat.SI_EXTENSION);
-    try (ChecksumIndexInput input = dir.openChecksumInput(fileName, context)) {
-      Throwable priorE = null;
-      SegmentInfo si = null;
-      try {
-        CodecUtil.checkIndexHeader(input, Lucene50SegmentInfoFormat.CODEC_NAME,
-                                          Lucene50SegmentInfoFormat.VERSION_START,
-                                          Lucene50SegmentInfoFormat.VERSION_CURRENT,
-                                          segmentID, "");
-        final Version version = Version.fromBits(input.readInt(), input.readInt(), input.readInt());
-        
-        final int docCount = input.readInt();
-        if (docCount < 0) {
-          throw new CorruptIndexException("invalid docCount: " + docCount, input);
-        }
-        final boolean isCompoundFile = input.readByte() == SegmentInfo.YES;
-        
-        final Map<String,String> diagnostics = input.readMapOfStrings();
-        final Set<String> files = input.readSetOfStrings();
-        final Map<String,String> attributes = input.readMapOfStrings();
-        
-        si = new SegmentInfo(dir, version, null, segment, docCount, isCompoundFile, null, diagnostics, segmentID, attributes, null);
-        si.setFiles(files);
-      } catch (Throwable exception) {
-        priorE = exception;
-      } finally {
-        CodecUtil.checkFooter(input, priorE);
-      }
-      return si;
-    }
-  }
-
-  @Override
-  public void write(Directory dir, SegmentInfo si, IOContext ioContext) throws IOException {
-    throw new UnsupportedOperationException("this codec can only be used for reading");
-  }
-
-  /** File extension used to store {@link SegmentInfo}. */
-  public final static String SI_EXTENSION = "si";
-  static final String CODEC_NAME = "Lucene50SegmentInfo";
-  static final int VERSION_SAFE_MAPS = 1;
-  static final int VERSION_START = VERSION_SAFE_MAPS;
-  static final int VERSION_CURRENT = VERSION_SAFE_MAPS;
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/package.html
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/package.html b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/package.html
deleted file mode 100644
index 352cef4..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene50/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<!--
- 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.
--->
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
-<body>
-Lucene 5.0 file format.
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/Lucene53NormsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/Lucene53NormsFormat.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/Lucene53NormsFormat.java
deleted file mode 100644
index 1f7928f..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/Lucene53NormsFormat.java
+++ /dev/null
@@ -1,91 +0,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.
- */
-package org.apache.lucene.codecs.lucene53;
-
-
-import java.io.IOException;
-
-import org.apache.lucene.codecs.CodecUtil;
-import org.apache.lucene.codecs.NormsConsumer;
-import org.apache.lucene.codecs.NormsFormat;
-import org.apache.lucene.codecs.NormsProducer;
-import org.apache.lucene.index.SegmentReadState;
-import org.apache.lucene.index.SegmentWriteState;
-import org.apache.lucene.store.DataOutput;
-
-/**
- * Lucene 5.3 Score normalization format.
- * <p>
- * Encodes normalization values by encoding each value with the minimum
- * number of bytes needed to represent the range (which can be zero).
- * <p>
- * Files:
- * <ol>
- *   <li><tt>.nvd</tt>: Norms data</li>
- *   <li><tt>.nvm</tt>: Norms metadata</li>
- * </ol>
- * <ol>
- *   <li><a name="nvm"></a>
- *   <p>The Norms metadata or .nvm file.</p>
- *   <p>For each norms field, this stores metadata, such as the offset into the 
- *      Norms data (.nvd)</p>
- *   <p>Norms metadata (.dvm) --&gt; Header,&lt;Entry&gt;<sup>NumFields</sup>,Footer</p>
- *   <ul>
- *     <li>Header --&gt; {@link CodecUtil#writeIndexHeader IndexHeader}</li>
- *     <li>Entry --&gt; FieldNumber,BytesPerValue, Address</li>
- *     <li>FieldNumber --&gt; {@link DataOutput#writeVInt vInt}</li>
- *     <li>BytesPerValue --&gt; {@link DataOutput#writeByte byte}</li>
- *     <li>Offset --&gt; {@link DataOutput#writeLong Int64}</li>
- *     <li>Footer --&gt; {@link CodecUtil#writeFooter CodecFooter}</li>
- *   </ul>
- *   <p>FieldNumber of -1 indicates the end of metadata.</p>
- *   <p>Offset is the pointer to the start of the data in the norms data (.nvd), or the singleton value 
- *      when BytesPerValue = 0</p>
- *   <li><a name="nvd"></a>
- *   <p>The Norms data or .nvd file.</p>
- *   <p>For each Norms field, this stores the actual per-document data (the heavy-lifting)</p>
- *   <p>Norms data (.nvd) --&gt; Header,&lt; Data &gt;<sup>NumFields</sup>,Footer</p>
- *   <ul>
- *     <li>Header --&gt; {@link CodecUtil#writeIndexHeader IndexHeader}</li>
- *     <li>Data --&gt; {@link DataOutput#writeByte(byte) byte}<sup>MaxDoc * BytesPerValue</sup></li>
- *     <li>Footer --&gt; {@link CodecUtil#writeFooter CodecFooter}</li>
- *   </ul>
- * </ol>
- * @lucene.experimental
- */
-public class Lucene53NormsFormat extends NormsFormat {
-
-  /** Sole Constructor */
-  public Lucene53NormsFormat() {}
-  
-  @Override
-  public NormsConsumer normsConsumer(SegmentWriteState state) throws IOException {
-    throw new UnsupportedOperationException("This format can only be used for reading");
-  }
-
-  @Override
-  public NormsProducer normsProducer(SegmentReadState state) throws IOException {
-    return new Lucene53NormsProducer(state, DATA_CODEC, DATA_EXTENSION, METADATA_CODEC, METADATA_EXTENSION);
-  }
-  
-  static final String DATA_CODEC = "Lucene53NormsData";
-  static final String DATA_EXTENSION = "nvd";
-  static final String METADATA_CODEC = "Lucene53NormsMetadata";
-  static final String METADATA_EXTENSION = "nvm";
-  static final int VERSION_START = 0;
-  static final int VERSION_CURRENT = VERSION_START;
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/Lucene53NormsProducer.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/Lucene53NormsProducer.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/Lucene53NormsProducer.java
deleted file mode 100644
index 718fcd6..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/Lucene53NormsProducer.java
+++ /dev/null
@@ -1,236 +0,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.
- */
-package org.apache.lucene.codecs.lucene53;
-
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.lucene.codecs.CodecUtil;
-import org.apache.lucene.codecs.NormsProducer;
-import org.apache.lucene.index.CorruptIndexException;
-import org.apache.lucene.index.FieldInfo;
-import org.apache.lucene.index.FieldInfos;
-import org.apache.lucene.index.IndexFileNames;
-import org.apache.lucene.index.NumericDocValues;
-import org.apache.lucene.index.SegmentReadState;
-import org.apache.lucene.store.ChecksumIndexInput;
-import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.store.RandomAccessInput;
-import org.apache.lucene.util.IOUtils;
-
-import static org.apache.lucene.codecs.lucene53.Lucene53NormsFormat.VERSION_CURRENT;
-import static org.apache.lucene.codecs.lucene53.Lucene53NormsFormat.VERSION_START;
-
-/**
- * Reader for {@link Lucene53NormsFormat}
- */
-class Lucene53NormsProducer extends NormsProducer {
-  // metadata maps (just file pointers and minimal stuff)
-  private final Map<Integer,NormsEntry> norms = new HashMap<>();
-  private final IndexInput data;
-  private final int maxDoc;
-
-  Lucene53NormsProducer(SegmentReadState state, String dataCodec, String dataExtension, String metaCodec, String metaExtension) throws IOException {
-    maxDoc = state.segmentInfo.maxDoc();
-    String metaName = IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, metaExtension);
-    int version = -1;
-
-    // read in the entries from the metadata file.
-    try (ChecksumIndexInput in = state.directory.openChecksumInput(metaName, state.context)) {
-      Throwable priorE = null;
-      try {
-        version = CodecUtil.checkIndexHeader(in, metaCodec, VERSION_START, VERSION_CURRENT, state.segmentInfo.getId(), state.segmentSuffix);
-        readFields(in, state.fieldInfos);
-      } catch (Throwable exception) {
-        priorE = exception;
-      } finally {
-        CodecUtil.checkFooter(in, priorE);
-      }
-    }
-
-    String dataName = IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, dataExtension);
-    data = state.directory.openInput(dataName, state.context);
-    boolean success = false;
-    try {
-      final int version2 = CodecUtil.checkIndexHeader(data, dataCodec, VERSION_START, VERSION_CURRENT, state.segmentInfo.getId(), state.segmentSuffix);
-      if (version != version2) {
-        throw new CorruptIndexException("Format versions mismatch: meta=" + version + ",data=" + version2, data);
-      }
-
-      // NOTE: data file is too costly to verify checksum against all the bytes on open,
-      // but for now we at least verify proper structure of the checksum footer: which looks
-      // for FOOTER_MAGIC + algorithmID. This is cheap and can detect some forms of corruption
-      // such as file truncation.
-      CodecUtil.retrieveChecksum(data);
-
-      success = true;
-    } finally {
-      if (!success) {
-        IOUtils.closeWhileHandlingException(this.data);
-      }
-    }
-  }
-
-  private void readFields(IndexInput meta, FieldInfos infos) throws IOException {
-    int fieldNumber = meta.readVInt();
-    while (fieldNumber != -1) {
-      FieldInfo info = infos.fieldInfo(fieldNumber);
-      if (info == null) {
-        throw new CorruptIndexException("Invalid field number: " + fieldNumber, meta);
-      } else if (!info.hasNorms()) {
-        throw new CorruptIndexException("Invalid field: " + info.name, meta);
-      }
-      NormsEntry entry = new NormsEntry();
-      entry.bytesPerValue = meta.readByte();
-      switch (entry.bytesPerValue) {
-        case 0: case 1: case 2: case 4: case 8:
-          break;
-        default:
-          throw new CorruptIndexException("Invalid bytesPerValue: " + entry.bytesPerValue + ", field: " + info.name, meta);
-      }
-      entry.offset = meta.readLong();
-      norms.put(info.number, entry);
-      fieldNumber = meta.readVInt();
-    }
-  }
-
-  @Override
-  public NumericDocValues getNorms(FieldInfo field) throws IOException {
-    final NormsEntry entry = norms.get(field.number);
-
-    if (entry.bytesPerValue == 0) {
-      final long value = entry.offset;
-      return new NormsIterator(maxDoc) {
-          @Override
-          public long longValue() {
-            return value;
-          }
-        };
-    } else {
-      RandomAccessInput slice;
-      synchronized (data) {
-        switch (entry.bytesPerValue) {
-        case 1: 
-          slice = data.randomAccessSlice(entry.offset, maxDoc);
-          return new NormsIterator(maxDoc) {
-            @Override
-            public long longValue() throws IOException {
-              return slice.readByte(docID);
-            }
-          };
-        case 2: 
-          slice = data.randomAccessSlice(entry.offset, maxDoc * 2L);
-          return new NormsIterator(maxDoc) {
-            @Override
-            public long longValue() throws IOException {
-              return slice.readShort(((long)docID) << 1L);
-            }
-          };
-        case 4: 
-          slice = data.randomAccessSlice(entry.offset, maxDoc * 4L);
-          return new NormsIterator(maxDoc) {
-            @Override
-            public long longValue() throws IOException {
-              return slice.readInt(((long)docID) << 2L);
-            }
-          };
-        case 8: 
-          slice = data.randomAccessSlice(entry.offset, maxDoc * 8L);
-          return new NormsIterator(maxDoc) {
-            @Override
-            public long longValue() throws IOException {
-              return slice.readLong(((long)docID) << 3L);
-            }
-          };
-        default:
-          throw new AssertionError();
-        }
-      }
-    }
-  }
-
-  @Override
-  public void close() throws IOException {
-    data.close();
-  }
-
-  @Override
-  public long ramBytesUsed() {
-    return 64L * norms.size(); // good enough
-  }
-
-  @Override
-  public void checkIntegrity() throws IOException {
-    CodecUtil.checksumEntireFile(data);
-  }
-
-  static class NormsEntry {
-    byte bytesPerValue;
-    long offset;
-  }
-
-  @Override
-  public String toString() {
-    return getClass().getSimpleName() + "(fields=" + norms.size() + ")";
-  }
-
-  private static abstract class NormsIterator extends NumericDocValues {
-    private final int maxDoc;
-    protected int docID = -1;
-  
-    public NormsIterator(int maxDoc) {
-      this.maxDoc = maxDoc;
-    }
-
-    @Override
-    public int docID() {
-      return docID;
-    }
-
-    @Override
-    public int nextDoc() {
-      docID++;
-      if (docID == maxDoc) {
-        docID = NO_MORE_DOCS;
-      }
-      return docID;
-    }
-
-    @Override
-    public int advance(int target) {
-      docID = target;
-      if (docID >= maxDoc) {
-        docID = NO_MORE_DOCS;
-      }
-      return docID;
-    }
-
-    @Override
-    public boolean advanceExact(int target) throws IOException {
-      docID = target;
-      return true;
-    }
-
-    @Override
-    public long cost() {
-      // TODO
-      return 0;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/package-info.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/package-info.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/package-info.java
deleted file mode 100644
index 93fefb8..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene53/package-info.java
+++ /dev/null
@@ -1,23 +0,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.
- */
-
-/**
- * Components from the Lucene 5.3 index format
- * See {@link org.apache.lucene.codecs.lucene53} for an overview
- * of the index format.
- */
-package org.apache.lucene.codecs.lucene53;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesConsumer.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesConsumer.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesConsumer.java
deleted file mode 100644
index 217cd43..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesConsumer.java
+++ /dev/null
@@ -1,797 +0,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.
- */
-package org.apache.lucene.codecs.lucene54;
-
-
-import java.io.Closeable; // javadocs
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.stream.StreamSupport;
-
-import org.apache.lucene.codecs.CodecUtil;
-import org.apache.lucene.codecs.DocValuesConsumer;
-import org.apache.lucene.codecs.DocValuesProducer;
-import org.apache.lucene.codecs.LegacyDocValuesIterables;
-import org.apache.lucene.index.FieldInfo;
-import org.apache.lucene.index.IndexFileNames;
-import org.apache.lucene.index.SegmentWriteState;
-import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.store.RAMOutputStream;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.BytesRefBuilder;
-import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.LongsRef;
-import org.apache.lucene.util.MathUtil;
-import org.apache.lucene.util.PagedBytes.PagedBytesDataInput;
-import org.apache.lucene.util.PagedBytes;
-import org.apache.lucene.util.StringHelper;
-import org.apache.lucene.util.packed.DirectMonotonicWriter;
-import org.apache.lucene.util.packed.DirectWriter;
-import org.apache.lucene.util.packed.MonotonicBlockPackedWriter;
-import org.apache.lucene.util.packed.PackedInts;
-
-import static org.apache.lucene.codecs.lucene54.Lucene54DocValuesFormat.*;
-
-/** writer for {@link Lucene54DocValuesFormat} */
-final class Lucene54DocValuesConsumer extends DocValuesConsumer implements Closeable {
-
-  enum NumberType {
-    /** Dense ordinals */
-    ORDINAL,
-    /** Random long values */
-    VALUE;
-  }
-
-  IndexOutput data, meta;
-  final int maxDoc;
-  
-  /** expert: Creates a new writer */
-  public Lucene54DocValuesConsumer(SegmentWriteState state, String dataCodec, String dataExtension, String metaCodec, String metaExtension) throws IOException {
-    boolean success = false;
-    try {
-      String dataName = IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, dataExtension);
-      data = state.directory.createOutput(dataName, state.context);
-      CodecUtil.writeIndexHeader(data, dataCodec, Lucene54DocValuesFormat.VERSION_CURRENT, state.segmentInfo.getId(), state.segmentSuffix);
-      String metaName = IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, metaExtension);
-      meta = state.directory.createOutput(metaName, state.context);
-      CodecUtil.writeIndexHeader(meta, metaCodec, Lucene54DocValuesFormat.VERSION_CURRENT, state.segmentInfo.getId(), state.segmentSuffix);
-      maxDoc = state.segmentInfo.maxDoc();
-      success = true;
-    } finally {
-      if (!success) {
-        IOUtils.closeWhileHandlingException(this);
-      }
-    }
-  }
-  
-  @Override
-  public void addNumericField(FieldInfo field, DocValuesProducer valuesProducer) throws IOException {
-    addNumericField(field, LegacyDocValuesIterables.numericIterable(field, valuesProducer, maxDoc), NumberType.VALUE);
-  }
-
-  void addNumericField(FieldInfo field, Iterable<Number> values, NumberType numberType) throws IOException {
-    long count = 0;
-    long minValue = Long.MAX_VALUE;
-    long maxValue = Long.MIN_VALUE;
-    long gcd = 0;
-    long missingCount = 0;
-    long zeroCount = 0;
-    // TODO: more efficient?
-    HashSet<Long> uniqueValues = null;
-    long missingOrdCount = 0;
-    if (numberType == NumberType.VALUE) {
-      uniqueValues = new HashSet<>();
-
-      for (Number nv : values) {
-        final long v;
-        if (nv == null) {
-          v = 0;
-          missingCount++;
-          zeroCount++;
-        } else {
-          v = nv.longValue();
-          if (v == 0) {
-            zeroCount++;
-          }
-        }
-
-        if (gcd != 1) {
-          if (v < Long.MIN_VALUE / 2 || v > Long.MAX_VALUE / 2) {
-            // in that case v - minValue might overflow and make the GCD computation return
-            // wrong results. Since these extreme values are unlikely, we just discard
-            // GCD computation for them
-            gcd = 1;
-          } else if (count != 0) { // minValue needs to be set first
-            gcd = MathUtil.gcd(gcd, v - minValue);
-          }
-        }
-
-        minValue = Math.min(minValue, v);
-        maxValue = Math.max(maxValue, v);
-
-        if (uniqueValues != null) {
-          if (uniqueValues.add(v)) {
-            if (uniqueValues.size() > 256) {
-              uniqueValues = null;
-            }
-          }
-        }
-
-        ++count;
-      }
-    } else {
-      for (Number nv : values) {
-        long v = nv.longValue();
-        if (v == -1L) {
-          missingOrdCount++;
-        }
-        minValue = Math.min(minValue, v);
-        maxValue = Math.max(maxValue, v);
-        ++count;
-      }
-    }
-    
-    final long delta = maxValue - minValue;
-    final int deltaBitsRequired = DirectWriter.unsignedBitsRequired(delta);
-    final int tableBitsRequired = uniqueValues == null
-        ? Integer.MAX_VALUE
-        : DirectWriter.bitsRequired(uniqueValues.size() - 1);
-
-    final boolean sparse; // 1% of docs or less have a value
-    switch (numberType) {
-      case VALUE:
-        sparse = (double) missingCount / count >= 0.99;
-        break;
-      case ORDINAL:
-        sparse = (double) missingOrdCount / count >= 0.99;
-        break;
-      default:
-        throw new AssertionError();
-    }
-
-    final int format;
-    if (uniqueValues != null 
-        && count <= Integer.MAX_VALUE
-        && (uniqueValues.size() == 1
-           || (uniqueValues.size() == 2 && missingCount > 0 && zeroCount == missingCount))) {
-      // either one unique value C or two unique values: "missing" and C
-      format = CONST_COMPRESSED;
-    } else if (sparse && count >= 1024) {
-      // require at least 1024 docs to avoid flipping back and forth when doing NRT search
-      format = SPARSE_COMPRESSED;
-    } else if (uniqueValues != null && tableBitsRequired < deltaBitsRequired) {
-      format = TABLE_COMPRESSED;
-    } else if (gcd != 0 && gcd != 1) {
-      final long gcdDelta = (maxValue - minValue) / gcd;
-      final long gcdBitsRequired = DirectWriter.unsignedBitsRequired(gcdDelta);
-      format = gcdBitsRequired < deltaBitsRequired ? GCD_COMPRESSED : DELTA_COMPRESSED;
-    } else {
-      format = DELTA_COMPRESSED;
-    }
-    meta.writeVInt(field.number);
-    meta.writeByte(Lucene54DocValuesFormat.NUMERIC);
-    meta.writeVInt(format);
-    if (format == SPARSE_COMPRESSED) {
-      meta.writeLong(data.getFilePointer());
-      final long numDocsWithValue;
-      switch (numberType) {
-        case VALUE:
-          numDocsWithValue = count - missingCount;
-          break;
-        case ORDINAL:
-          numDocsWithValue = count - missingOrdCount;
-          break;
-        default:
-          throw new AssertionError();
-      }
-      final long maxDoc = writeSparseMissingBitset(values, numberType, numDocsWithValue);
-      assert maxDoc == count;
-    } else if (missingCount == 0) {
-      meta.writeLong(ALL_LIVE);
-    } else if (missingCount == count) {
-      meta.writeLong(ALL_MISSING);
-    } else {
-      meta.writeLong(data.getFilePointer());
-      writeMissingBitset(values);
-    }
-    meta.writeLong(data.getFilePointer());
-    meta.writeVLong(count);
-
-    switch (format) {
-      case CONST_COMPRESSED:
-        // write the constant (nonzero value in the n=2 case, singleton value otherwise)
-        meta.writeLong(minValue < 0 ? Collections.min(uniqueValues) : Collections.max(uniqueValues));
-        break;
-      case GCD_COMPRESSED:
-        meta.writeLong(minValue);
-        meta.writeLong(gcd);
-        final long maxDelta = (maxValue - minValue) / gcd;
-        final int bits = DirectWriter.unsignedBitsRequired(maxDelta);
-        meta.writeVInt(bits);
-        final DirectWriter quotientWriter = DirectWriter.getInstance(data, count, bits);
-        for (Number nv : values) {
-          long value = nv == null ? 0 : nv.longValue();
-          quotientWriter.add((value - minValue) / gcd);
-        }
-        quotientWriter.finish();
-        break;
-      case DELTA_COMPRESSED:
-        final long minDelta = delta < 0 ? 0 : minValue;
-        meta.writeLong(minDelta);
-        meta.writeVInt(deltaBitsRequired);
-        final DirectWriter writer = DirectWriter.getInstance(data, count, deltaBitsRequired);
-        for (Number nv : values) {
-          long v = nv == null ? 0 : nv.longValue();
-          writer.add(v - minDelta);
-        }
-        writer.finish();
-        break;
-      case TABLE_COMPRESSED:
-        final Long[] decode = uniqueValues.toArray(new Long[uniqueValues.size()]);
-        Arrays.sort(decode);
-        final HashMap<Long,Integer> encode = new HashMap<>();
-        meta.writeVInt(decode.length);
-        for (int i = 0; i < decode.length; i++) {
-          meta.writeLong(decode[i]);
-          encode.put(decode[i], i);
-        }
-        meta.writeVInt(tableBitsRequired);
-        final DirectWriter ordsWriter = DirectWriter.getInstance(data, count, tableBitsRequired);
-        for (Number nv : values) {
-          ordsWriter.add(encode.get(nv == null ? 0 : nv.longValue()));
-        }
-        ordsWriter.finish();
-        break;
-      case SPARSE_COMPRESSED:
-        final Iterable<Number> filteredMissingValues;
-        switch (numberType) {
-          case VALUE:
-            meta.writeByte((byte) 0);
-            filteredMissingValues = new Iterable<Number>() {
-              @Override
-              public Iterator<Number> iterator() {
-                return StreamSupport
-                    .stream(values.spliterator(), false)
-                    .filter(value -> value != null)
-                    .iterator();
-              }
-            };
-            break;
-          case ORDINAL:
-            meta.writeByte((byte) 1);
-            filteredMissingValues = new Iterable<Number>() {
-              @Override
-              public Iterator<Number> iterator() {
-                return StreamSupport
-                    .stream(values.spliterator(), false)
-                    .filter(value -> value.longValue() != -1L)
-                    .iterator();
-              }
-            };
-            break;
-          default:
-            throw new AssertionError();
-        }
-        // Write non-missing values as a numeric field
-        addNumericField(field, filteredMissingValues, numberType);
-        break;
-      default:
-        throw new AssertionError();
-    }
-    meta.writeLong(data.getFilePointer());
-  }
-  
-  // TODO: in some cases representing missing with minValue-1 wouldn't take up additional space and so on,
-  // but this is very simple, and algorithms only check this for values of 0 anyway (doesnt slow down normal decode)
-  void writeMissingBitset(Iterable<?> values) throws IOException {
-    byte bits = 0;
-    int count = 0;
-    for (Object v : values) {
-      if (count == 8) {
-        data.writeByte(bits);
-        count = 0;
-        bits = 0;
-      }
-      if (v != null) {
-        bits |= 1 << (count & 7);
-      }
-      count++;
-    }
-    if (count > 0) {
-      data.writeByte(bits);
-    }
-  }
-
-  long writeSparseMissingBitset(Iterable<Number> values, NumberType numberType, long numDocsWithValue) throws IOException {
-    meta.writeVLong(numDocsWithValue);
-
-    // Write doc IDs that have a value
-    meta.writeVInt(DIRECT_MONOTONIC_BLOCK_SHIFT);
-    final DirectMonotonicWriter docIdsWriter = DirectMonotonicWriter.getInstance(meta, data, numDocsWithValue, DIRECT_MONOTONIC_BLOCK_SHIFT);
-    long docID = 0;
-    for (Number nv : values) {
-      switch (numberType) {
-        case VALUE:
-          if (nv != null) {
-            docIdsWriter.add(docID);
-          }
-          break;
-        case ORDINAL:
-          if (nv.longValue() != -1L) {
-            docIdsWriter.add(docID);
-          }
-          break;
-        default:
-          throw new AssertionError();
-      }
-      docID++;
-    }
-    docIdsWriter.finish();
-    return docID;
-  }
-
-  @Override
-  public void addBinaryField(FieldInfo field, DocValuesProducer valuesProducer) throws IOException {
-    addBinaryField(field, LegacyDocValuesIterables.binaryIterable(field, valuesProducer, maxDoc));
-  }
-  
-  private void addBinaryField(FieldInfo field, Iterable<BytesRef> values) throws IOException {
-    // write the byte[] data
-    meta.writeVInt(field.number);
-    meta.writeByte(Lucene54DocValuesFormat.BINARY);
-    int minLength = Integer.MAX_VALUE;
-    int maxLength = Integer.MIN_VALUE;
-    final long startFP = data.getFilePointer();
-    long count = 0;
-    long missingCount = 0;
-    for(BytesRef v : values) {
-      final int length;
-      if (v == null) {
-        length = 0;
-        missingCount++;
-      } else {
-        length = v.length;
-      }
-      minLength = Math.min(minLength, length);
-      maxLength = Math.max(maxLength, length);
-      if (v != null) {
-        data.writeBytes(v.bytes, v.offset, v.length);
-      }
-      count++;
-    }
-    meta.writeVInt(minLength == maxLength ? BINARY_FIXED_UNCOMPRESSED : BINARY_VARIABLE_UNCOMPRESSED);
-    if (missingCount == 0) {
-      meta.writeLong(ALL_LIVE);
-    } else if (missingCount == count) {
-      meta.writeLong(ALL_MISSING);
-    } else {
-      meta.writeLong(data.getFilePointer());
-      writeMissingBitset(values);
-    }
-    meta.writeVInt(minLength);
-    meta.writeVInt(maxLength);
-    meta.writeVLong(count);
-    meta.writeLong(startFP);
-    
-    // if minLength == maxLength, it's a fixed-length byte[], we are done (the addresses are implicit)
-    // otherwise, we need to record the length fields...
-    if (minLength != maxLength) {
-      meta.writeLong(data.getFilePointer());
-      meta.writeVInt(DIRECT_MONOTONIC_BLOCK_SHIFT);
-
-      final DirectMonotonicWriter writer = DirectMonotonicWriter.getInstance(meta, data, count + 1, DIRECT_MONOTONIC_BLOCK_SHIFT);
-      long addr = 0;
-      writer.add(addr);
-      for (BytesRef v : values) {
-        if (v != null) {
-          addr += v.length;
-        }
-        writer.add(addr);
-      }
-      writer.finish();
-      meta.writeLong(data.getFilePointer());
-    }
-  }
-  
-  /** expert: writes a value dictionary for a sorted/sortedset field */
-  private void addTermsDict(FieldInfo field, final Iterable<BytesRef> values) throws IOException {
-    // first check if it's a "fixed-length" terms dict, and compressibility if so
-    int minLength = Integer.MAX_VALUE;
-    int maxLength = Integer.MIN_VALUE;
-    long numValues = 0;
-    BytesRefBuilder previousValue = new BytesRefBuilder();
-    long prefixSum = 0; // only valid for fixed-width data, as we have a choice there
-    for (BytesRef v : values) {
-      minLength = Math.min(minLength, v.length);
-      maxLength = Math.max(maxLength, v.length);
-      if (minLength == maxLength) {
-        int termPosition = (int) (numValues & INTERVAL_MASK);
-        if (termPosition == 0) {
-          // first term in block, save it away to compare against the last term later
-          previousValue.copyBytes(v);
-        } else if (termPosition == INTERVAL_COUNT - 1) {
-          // last term in block, accumulate shared prefix against first term
-          prefixSum += StringHelper.bytesDifference(previousValue.get(), v);
-        }
-      }
-      numValues++;
-    }
-    // for fixed width data, look at the avg(shared prefix) before deciding how to encode:
-    // prefix compression "costs" worst case 2 bytes per term because we must store suffix lengths.
-    // so if we share at least 3 bytes on average, always compress.
-    if (minLength == maxLength && prefixSum <= 3*(numValues >> INTERVAL_SHIFT)) {
-      // no index needed: not very compressible, direct addressing by mult
-      addBinaryField(field, values);
-    } else if (numValues < REVERSE_INTERVAL_COUNT) {
-      // low cardinality: waste a few KB of ram, but can't really use fancy index etc
-      addBinaryField(field, values);
-    } else {
-      assert numValues > 0; // we don't have to handle the empty case
-      // header
-      meta.writeVInt(field.number);
-      meta.writeByte(Lucene54DocValuesFormat.BINARY);
-      meta.writeVInt(BINARY_PREFIX_COMPRESSED);
-      meta.writeLong(-1L);
-      // now write the bytes: sharing prefixes within a block
-      final long startFP = data.getFilePointer();
-      // currently, we have to store the delta from expected for every 1/nth term
-      // we could avoid this, but it's not much and less overall RAM than the previous approach!
-      RAMOutputStream addressBuffer = new RAMOutputStream();
-      MonotonicBlockPackedWriter termAddresses = new MonotonicBlockPackedWriter(addressBuffer, MONOTONIC_BLOCK_SIZE);
-      // buffers up 16 terms
-      RAMOutputStream bytesBuffer = new RAMOutputStream();
-      // buffers up block header
-      RAMOutputStream headerBuffer = new RAMOutputStream();
-      BytesRefBuilder lastTerm = new BytesRefBuilder();
-      lastTerm.grow(maxLength);
-      long count = 0;
-      int suffixDeltas[] = new int[INTERVAL_COUNT];
-      for (BytesRef v : values) {
-        int termPosition = (int) (count & INTERVAL_MASK);
-        if (termPosition == 0) {
-          termAddresses.add(data.getFilePointer() - startFP);
-          // abs-encode first term
-          headerBuffer.writeVInt(v.length);
-          headerBuffer.writeBytes(v.bytes, v.offset, v.length);
-          lastTerm.copyBytes(v);
-        } else {
-          // prefix-code: we only share at most 255 characters, to encode the length as a single
-          // byte and have random access. Larger terms just get less compression.
-          int sharedPrefix = Math.min(255, StringHelper.bytesDifference(lastTerm.get(), v));
-          bytesBuffer.writeByte((byte) sharedPrefix);
-          bytesBuffer.writeBytes(v.bytes, v.offset + sharedPrefix, v.length - sharedPrefix);
-          // we can encode one smaller, because terms are unique.
-          suffixDeltas[termPosition] = v.length - sharedPrefix - 1;
-        }
-        
-        count++;
-        // flush block
-        if ((count & INTERVAL_MASK) == 0) {
-          flushTermsDictBlock(headerBuffer, bytesBuffer, suffixDeltas);
-        }
-      }
-      // flush trailing crap
-      int leftover = (int) (count & INTERVAL_MASK);
-      if (leftover > 0) {
-        Arrays.fill(suffixDeltas, leftover, suffixDeltas.length, 0);
-        flushTermsDictBlock(headerBuffer, bytesBuffer, suffixDeltas);
-      }
-      final long indexStartFP = data.getFilePointer();
-      // write addresses of indexed terms
-      termAddresses.finish();
-      addressBuffer.writeTo(data);
-      addressBuffer = null;
-      termAddresses = null;
-      meta.writeVInt(minLength);
-      meta.writeVInt(maxLength);
-      meta.writeVLong(count);
-      meta.writeLong(startFP);
-      meta.writeLong(indexStartFP);
-      meta.writeVInt(PackedInts.VERSION_CURRENT);
-      meta.writeVInt(MONOTONIC_BLOCK_SIZE);
-      addReverseTermIndex(field, values, maxLength);
-    }
-  }
-  // writes term dictionary "block"
-  // first term is absolute encoded as vint length + bytes.
-  // lengths of subsequent N terms are encoded as either N bytes or N shorts.
-  // in the double-byte case, the first byte is indicated with -1.
-  // subsequent terms are encoded as byte suffixLength + bytes.
-  private void flushTermsDictBlock(RAMOutputStream headerBuffer, RAMOutputStream bytesBuffer, int suffixDeltas[]) throws IOException {
-    boolean twoByte = false;
-    for (int i = 1; i < suffixDeltas.length; i++) {
-      if (suffixDeltas[i] > 254) {
-        twoByte = true;
-      }
-    }
-    if (twoByte) {
-      headerBuffer.writeByte((byte)255);
-      for (int i = 1; i < suffixDeltas.length; i++) {
-        headerBuffer.writeShort((short) suffixDeltas[i]);
-      }
-    } else {
-      for (int i = 1; i < suffixDeltas.length; i++) {
-        headerBuffer.writeByte((byte) suffixDeltas[i]);
-      }
-    }
-    headerBuffer.writeTo(data);
-    headerBuffer.reset();
-    bytesBuffer.writeTo(data);
-    bytesBuffer.reset();
-  }
-  
-  // writes reverse term index: used for binary searching a term into a range of 64 blocks
-  // for every 64 blocks (1024 terms) we store a term, trimming any suffix unnecessary for comparison
-  // terms are written as a contiguous byte[], but never spanning 2^15 byte boundaries.
-  private void addReverseTermIndex(FieldInfo field, final Iterable<BytesRef> values, int maxLength) throws IOException {
-    long count = 0;
-    BytesRefBuilder priorTerm = new BytesRefBuilder();
-    priorTerm.grow(maxLength);
-    BytesRef indexTerm = new BytesRef();
-    long startFP = data.getFilePointer();
-    PagedBytes pagedBytes = new PagedBytes(15);
-    MonotonicBlockPackedWriter addresses = new MonotonicBlockPackedWriter(data, MONOTONIC_BLOCK_SIZE);
-    
-    for (BytesRef b : values) {
-      int termPosition = (int) (count & REVERSE_INTERVAL_MASK);
-      if (termPosition == 0) {
-        int len = StringHelper.sortKeyLength(priorTerm.get(), b);
-        indexTerm.bytes = b.bytes;
-        indexTerm.offset = b.offset;
-        indexTerm.length = len;
-        addresses.add(pagedBytes.copyUsingLengthPrefix(indexTerm));
-      } else if (termPosition == REVERSE_INTERVAL_MASK) {
-        priorTerm.copyBytes(b);
-      }
-      count++;
-    }
-    addresses.finish();
-    long numBytes = pagedBytes.getPointer();
-    pagedBytes.freeze(true);
-    PagedBytesDataInput in = pagedBytes.getDataInput();
-    meta.writeLong(startFP);
-    data.writeVLong(numBytes);
-    data.copyBytes(in, numBytes);
-  }
-
-  @Override
-  public void addSortedField(FieldInfo field, DocValuesProducer valuesProducer) throws IOException {
-    meta.writeVInt(field.number);
-    meta.writeByte(Lucene54DocValuesFormat.SORTED);
-    addTermsDict(field, LegacyDocValuesIterables.valuesIterable(valuesProducer.getSorted(field)));
-    addNumericField(field, LegacyDocValuesIterables.sortedOrdIterable(valuesProducer, field, maxDoc), NumberType.ORDINAL);
-  }
-
-  private void addSortedField(FieldInfo field, Iterable<BytesRef> values, Iterable<Number> ords) throws IOException {
-    meta.writeVInt(field.number);
-    meta.writeByte(Lucene54DocValuesFormat.SORTED);
-    addTermsDict(field, values);
-    addNumericField(field, ords, NumberType.ORDINAL);
-  }
-
-  @Override
-  public void addSortedNumericField(FieldInfo field, final DocValuesProducer valuesProducer) throws IOException {
-
-    final Iterable<Number> docToValueCount = LegacyDocValuesIterables.sortedNumericToDocCount(valuesProducer, field, maxDoc);
-    final Iterable<Number> values = LegacyDocValuesIterables.sortedNumericToValues(valuesProducer, field);
-    
-    meta.writeVInt(field.number);
-    meta.writeByte(Lucene54DocValuesFormat.SORTED_NUMERIC);
-    if (isSingleValued(docToValueCount)) {
-      meta.writeVInt(SORTED_SINGLE_VALUED);
-      // The field is single-valued, we can encode it as NUMERIC
-      addNumericField(field, singletonView(docToValueCount, values, null), NumberType.VALUE);
-    } else {
-      final SortedSet<LongsRef> uniqueValueSets = uniqueValueSets(docToValueCount, values);
-      if (uniqueValueSets != null) {
-        meta.writeVInt(SORTED_SET_TABLE);
-
-        // write the set_id -> values mapping
-        writeDictionary(uniqueValueSets);
-
-        // write the doc -> set_id as a numeric field
-        addNumericField(field, docToSetId(uniqueValueSets, docToValueCount, values), NumberType.ORDINAL);
-      } else {
-        meta.writeVInt(SORTED_WITH_ADDRESSES);
-        // write the stream of values as a numeric field
-        addNumericField(field, values, NumberType.VALUE);
-        // write the doc -> ord count as a absolute index to the stream
-        addOrdIndex(field, docToValueCount);
-      }
-    }
-  }
-
-  @Override
-  public void addSortedSetField(FieldInfo field, DocValuesProducer valuesProducer) throws IOException {
-
-    Iterable<BytesRef> values = LegacyDocValuesIterables.valuesIterable(valuesProducer.getSortedSet(field));
-    Iterable<Number> docToOrdCount = LegacyDocValuesIterables.sortedSetOrdCountIterable(valuesProducer, field, maxDoc);
-    Iterable<Number> ords = LegacyDocValuesIterables.sortedSetOrdsIterable(valuesProducer, field);
-
-    meta.writeVInt(field.number);
-    meta.writeByte(Lucene54DocValuesFormat.SORTED_SET);
-
-    if (isSingleValued(docToOrdCount)) {
-      meta.writeVInt(SORTED_SINGLE_VALUED);
-      // The field is single-valued, we can encode it as SORTED
-      addSortedField(field, values, singletonView(docToOrdCount, ords, -1L));
-    } else {
-      final SortedSet<LongsRef> uniqueValueSets = uniqueValueSets(docToOrdCount, ords);
-      if (uniqueValueSets != null) {
-        meta.writeVInt(SORTED_SET_TABLE);
-
-        // write the set_id -> ords mapping
-        writeDictionary(uniqueValueSets);
-
-        // write the ord -> byte[] as a binary field
-        addTermsDict(field, values);
-
-        // write the doc -> set_id as a numeric field
-        addNumericField(field, docToSetId(uniqueValueSets, docToOrdCount, ords), NumberType.ORDINAL);
-      } else {
-        meta.writeVInt(SORTED_WITH_ADDRESSES);
-
-        // write the ord -> byte[] as a binary field
-        addTermsDict(field, values);
-
-        // write the stream of ords as a numeric field
-        // NOTE: we could return an iterator that delta-encodes these within a doc
-        addNumericField(field, ords, NumberType.ORDINAL);
-
-        // write the doc -> ord count as a absolute index to the stream
-        addOrdIndex(field, docToOrdCount);
-      }
-    }
-  }
-
-  private SortedSet<LongsRef> uniqueValueSets(Iterable<Number> docToValueCount, Iterable<Number> values) {
-    Set<LongsRef> uniqueValueSet = new HashSet<>();
-    LongsRef docValues = new LongsRef(256);
-
-    Iterator<Number> valueCountIterator = docToValueCount.iterator();
-    Iterator<Number> valueIterator = values.iterator();
-    int totalDictSize = 0;
-    while (valueCountIterator.hasNext()) {
-      docValues.length = valueCountIterator.next().intValue();
-      if (docValues.length > 256) {
-        return null;
-      }
-      for (int i = 0; i < docValues.length; ++i) {
-        docValues.longs[i] = valueIterator.next().longValue();
-      }
-      if (uniqueValueSet.contains(docValues)) {
-        continue;
-      }
-      totalDictSize += docValues.length;
-      if (totalDictSize > 256) {
-        return null;
-      }
-      uniqueValueSet.add(new LongsRef(Arrays.copyOf(docValues.longs, docValues.length), 0, docValues.length));
-    }
-    assert valueIterator.hasNext() == false;
-    return new TreeSet<>(uniqueValueSet);
-  }
-
-  private void writeDictionary(SortedSet<LongsRef> uniqueValueSets) throws IOException {
-    int lengthSum = 0;
-    for (LongsRef longs : uniqueValueSets) {
-      lengthSum += longs.length;
-    }
-
-    meta.writeInt(lengthSum);
-    for (LongsRef valueSet : uniqueValueSets) {
-      for (int  i = 0; i < valueSet.length; ++i) {
-        meta.writeLong(valueSet.longs[valueSet.offset + i]);
-      }
-    }
-
-    meta.writeInt(uniqueValueSets.size());
-    for (LongsRef valueSet : uniqueValueSets) {
-      meta.writeInt(valueSet.length);
-    }
-  }
-
-  private Iterable<Number> docToSetId(SortedSet<LongsRef> uniqueValueSets, Iterable<Number> docToValueCount, Iterable<Number> values) {
-    final Map<LongsRef, Integer> setIds = new HashMap<>();
-    int i = 0;
-    for (LongsRef set : uniqueValueSets) {
-      setIds.put(set, i++);
-    }
-    assert i == uniqueValueSets.size();
-
-    return new Iterable<Number>() {
-
-      @Override
-      public Iterator<Number> iterator() {
-        final Iterator<Number> valueCountIterator = docToValueCount.iterator();
-        final Iterator<Number> valueIterator = values.iterator();
-        final LongsRef docValues = new LongsRef(256);
-        return new Iterator<Number>() {
-
-          @Override
-          public boolean hasNext() {
-            return valueCountIterator.hasNext();
-          }
-
-          @Override
-          public Number next() {
-            docValues.length = valueCountIterator.next().intValue();
-            for (int i = 0; i < docValues.length; ++i) {
-              docValues.longs[i] = valueIterator.next().longValue();
-            }
-            final Integer id = setIds.get(docValues);
-            assert id != null;
-            return id;
-          }
-
-        };
-
-      }
-    };
-  }
-
-  // writes addressing information as MONOTONIC_COMPRESSED integer
-  private void addOrdIndex(FieldInfo field, Iterable<Number> values) throws IOException {
-    meta.writeVInt(field.number);
-    meta.writeByte(Lucene54DocValuesFormat.NUMERIC);
-    meta.writeVInt(MONOTONIC_COMPRESSED);
-    meta.writeLong(-1L);
-    meta.writeLong(data.getFilePointer());
-    meta.writeVLong(maxDoc);
-    meta.writeVInt(DIRECT_MONOTONIC_BLOCK_SHIFT);
-
-    final DirectMonotonicWriter writer = DirectMonotonicWriter.getInstance(meta, data, maxDoc + 1, DIRECT_MONOTONIC_BLOCK_SHIFT);
-    long addr = 0;
-    writer.add(addr);
-    for (Number v : values) {
-      addr += v.longValue();
-      writer.add(addr);
-    }
-    writer.finish();
-    meta.writeLong(data.getFilePointer());
-  }
-
-  @Override
-  public void close() throws IOException {
-    boolean success = false;
-    try {
-      if (meta != null) {
-        meta.writeVInt(-1); // write EOF marker
-        CodecUtil.writeFooter(meta); // write checksum
-      }
-      if (data != null) {
-        CodecUtil.writeFooter(data); // write checksum
-      }
-      success = true;
-    } finally {
-      if (success) {
-        IOUtils.close(data, meta);
-      } else {
-        IOUtils.closeWhileHandlingException(data, meta);
-      }
-      meta = data = null;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesFormat.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesFormat.java
deleted file mode 100644
index 91ccfe2..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesFormat.java
+++ /dev/null
@@ -1,186 +0,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.
- */
-package org.apache.lucene.codecs.lucene54;
-
-
-import java.io.IOException;
-
-import org.apache.lucene.codecs.DocValuesConsumer;
-import org.apache.lucene.codecs.DocValuesFormat;
-import org.apache.lucene.codecs.DocValuesProducer;
-import org.apache.lucene.codecs.lucene70.Lucene70DocValuesFormat;
-import org.apache.lucene.index.DocValuesType;
-import org.apache.lucene.index.SegmentReadState;
-import org.apache.lucene.index.SegmentWriteState;
-import org.apache.lucene.util.SmallFloat;
-import org.apache.lucene.util.packed.DirectWriter;
-
-/**
- * Lucene 5.4 DocValues format.
- * <p>
- * Encodes the five per-document value types (Numeric,Binary,Sorted,SortedSet,SortedNumeric) with these strategies:
- * <p>
- * {@link DocValuesType#NUMERIC NUMERIC}:
- * <ul>
- *    <li>Delta-compressed: per-document integers written as deltas from the minimum value,
- *        compressed with bitpacking. For more information, see {@link DirectWriter}.
- *    <li>Table-compressed: when the number of unique values is very small (&lt; 256), and
- *        when there are unused "gaps" in the range of values used (such as {@link SmallFloat}), 
- *        a lookup table is written instead. Each per-document entry is instead the ordinal 
- *        to this table, and those ordinals are compressed with bitpacking ({@link DirectWriter}). 
- *    <li>GCD-compressed: when all numbers share a common divisor, such as dates, the greatest
- *        common denominator (GCD) is computed, and quotients are stored using Delta-compressed Numerics.
- *    <li>Monotonic-compressed: when all numbers are monotonically increasing offsets, they are written
- *        as blocks of bitpacked integers, encoding the deviation from the expected delta.
- *    <li>Const-compressed: when there is only one possible non-missing value, only the missing
- *        bitset is encoded.
- *    <li>Sparse-compressed: only documents with a value are stored, and lookups are performed
- *        using binary search.
- * </ul>
- * <p>
- * {@link DocValuesType#BINARY BINARY}:
- * <ul>
- *    <li>Fixed-width Binary: one large concatenated byte[] is written, along with the fixed length.
- *        Each document's value can be addressed directly with multiplication ({@code docID * length}). 
- *    <li>Variable-width Binary: one large concatenated byte[] is written, along with end addresses 
- *        for each document. The addresses are written as Monotonic-compressed numerics.
- *    <li>Prefix-compressed Binary: values are written in chunks of 16, with the first value written
- *        completely and other values sharing prefixes. chunk addresses are written as Monotonic-compressed
- *        numerics. A reverse lookup index is written from a portion of every 1024th term.
- * </ul>
- * <p>
- * {@link DocValuesType#SORTED SORTED}:
- * <ul>
- *    <li>Sorted: a mapping of ordinals to deduplicated terms is written as Binary, 
- *        along with the per-document ordinals written using one of the numeric strategies above.
- * </ul>
- * <p>
- * {@link DocValuesType#SORTED_SET SORTED_SET}:
- * <ul>
- *    <li>Single: if all documents have 0 or 1 value, then data are written like SORTED.
- *    <li>SortedSet table: when there are few unique sets of values (&lt; 256) then each set is assigned
- *        an id, a lookup table is written and the mapping from document to set id is written using the
- *        numeric strategies above.
- *    <li>SortedSet: a mapping of ordinals to deduplicated terms is written as Binary, 
- *        an ordinal list and per-document index into this list are written using the numeric strategies 
- *        above.
- * </ul>
- * <p>
- * {@link DocValuesType#SORTED_NUMERIC SORTED_NUMERIC}:
- * <ul>
- *    <li>Single: if all documents have 0 or 1 value, then data are written like NUMERIC.
- *    <li>SortedSet table: when there are few unique sets of values (&lt; 256) then each set is assigned
- *        an id, a lookup table is written and the mapping from document to set id is written using the
- *        numeric strategies above.
- *    <li>SortedNumeric: a value list and per-document index into this list are written using the numeric
- *        strategies above.
- * </ul>
- * <p>
- * Files:
- * <ol>
- *   <li><tt>.dvd</tt>: DocValues data</li>
- *   <li><tt>.dvm</tt>: DocValues metadata</li>
- * </ol>
- * @lucene.experimental
- * @deprecated Use {@link Lucene70DocValuesFormat}.
- */
-@Deprecated
-public final class Lucene54DocValuesFormat extends DocValuesFormat {
-
-  /** Sole Constructor */
-  public Lucene54DocValuesFormat() {
-    super("Lucene54");
-  }
-
-  @Override
-  public DocValuesConsumer fieldsConsumer(SegmentWriteState state) throws IOException {
-    return new Lucene54DocValuesConsumer(state, DATA_CODEC, DATA_EXTENSION, META_CODEC, META_EXTENSION);
-  }
-
-  @Override
-  public DocValuesProducer fieldsProducer(SegmentReadState state) throws IOException {
-    return new Lucene54DocValuesProducer(state, DATA_CODEC, DATA_EXTENSION, META_CODEC, META_EXTENSION);
-  }
-  
-  static final String DATA_CODEC = "Lucene54DocValuesData";
-  static final String DATA_EXTENSION = "dvd";
-  static final String META_CODEC = "Lucene54DocValuesMetadata";
-  static final String META_EXTENSION = "dvm";
-  static final int VERSION_START = 0;
-  static final int VERSION_CURRENT = VERSION_START;
-  
-  // indicates docvalues type
-  static final byte NUMERIC = 0;
-  static final byte BINARY = 1;
-  static final byte SORTED = 2;
-  static final byte SORTED_SET = 3;
-  static final byte SORTED_NUMERIC = 4;
-  
-  // address terms in blocks of 16 terms
-  static final int INTERVAL_SHIFT = 4;
-  static final int INTERVAL_COUNT = 1 << INTERVAL_SHIFT;
-  static final int INTERVAL_MASK = INTERVAL_COUNT - 1;
-  
-  // build reverse index from every 1024th term
-  static final int REVERSE_INTERVAL_SHIFT = 10;
-  static final int REVERSE_INTERVAL_COUNT = 1 << REVERSE_INTERVAL_SHIFT;
-  static final int REVERSE_INTERVAL_MASK = REVERSE_INTERVAL_COUNT - 1;
-  
-  // for conversion from reverse index to block
-  static final int BLOCK_INTERVAL_SHIFT = REVERSE_INTERVAL_SHIFT - INTERVAL_SHIFT;
-  static final int BLOCK_INTERVAL_COUNT = 1 << BLOCK_INTERVAL_SHIFT;
-  static final int BLOCK_INTERVAL_MASK = BLOCK_INTERVAL_COUNT - 1;
-
-  /** Compressed using packed blocks of ints. */
-  static final int DELTA_COMPRESSED = 0;
-  /** Compressed by computing the GCD. */
-  static final int GCD_COMPRESSED = 1;
-  /** Compressed by giving IDs to unique values. */
-  static final int TABLE_COMPRESSED = 2;
-  /** Compressed with monotonically increasing values */
-  static final int MONOTONIC_COMPRESSED = 3;
-  /** Compressed with constant value (uses only missing bitset) */
-  static final int CONST_COMPRESSED = 4;
-  /** Compressed with sparse arrays. */
-  static final int SPARSE_COMPRESSED = 5;
-
-  /** Uncompressed binary, written directly (fixed length). */
-  static final int BINARY_FIXED_UNCOMPRESSED = 0;
-  /** Uncompressed binary, written directly (variable length). */
-  static final int BINARY_VARIABLE_UNCOMPRESSED = 1;
-  /** Compressed binary with shared prefixes */
-  static final int BINARY_PREFIX_COMPRESSED = 2;
-
-  /** Standard storage for sorted set values with 1 level of indirection:
-   *  {@code docId -> address -> ord}. */
-  static final int SORTED_WITH_ADDRESSES = 0;
-  /** Single-valued sorted set values, encoded as sorted values, so no level
-   *  of indirection: {@code docId -> ord}. */
-  static final int SORTED_SINGLE_VALUED = 1;
-  /** Compressed giving IDs to unique sets of values:
-   * {@code docId -> setId -> ords} */
-  static final int SORTED_SET_TABLE = 2;
-  
-  /** placeholder for missing offset that means there are no missing values */
-  static final int ALL_LIVE = -1;
-  /** placeholder for missing offset that means all values are missing */
-  static final int ALL_MISSING = -2;
-  
-  // addressing uses 16k blocks
-  static final int MONOTONIC_BLOCK_SIZE = 16384;
-  static final int DIRECT_MONOTONIC_BLOCK_SHIFT = 16;
-}


[48/53] [abbrv] lucene-solr:feature/autoscaling: LUCENE-7871: fixing CHANGES.txt, mark it as Lucene 7.0 bug fix.

Posted by sh...@apache.org.
LUCENE-7871: fixing CHANGES.txt, mark it as Lucene 7.0 bug fix.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/bb2d6c12
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/bb2d6c12
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/bb2d6c12

Branch: refs/heads/feature/autoscaling
Commit: bb2d6c128ff74d6164c5c60ac952074c1b5a5b94
Parents: 5966f75
Author: Mikhail Khludnev <mk...@apache.org>
Authored: Mon Jul 3 15:53:57 2017 +0300
Committer: Mikhail Khludnev <mk...@apache.org>
Committed: Mon Jul 3 15:53:57 2017 +0300

----------------------------------------------------------------------
 lucene/CHANGES.txt                                                | 3 +++
 .../src/java/org/apache/lucene/search/join/BlockJoinSelector.java | 2 +-
 solr/CHANGES.txt                                                  | 3 ---
 3 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bb2d6c12/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 909b6ce..88e1779 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -105,6 +105,9 @@ Bug Fixes
 * LUCENE-7859: Spatial-extras PackedQuadPrefixTree bug that only revealed itself
   with the new pointsOnly optimizations in LUCENE-7845. (David Smiley)
 
+* LUCENE-7871: fix false positive match in BlockJoinSelector when children have no value, introducing 
+  wrap methods accepting children as DISI. Extracting ToParentDocValues (Mikhail Khludnev)
+
 Improvements
 
 * LUCENE-7489: Better storage of sparse doc-values fields with the default

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bb2d6c12/lucene/join/src/java/org/apache/lucene/search/join/BlockJoinSelector.java
----------------------------------------------------------------------
diff --git a/lucene/join/src/java/org/apache/lucene/search/join/BlockJoinSelector.java b/lucene/join/src/java/org/apache/lucene/search/join/BlockJoinSelector.java
index a81230d..79c35b8 100644
--- a/lucene/join/src/java/org/apache/lucene/search/join/BlockJoinSelector.java
+++ b/lucene/join/src/java/org/apache/lucene/search/join/BlockJoinSelector.java
@@ -126,7 +126,7 @@ public class BlockJoinSelector {
     return wrap(sortedNumerics, selection, parents, toIter(children));
   }
 
-  /** creates an interator for the given bitset */
+  /** creates an iterator for the given bitset */
   protected static BitSetIterator toIter(BitSet children) {
     return new BitSetIterator(children, 0);
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bb2d6c12/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 8c06107..aadc6db 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -501,9 +501,6 @@ when using one of Exact*StatsCache (Mikhail Khludnev)
 * SOLR-10910: Clean up a few details left over from pluggable transient core and untangling
   CoreDescriptor/CoreContainer references (Erick Erickson)
 
-* LUCENE-7871: fix false positive match in BlockJoinSelector when children have no value, introducing 
-  wrap methods accepting children as DISI. Extracting ToParentDocValues (Mikhail Khludnev)
-
 Optimizations
 ----------------------
 * SOLR-10634: JSON Facet API: When a field/terms facet will retrieve all buckets (i.e. limit:-1)


[27/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10989: Randomize PointFields and general cleanup in schema files where some Trie fields were unused

Posted by sh...@apache.org.
SOLR-10989: Randomize PointFields and general cleanup in schema files where some Trie fields were unused


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/26d2ed7c
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/26d2ed7c
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/26d2ed7c

Branch: refs/heads/feature/autoscaling
Commit: 26d2ed7c4ddd2b8c714c2742dc9c42393bdb5d31
Parents: 2e1c506
Author: Chris Hostetter <ho...@apache.org>
Authored: Fri Jun 30 10:39:28 2017 -0700
Committer: Chris Hostetter <ho...@apache.org>
Committed: Fri Jun 30 10:39:28 2017 -0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  1 +
 .../conf/bad-schema-dup-fieldType.xml           |  4 +-
 .../collection1/conf/schema-binaryfield.xml     | 36 ---------------
 .../collection1/conf/schema-copyfield-test.xml  | 34 +++-----------
 .../collection1/conf/schema-customfield.xml     | 29 +-----------
 .../conf/schema-non-stored-docvalues.xml        | 47 +++-----------------
 .../conf/schema-not-required-unique-key.xml     |  1 -
 .../collection1/conf/schema-replication1.xml    |  1 -
 .../collection1/conf/schema-replication2.xml    |  1 -
 .../collection1/conf/schema-required-fields.xml | 34 +++-----------
 .../solr/collection1/conf/schema-reversed.xml   |  5 +--
 .../collection1/conf/schema-tokenizer-test.xml  | 21 +--------
 .../solr/collection1/conf/schema-version-dv.xml |  5 +--
 .../collection1/conf/schema-version-indexed.xml |  5 +--
 14 files changed, 26 insertions(+), 198 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 0d2226f..aadc6db 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -364,6 +364,7 @@ Other Changes
   - SOLR-10971: Randomize PointFields in CdcrBootstrapTest (hossman)
   - SOLR-10977: Randomize the usage of Points based numerics in schema15.xml and all impacted tests (hossman)
   - SOLR-10979: Randomize PointFields in schema-docValues*.xml and all affected tests (hossman)
+  - SOLR-10989: Randomize PointFields and general cleanup in schema files where some Trie fields were unused (hossman)
 
 * SOLR-6807: Changed requestDispatcher's handleSelect to default to false, thus ignoring "qt".
   Simplified configs to not refer to handleSelect or "qt".  Switch all tests that assumed true to assume false

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/bad-schema-dup-fieldType.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/bad-schema-dup-fieldType.xml b/solr/core/src/test-files/solr/collection1/conf/bad-schema-dup-fieldType.xml
index cd60df5..ac48c51 100644
--- a/solr/core/src/test-files/solr/collection1/conf/bad-schema-dup-fieldType.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/bad-schema-dup-fieldType.xml
@@ -22,8 +22,8 @@
   <fieldType name="string" class="solr.StrField"/>
 
   <!-- BEGIN BAD STUFF -->
-  <fieldType name="ftAgain" class="solr.TrieIntField"/>
-  <fieldType name="ftAgain" class="solr.TrieIntField"/>
+  <fieldType name="ftAgain" class="solr.StrField"/>
+  <fieldType name="ftAgain" class="solr.StrField"/>
   <!-- END BAD STUFF -->
 
   <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="false"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-binaryfield.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-binaryfield.xml b/solr/core/src/test-files/solr/collection1/conf/schema-binaryfield.xml
index 26a428d..f0f216b 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-binaryfield.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-binaryfield.xml
@@ -27,46 +27,10 @@
 
 <schema name="test" version="1.2">
 
-  <!-- field type definitions... note that the "name" attribute is
-       just a label to be used by field definitions.  The "class"
-       attribute and any other attributes determine the real type and
-       behavior of the fieldType.
-    -->
-
-  <!--
-    Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
-  -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!--
-   Numeric field types that index each value at various levels of precision
-   to accelerate range queries when the number of values between the range
-   endpoints is large. See the javadoc for LegacyNumericRangeQuery for internal
-   implementation details.
-
-   Smaller precisionStep values (specified in bits) will lead to more tokens
-   indexed per value, slightly larger index size, and faster range queries.
-   A precisionStep of 0 disables indexing at different precision levels.
-  -->
-  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
-
-
   <fieldType name="binary" class="solr.BinaryField"/>
   <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
   <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
 
-  <!-- format for date is 1995-12-31T23:59:59.999Z and only the fractional
-       seconds part (.999) is optional.
-    -->
-  <fieldType name="date" class="solr.TrieDateField" sortMissingLast="true"/>
-
-
   <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
   <field name="data" type="binary" stored="true"/>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml b/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
index 96adf2d..adea3c1 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
@@ -27,34 +27,10 @@
 
 <schema name="test" version="1.0">
 
-  <!-- field type definitions... note that the "name" attribute is
-       just a label to be used by field definitions.  The "class"
-       attribute and any other attributes determine the real type and
-       behavior of the fieldType.
-    -->
-
-  <!--
-    Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
-  -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!--
-   Numeric field types that index each value at various levels of precision
-   to accelerate range queries when the number of values between the range
-   endpoints is large. See the javadoc for LegacyNumericRangeQuery for internal
-   implementation details.
-
-   Smaller precisionStep values (specified in bits) will lead to more tokens
-   indexed per value, slightly larger index size, and faster range queries.
-   A precisionStep of 0 disables indexing at different precision levels.
-  -->
-  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
+  <fieldType name="float" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
+  <fieldType name="double" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
 
   <!-- Field type demonstrating an Analyzer failure -->
   <fieldType name="failtype1" class="solr.TextField">
@@ -94,7 +70,7 @@
   <!-- format for date is 1995-12-31T23:59:59.999Z and only the fractional
        seconds part (.999) is optional.
     -->
-  <fieldType name="date" class="solr.TrieDateField" sortMissingLast="true"/>
+  <fieldType name="date" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" sortMissingLast="true"/>
 
   <!-- solr.TextField allows the specification of custom
        text analyzers specified as a tokenizer and a list

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-customfield.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-customfield.xml b/solr/core/src/test-files/solr/collection1/conf/schema-customfield.xml
index 83948b7..cfb147a 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-customfield.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-customfield.xml
@@ -27,35 +27,10 @@
 
 <schema name="test" version="1.2">
 
-  <!-- field type definitions... note that the "name" attribute is
-       just a label to be used by field definitions.  The "class"
-       attribute and any other attributes determine the real type and
-       behavior of the fieldType.
-    -->
   <fieldType name="string" class="solr.StrField"/>
 
-  <!--
-    Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
-  -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!--
-   Numeric field types that index each value at various levels of precision
-   to accelerate range queries when the number of values between the range
-   endpoints is large. See the javadoc for LegacyNumericRangeQuery for internal
-   implementation details.
-
-   Smaller precisionStep values (specified in bits) will lead to more tokens
-   indexed per value, slightly larger index size, and faster range queries.
-   A precisionStep of 0 disables indexing at different precision levels.
-  -->
-  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
 
   <fieldType name="customfield" class="org.apache.solr.schema.MyCrazyCustomField" multiValued="true"
              positionIncrementGap="100">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-non-stored-docvalues.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-non-stored-docvalues.xml b/solr/core/src/test-files/solr/collection1/conf/schema-non-stored-docvalues.xml
index f700e60..4e631be 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-non-stored-docvalues.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-non-stored-docvalues.xml
@@ -17,52 +17,15 @@
 -->
 
 <schema name="test-non-stored-docvalues" version="1.6">
-  <!-- attribute "name" is the name of this schema and is only used for display purposes.
-       version="x.y" is Solr's version number for the schema syntax and 
-       semantics.  It should not normally be changed by applications.
-
-       1.0: multiValued attribute did not exist, all fields are multiValued 
-            by nature
-       1.1: multiValued attribute introduced, false by default 
-       1.2: omitTermFreqAndPositions attribute introduced, true by default 
-            except for text fields.
-       1.3: removed optional field compress feature
-       1.4: autoGeneratePhraseQueries attribute introduced to drive QueryParser
-            behavior when a single string produces multiple tokens.  Defaults 
-            to off for version >= 1.4
-       1.5: omitNorms defaults to true for primitive field types 
-            (int, float, boolean, string...)
-       1.6: useDocValuesAsStored defaults to true.
-     -->
-
-
-  <!-- field type definitions... note that the "name" attribute is
-       just a label to be used by field definitions.  The "class"
-       attribute and any other attributes determine the real type and
-       behavior of the fieldType.
-    -->
-
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-
-
-  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
 
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="float" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="double" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
 
   <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
   <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
-
-  <!-- format for date is 1995-12-31T23:59:59.999Z and only the fractional
-       seconds part (.999) is optional.
-    -->
-  <fieldType name="date" class="solr.TrieDateField" precisionStep="0"/>
-  <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6"/>
-  <fieldType name="tdatedv" class="solr.TrieDateField" precisionStep="6" docValues="true"/>
+  <fieldType name="date" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0"/>
   <fieldType name="enumField" class="solr.EnumField" enumsConfig="enumsConfig.xml" enumName="severity"/>
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-not-required-unique-key.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-not-required-unique-key.xml b/solr/core/src/test-files/solr/collection1/conf/schema-not-required-unique-key.xml
index d38952f..ba8bbd5 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-not-required-unique-key.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-not-required-unique-key.xml
@@ -23,7 +23,6 @@
   -->
 <schema name="test" version="1.0">
   <fieldType name="string" class="solr.StrField"/>
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0"/>
   <fieldType name="text" class="solr.TextField">
     <analyzer>
       <tokenizer class="solr.StandardTokenizerFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-replication1.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-replication1.xml b/solr/core/src/test-files/solr/collection1/conf/schema-replication1.xml
index eeb51bd..1a4e32e 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-replication1.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-replication1.xml
@@ -27,7 +27,6 @@
 
 <schema name="test" version="1.2">
 
-  <fieldType name="integer" class="solr.TrieIntField" precisionStep="0"/>
   <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
 
   <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="false"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-replication2.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-replication2.xml b/solr/core/src/test-files/solr/collection1/conf/schema-replication2.xml
index ade7bf5..8b83127 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-replication2.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-replication2.xml
@@ -27,7 +27,6 @@
 
 <schema name="test" version="1.2">
 
-  <fieldType name="integer" class="solr.TrieIntField" precisionStep="0"/>
   <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
 
   <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="false"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml b/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
index 551ac1d..66add46 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
@@ -27,34 +27,10 @@
 
 <schema name="test" version="1.0">
 
-  <!-- field type definitions... note that the "name" attribute is
-       just a label to be used by field definitions.  The "class"
-       attribute and any other attributes determine the real type and
-       behavior of the fieldType.
-    -->
-
-  <!--
-    Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
-  -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!--
-   Numeric field types that index each value at various levels of precision
-   to accelerate range queries when the number of values between the range
-   endpoints is large. See the javadoc for LegacyNumericRangeQuery for internal
-   implementation details.
-
-   Smaller precisionStep values (specified in bits) will lead to more tokens
-   indexed per value, slightly larger index size, and faster range queries.
-   A precisionStep of 0 disables indexing at different precision levels.
-  -->
-  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
+  <fieldType name="float" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
+  <fieldType name="double" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
 
   <!-- Field type demonstrating an Analyzer failure -->
   <fieldType name="failtype1" class="solr.TextField">
@@ -77,7 +53,7 @@
   <!-- format for date is 1995-12-31T23:59:59.999Z and only the fractional
        seconds part (.999) is optional.
     -->
-  <fieldType name="date" class="solr.TrieDateField" sortMissingLast="true"/>
+  <fieldType name="date" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" sortMissingLast="true"/>
 
   <!-- solr.TextField allows the specification of custom
        text analyzers specified as a tokenizer and a list

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-reversed.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-reversed.xml b/solr/core/src/test-files/solr/collection1/conf/schema-reversed.xml
index 3bb52eb..bb9f981 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-reversed.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-reversed.xml
@@ -22,10 +22,7 @@
   -->
 
 <schema name="test" version="1.0">
-
-
-  <fieldType name="long" class="solr.TrieLongField"/>
-  <fieldType name="integer" class="solr.TrieIntField" precisionStep="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}"/>
   <fieldType name="string" class="solr.StrField"/>
 
   <fieldType name="text" class="solr.TextField">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-tokenizer-test.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-tokenizer-test.xml b/solr/core/src/test-files/solr/collection1/conf/schema-tokenizer-test.xml
index 174787e..6c33504 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-tokenizer-test.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-tokenizer-test.xml
@@ -27,27 +27,8 @@ more concise example.
 
 <schema name="test" version="1.0">
 
-  <!-- field type definitions... note that the "name" attribute is
-  just a label to be used by field definitions.  The "class"
-  attribute and any other attributes determine the real type and
-  behavior of the fieldType.
-  -->
   <fieldType name="string" class="solr.StrField" />
-             
-  <!--
-  Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
-  -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!--
-  Numeric field types that index each value at various levels of precision
-  to accelerate range queries when the number of values between the range
-  endpoints is large. See the javadoc for LegacyNumericRangeQuery for internal
-  implementation details.
-  -->
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
 
   <!-- Seperate analyzers for index and query time -->
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-version-dv.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-version-dv.xml b/solr/core/src/test-files/solr/collection1/conf/schema-version-dv.xml
index 593b2a2..375311a 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-version-dv.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-version-dv.xml
@@ -16,15 +16,14 @@
  limitations under the License.
 -->
 <schema name="example" version="1.6">
-  <field name="_version_" type="${solr.tests.longClass:plong}" indexed="false" docValues="true" stored="true"/>
+  <field name="_version_" type="long" indexed="false" docValues="true" stored="true"/>
   <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
   <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
   <field name="signatureField" type="string" indexed="true" stored="false"/>
   <dynamicField name="*_sS" type="string" indexed="false" stored="true"/>
   <uniqueKey>id</uniqueKey>
   <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="plong" class="solr.LongPointField" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
   <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
     <analyzer>
       <tokenizer class="solr.StandardTokenizerFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/26d2ed7c/solr/core/src/test-files/solr/collection1/conf/schema-version-indexed.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-version-indexed.xml b/solr/core/src/test-files/solr/collection1/conf/schema-version-indexed.xml
index 06d6b65..4523d50 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-version-indexed.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-version-indexed.xml
@@ -16,15 +16,14 @@
  limitations under the License.
 -->
 <schema name="example" version="1.6">
-  <field name="_version_" type="${solr.tests.longClass:plong}" indexed="true" docValues="false" stored="true" />
+  <field name="_version_" type="long" indexed="true" docValues="false" stored="true" />
   <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
   <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
   <field name="signatureField" type="string" indexed="true" stored="false"/>
   <dynamicField name="*_sS" type="string" indexed="false" stored="true"/>
   <uniqueKey>id</uniqueKey>
   <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="plong" class="solr.LongPointField" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
   <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
     <analyzer>
       <tokenizer class="solr.StandardTokenizerFactory"/>


[22/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10977: Randomize the usage of Points based numerics in schema15.xml and all impacted tests

Posted by sh...@apache.org.
 SOLR-10977: Randomize the usage of Points based numerics in schema15.xml and all impacted tests


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b7fb61d7
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b7fb61d7
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b7fb61d7

Branch: refs/heads/feature/autoscaling
Commit: b7fb61d7b96a594766264c5c09ef3ba22870e223
Parents: 46bfd9c
Author: Chris Hostetter <ho...@apache.org>
Authored: Thu Jun 29 12:05:15 2017 -0700
Committer: Chris Hostetter <ho...@apache.org>
Committed: Thu Jun 29 12:05:15 2017 -0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  1 +
 .../solr/collection1/conf/schema15.xml          | 22 ++++++++++----------
 2 files changed, 12 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b7fb61d7/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 62204cd..30d334b 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -362,6 +362,7 @@ Other Changes
   - SOLR-10947: Randomize the usage of Points based numerics in contrib test schemas (hossman)
   - SOLR-10970: Randomize PointFields in all tests using schema-*sort* files (hossman)
   - SOLR-10971: Randomize PointFields in CdcrBootstrapTest (hossman)
+  - SOLR-10977: Randomize the usage of Points based numerics in schema15.xml and all impacted tests (hossman)
 
 * SOLR-6807: Changed requestDispatcher's handleSelect to default to false, thus ignoring "qt".
   Simplified configs to not refer to handleSelect or "qt".  Switch all tests that assumed true to assume false

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b7fb61d7/solr/core/src/test-files/solr/collection1/conf/schema15.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema15.xml b/solr/core/src/test-files/solr/collection1/conf/schema15.xml
index 7db2142..cae5aee 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema15.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema15.xml
@@ -31,15 +31,15 @@
        1.5: omitNorms defaults to true for primitive field types (int, float, boolean, string...)
        1.6: useDocValuesAsStored defaults to true.
      -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
-
-  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
+  <fieldType name="float" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
+  <fieldType name="double" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
+
+  <fieldType name="tint" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="8" positionIncrementGap="0"/>
+  <fieldType name="tfloat" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="8" positionIncrementGap="0"/>
+  <fieldType name="tlong" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="8" positionIncrementGap="0"/>
+  <fieldType name="tdouble" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="8" positionIncrementGap="0"/>
   <fieldType name="currency" class="solr.CurrencyField" currencyConfig="currency.xml" multiValued="false"/>
 
   <!-- Field type demonstrating an Analyzer failure -->
@@ -96,8 +96,8 @@
   <!-- format for date is 1995-12-31T23:59:59.999Z and only the fractional
        seconds part (.999) is optional.
     -->
-  <fieldType name="date" class="solr.TrieDateField" sortMissingLast="true"/>
-  <fieldType name="tdate" class="solr.TrieDateField" sortMissingLast="true" precisionStep="6"/>
+  <fieldType name="date" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" sortMissingLast="true"/>
+  <fieldType name="tdate" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" sortMissingLast="true" precisionStep="6"/>
 
   <fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
     <analyzer type="index">


[40/53] [abbrv] lucene-solr:feature/autoscaling: LUCENE-7894: make sure IW finishes segment flush so we don't see a temporary drop in IW.maxDoc()

Posted by sh...@apache.org.
LUCENE-7894: make sure IW finishes segment flush so we don't see a temporary drop in IW.maxDoc()


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/ee1edd9d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/ee1edd9d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/ee1edd9d

Branch: refs/heads/feature/autoscaling
Commit: ee1edd9d467bbccfe7015ec5ebee93f8b5bd4b14
Parents: 80ae5e2
Author: Mike McCandless <mi...@apache.org>
Authored: Sun Jul 2 15:32:44 2017 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Sun Jul 2 15:32:44 2017 -0400

----------------------------------------------------------------------
 .../apache/lucene/index/DocumentsWriter.java    | 20 +++---
 .../lucene/index/DocumentsWriterFlushQueue.java |  4 ++
 .../lucene/index/TestIndexManyDocuments.java    | 71 ++++++++++++++++++++
 3 files changed, 86 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ee1edd9d/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
index 27e28c0..0e2a067 100644
--- a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
@@ -544,11 +544,11 @@ final class DocumentsWriter implements Closeable, Accountable {
             dwptSuccess = true;
           } finally {
             subtractFlushedNumDocs(flushingDocsInRam);
-            if (!flushingDWPT.pendingFilesToDelete().isEmpty()) {
+            if (flushingDWPT.pendingFilesToDelete().isEmpty() == false) {
               putEvent(new DeleteNewFilesEvent(flushingDWPT.pendingFilesToDelete()));
               hasEvents = true;
             }
-            if (!dwptSuccess) {
+            if (dwptSuccess == false) {
               putEvent(new FlushFailedEvent(flushingDWPT.getSegmentInfo()));
               hasEvents = true;
             }
@@ -582,6 +582,10 @@ final class DocumentsWriter implements Closeable, Accountable {
       flushingDWPT = flushControl.nextPendingFlush();
     }
 
+    if (hasEvents) {
+      writer.doAfterSegmentFlushed(false, false);
+    }
+
     // If deletes alone are consuming > 1/2 our RAM
     // buffer, force them all to apply now. This is to
     // prevent too-frequent flushing of a long tail of
@@ -605,7 +609,7 @@ final class DocumentsWriter implements Closeable, Accountable {
   
   void subtractFlushedNumDocs(int numFlushed) {
     int oldValue = numDocsInRAM.get();
-    while (!numDocsInRAM.compareAndSet(oldValue, oldValue - numFlushed)) {
+    while (numDocsInRAM.compareAndSet(oldValue, oldValue - numFlushed) == false) {
       oldValue = numDocsInRAM.get();
     }
     assert numDocsInRAM.get() >= 0;
@@ -726,10 +730,9 @@ final class DocumentsWriter implements Closeable, Accountable {
 
   static final class ApplyDeletesEvent implements Event {
     static final Event INSTANCE = new ApplyDeletesEvent();
-    private int instCount = 0;
+
     private ApplyDeletesEvent() {
-      assert instCount == 0;
-      instCount++;
+      // only one instance
     }
     
     @Override
@@ -740,10 +743,9 @@ final class DocumentsWriter implements Closeable, Accountable {
 
   static final class ForcedPurgeEvent implements Event {
     static final Event INSTANCE = new ForcedPurgeEvent();
-    private int instCount = 0;
+
     private ForcedPurgeEvent() {
-      assert instCount == 0;
-      instCount++;
+      // only one instance
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ee1edd9d/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushQueue.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushQueue.java b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushQueue.java
index df1b38c..b051545 100644
--- a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushQueue.java
+++ b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushQueue.java
@@ -119,6 +119,10 @@ class DocumentsWriterFlushQueue {
           synchronized (this) {
             // finally remove the published ticket from the queue
             final FlushTicket poll = queue.poll();
+
+            // we hold the purgeLock so no other thread should have polled:
+            assert poll == head;
+            
             ticketCount.decrementAndGet();
             assert poll == head;
           }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ee1edd9d/lucene/core/src/test/org/apache/lucene/index/TestIndexManyDocuments.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexManyDocuments.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexManyDocuments.java
new file mode 100644
index 0000000..eb31e73
--- /dev/null
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexManyDocuments.java
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+
+package org.apache.lucene.index;
+
+import java.io.IOException;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.IOUtils;
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.TestUtil;
+
+public class TestIndexManyDocuments extends LuceneTestCase {
+
+  public void test() throws Exception {
+    Directory dir = newFSDirectory(createTempDir());
+    IndexWriterConfig iwc = new IndexWriterConfig();
+    iwc.setMaxBufferedDocs(TestUtil.nextInt(random(), 100, 2000));
+
+    int numDocs = atLeast(10000);
+
+    final IndexWriter w = new IndexWriter(dir, iwc);
+    final AtomicInteger count = new AtomicInteger();
+    Thread[] threads = new Thread[2];
+    for(int i=0;i<threads.length;i++) {
+      threads[i] = new Thread() {
+          @Override
+          public void run() {
+           while (count.getAndIncrement() < numDocs) {
+              Document doc = new Document();
+              doc.add(newTextField("field", "text", Field.Store.NO));
+              try {
+                w.addDocument(doc);
+              } catch (IOException ioe) {
+                throw new RuntimeException(ioe);
+              }
+            }
+          }
+        };
+      threads[i].start();
+    }
+
+    for (Thread thread : threads) {
+      thread.join();
+    }
+
+    assertEquals("lost " + (numDocs - w.maxDoc()) + " documents; maxBufferedDocs=" + iwc.getMaxBufferedDocs(), numDocs, w.maxDoc());
+    w.close();
+             
+    IndexReader r = DirectoryReader.open(dir);
+    assertEquals(numDocs, r.maxDoc());
+    IOUtils.close(r, dir);
+  }
+}


[49/53] [abbrv] lucene-solr:feature/autoscaling: Formatting fix for ref-guide

Posted by sh...@apache.org.
Formatting fix for ref-guide


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b978f37e
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b978f37e
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b978f37e

Branch: refs/heads/feature/autoscaling
Commit: b978f37e658877f6ffb0241df70cd8255ac74433
Parents: bb2d6c1
Author: Jan Høydahl <ja...@apache.org>
Authored: Mon Jul 3 14:55:53 2017 +0200
Committer: Jan Høydahl <ja...@apache.org>
Committed: Mon Jul 3 14:56:06 2017 +0200

----------------------------------------------------------------------
 solr/solr-ref-guide/src/uploading-data-with-index-handlers.adoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b978f37e/solr/solr-ref-guide/src/uploading-data-with-index-handlers.adoc
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/uploading-data-with-index-handlers.adoc b/solr/solr-ref-guide/src/uploading-data-with-index-handlers.adoc
index 6a9d350..a8c56bb 100644
--- a/solr/solr-ref-guide/src/uploading-data-with-index-handlers.adoc
+++ b/solr/solr-ref-guide/src/uploading-data-with-index-handlers.adoc
@@ -132,7 +132,7 @@ Documents can be deleted from the index in two ways. "Delete by ID" deletes the
 [IMPORTANT]
 ====
 
-When using the Join query parser in a Delete By Query, you should use the `score` parameter with a value of " `none`" to avoid a `ClassCastException`. See the section on the <<other-parsers.adoc#other-parsers,Join Query Parser>> for more details on the `score` parameter.
+When using the Join query parser in a Delete By Query, you should use the `score` parameter with a value of "none" to avoid a `ClassCastException`. See the section on the <<other-parsers.adoc#other-parsers,Join Query Parser>> for more details on the `score` parameter.
 
 ====
 


[06/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10971: Randomize PointFields in CdcrBootstrapTest

Posted by sh...@apache.org.
SOLR-10971: Randomize PointFields in CdcrBootstrapTest


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/c98e2a52
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/c98e2a52
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/c98e2a52

Branch: refs/heads/feature/autoscaling
Commit: c98e2a528f13a3a05f9d4899bff54c2f519e5fb5
Parents: 89abc98
Author: Chris Hostetter <ho...@apache.org>
Authored: Wed Jun 28 14:55:29 2017 -0700
Committer: Chris Hostetter <ho...@apache.org>
Committed: Wed Jun 28 14:55:29 2017 -0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                                   | 1 +
 .../solr/configsets/cdcr-source-disabled/conf/schema.xml           | 2 +-
 .../src/test-files/solr/configsets/cdcr-source/conf/schema.xml     | 2 +-
 .../src/test-files/solr/configsets/cdcr-target/conf/schema.xml     | 2 +-
 4 files changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c98e2a52/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index bbda1a3..214b82e 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -358,6 +358,7 @@ Other Changes
   - SOLR-10946: Randomize the usage of Points based numerics in solrj test schemas (hossman)
   - SOLR-10947: Randomize the usage of Points based numerics in contrib test schemas (hossman)
   - SOLR-10970: Randomize PointFields in all tests using schema-*sort* files (hossman)
+  - SOLR-10971: Randomize PointFields in CdcrBootstrapTest (hossman)
 
 * SOLR-6807: Changed requestDispatcher's handleSelect to default to false, thus ignoring "qt".
   Simplified configs to not refer to handleSelect or "qt".  Switch all tests that assumed true to assume false

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c98e2a52/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/schema.xml b/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/schema.xml
index 2897315..2df6c0a 100644
--- a/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/schema.xml
+++ b/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/schema.xml
@@ -18,7 +18,7 @@
 <schema name="minimal" version="1.1">
   <types>
     <fieldType name="string" class="solr.StrField"/>
-    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
+    <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
   </types>
   <fields>
     <field name="id" type="string" indexed="true" stored="true"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c98e2a52/solr/core/src/test-files/solr/configsets/cdcr-source/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/cdcr-source/conf/schema.xml b/solr/core/src/test-files/solr/configsets/cdcr-source/conf/schema.xml
index 2897315..2df6c0a 100644
--- a/solr/core/src/test-files/solr/configsets/cdcr-source/conf/schema.xml
+++ b/solr/core/src/test-files/solr/configsets/cdcr-source/conf/schema.xml
@@ -18,7 +18,7 @@
 <schema name="minimal" version="1.1">
   <types>
     <fieldType name="string" class="solr.StrField"/>
-    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
+    <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
   </types>
   <fields>
     <field name="id" type="string" indexed="true" stored="true"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c98e2a52/solr/core/src/test-files/solr/configsets/cdcr-target/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/cdcr-target/conf/schema.xml b/solr/core/src/test-files/solr/configsets/cdcr-target/conf/schema.xml
index 2897315..2df6c0a 100644
--- a/solr/core/src/test-files/solr/configsets/cdcr-target/conf/schema.xml
+++ b/solr/core/src/test-files/solr/configsets/cdcr-target/conf/schema.xml
@@ -18,7 +18,7 @@
 <schema name="minimal" version="1.1">
   <types>
     <fieldType name="string" class="solr.StrField"/>
-    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
+    <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" positionIncrementGap="0"/>
   </types>
   <fields>
     <field name="id" type="string" indexed="true" stored="true"/>


[31/53] [abbrv] lucene-solr:feature/autoscaling: Changes for version upgrade to 8.0 on master for the 7.0 release

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/TestLucene50SegmentInfoFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/TestLucene50SegmentInfoFormat.java b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/TestLucene50SegmentInfoFormat.java
deleted file mode 100644
index 0a9bf79..0000000
--- a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/TestLucene50SegmentInfoFormat.java
+++ /dev/null
@@ -1,50 +0,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.
- */
-package org.apache.lucene.codecs.lucene50;
-
-import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.codecs.lucene60.Lucene60RWCodec;
-import org.apache.lucene.index.BaseSegmentInfoFormatTestCase;
-import org.apache.lucene.util.Version;
-
-public class TestLucene50SegmentInfoFormat extends BaseSegmentInfoFormatTestCase {
-
-  @Override
-  protected Codec getCodec() {
-    return new Lucene60RWCodec();
-  }
-
-  @Override
-  protected int getCreatedVersionMajor() {
-    return Version.LUCENE_6_0_0.major;
-  }
-
-  @Override
-  protected Version[] getVersions() {
-    return new Version[] { Version.LUCENE_6_0_0 };
-  }
-
-  @Override
-  protected boolean supportsIndexSort() {
-    return false;
-  }
-
-  @Override
-  protected boolean supportsMinVersion() {
-    return false;
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/Lucene53NormsConsumer.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/Lucene53NormsConsumer.java b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/Lucene53NormsConsumer.java
deleted file mode 100644
index 833500c..0000000
--- a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/Lucene53NormsConsumer.java
+++ /dev/null
@@ -1,159 +0,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.
- */
-package org.apache.lucene.codecs.lucene53;
-
-
-import java.io.IOException;
-
-import org.apache.lucene.codecs.CodecUtil;
-import org.apache.lucene.codecs.LegacyDocValuesIterables;
-import org.apache.lucene.codecs.NormsConsumer;
-import org.apache.lucene.codecs.NormsProducer;
-import org.apache.lucene.index.FieldInfo;
-import org.apache.lucene.index.IndexFileNames;
-import org.apache.lucene.index.SegmentWriteState;
-import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.util.IOUtils;
-
-import static org.apache.lucene.codecs.lucene53.Lucene53NormsFormat.VERSION_CURRENT;
-
-/**
- * Writer for {@link Lucene53NormsFormat}
- */
-class Lucene53NormsConsumer extends NormsConsumer { 
-  IndexOutput data, meta;
-  final int maxDoc;
-
-  Lucene53NormsConsumer(SegmentWriteState state, String dataCodec, String dataExtension, String metaCodec, String metaExtension) throws IOException {
-    boolean success = false;
-    try {
-      String dataName = IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, dataExtension);
-      data = state.directory.createOutput(dataName, state.context);
-      CodecUtil.writeIndexHeader(data, dataCodec, VERSION_CURRENT, state.segmentInfo.getId(), state.segmentSuffix);
-      String metaName = IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, metaExtension);
-      meta = state.directory.createOutput(metaName, state.context);
-      CodecUtil.writeIndexHeader(meta, metaCodec, VERSION_CURRENT, state.segmentInfo.getId(), state.segmentSuffix);
-      maxDoc = state.segmentInfo.maxDoc();
-      success = true;
-    } finally {
-      if (!success) {
-        IOUtils.closeWhileHandlingException(this);
-      }
-    }
-  }
-
-  @Override
-  public void addNormsField(FieldInfo field, NormsProducer normsProducer) throws IOException {
-    addNormsField(field, LegacyDocValuesIterables.normsIterable(field, normsProducer, maxDoc));
-  }
-
-  private void addNormsField(FieldInfo field, Iterable<Number> values) throws IOException {
-    meta.writeVInt(field.number);
-    long minValue = Long.MAX_VALUE;
-    long maxValue = Long.MIN_VALUE;
-    int count = 0;
-
-    for (Number nv : values) {
-      if (nv == null) {
-        throw new IllegalStateException("illegal norms data for field " + field.name + ", got null for value: " + count);
-      }
-      final long v = nv.longValue();
-      minValue = Math.min(minValue, v);
-      maxValue = Math.max(maxValue, v);
-      count++;
-    }
-
-    if (count != maxDoc) {
-      throw new IllegalStateException("illegal norms data for field " + field.name + ", expected count=" + maxDoc + ", got=" + count);
-    }
-
-    if (minValue == maxValue) {
-      addConstant(minValue);
-    } else if (minValue >= Byte.MIN_VALUE && maxValue <= Byte.MAX_VALUE) {
-      addByte1(values);
-    } else if (minValue >= Short.MIN_VALUE && maxValue <= Short.MAX_VALUE) {
-      addByte2(values);
-    } else if (minValue >= Integer.MIN_VALUE && maxValue <= Integer.MAX_VALUE) {
-      addByte4(values);
-    } else {
-      addByte8(values);
-    }
-  }
-
-  private void addConstant(long constant) throws IOException {
-    meta.writeByte((byte) 0);
-    meta.writeLong(constant);
-  }
-
-  private void addByte1(Iterable<Number> values) throws IOException {
-    meta.writeByte((byte) 1);
-    meta.writeLong(data.getFilePointer());
-
-    for (Number value : values) {
-      data.writeByte(value.byteValue());
-    }
-  }
-
-  private void addByte2(Iterable<Number> values) throws IOException {
-    meta.writeByte((byte) 2);
-    meta.writeLong(data.getFilePointer());
-
-    for (Number value : values) {
-      data.writeShort(value.shortValue());
-    }
-  }
-
-  private void addByte4(Iterable<Number> values) throws IOException {
-    meta.writeByte((byte) 4);
-    meta.writeLong(data.getFilePointer());
-
-    for (Number value : values) {
-      data.writeInt(value.intValue());
-    }
-  }
-
-  private void addByte8(Iterable<Number> values) throws IOException {
-    meta.writeByte((byte) 8);
-    meta.writeLong(data.getFilePointer());
-
-    for (Number value : values) {
-      data.writeLong(value.longValue());
-    }
-  }
-
-  @Override
-  public void close() throws IOException {
-    boolean success = false;
-    try {
-      if (meta != null) {
-        meta.writeVInt(-1); // write EOF marker
-        CodecUtil.writeFooter(meta); // write checksum
-      }
-      if (data != null) {
-        CodecUtil.writeFooter(data); // write checksum
-      }
-      success = true;
-    } finally {
-      if (success) {
-        IOUtils.close(data, meta);
-      } else {
-        IOUtils.closeWhileHandlingException(data, meta);
-      }
-      meta = data = null;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/Lucene53RWNormsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/Lucene53RWNormsFormat.java b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/Lucene53RWNormsFormat.java
deleted file mode 100644
index 86a2b6a..0000000
--- a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/Lucene53RWNormsFormat.java
+++ /dev/null
@@ -1,31 +0,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.
- */
-package org.apache.lucene.codecs.lucene53;
-
-import java.io.IOException;
-
-import org.apache.lucene.codecs.NormsConsumer;
-import org.apache.lucene.index.SegmentWriteState;
-
-public class Lucene53RWNormsFormat extends Lucene53NormsFormat {
-
-  @Override
-  public NormsConsumer normsConsumer(SegmentWriteState state) throws IOException {
-    return new Lucene53NormsConsumer(state, DATA_CODEC, DATA_EXTENSION, METADATA_CODEC, METADATA_EXTENSION);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/TestLucene53NormsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/TestLucene53NormsFormat.java b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/TestLucene53NormsFormat.java
deleted file mode 100644
index 7d37b45..0000000
--- a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene53/TestLucene53NormsFormat.java
+++ /dev/null
@@ -1,44 +0,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.
- */
-package org.apache.lucene.codecs.lucene53;
-
-import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.codecs.lucene62.Lucene62RWCodec;
-import org.apache.lucene.index.BaseNormsFormatTestCase;
-import org.apache.lucene.util.Version;
-
-/**
- * Tests Lucene53NormsFormat
- */
-public class TestLucene53NormsFormat extends BaseNormsFormatTestCase {
-  private final Codec codec = new Lucene62RWCodec();
-
-  @Override
-  protected int getCreatedVersionMajor() {
-    return Version.LUCENE_6_2_0.major;
-  }
-
-  @Override
-  protected Codec getCodec() {
-    return codec;
-  }
-
-  @Override
-  protected boolean codecSupportsSparsity() {
-    return false;
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene54/TestLucene54DocValuesFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene54/TestLucene54DocValuesFormat.java b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene54/TestLucene54DocValuesFormat.java
deleted file mode 100644
index a761dfc..0000000
--- a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene54/TestLucene54DocValuesFormat.java
+++ /dev/null
@@ -1,640 +0,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.
- */
-package org.apache.lucene.codecs.lucene54;
-
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
-
-import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.codecs.DocValuesFormat;
-import org.apache.lucene.codecs.PostingsFormat;
-import org.apache.lucene.codecs.asserting.AssertingCodec;
-import org.apache.lucene.codecs.lucene54.Lucene54DocValuesProducer.SparseNumericDocValues;
-import org.apache.lucene.codecs.lucene54.Lucene54DocValuesProducer.SparseNumericDocValuesRandomAccessWrapper;
-import org.apache.lucene.document.BinaryDocValuesField;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.NumericDocValuesField;
-import org.apache.lucene.document.SortedDocValuesField;
-import org.apache.lucene.document.SortedNumericDocValuesField;
-import org.apache.lucene.document.SortedSetDocValuesField;
-import org.apache.lucene.document.StoredField;
-import org.apache.lucene.document.StringField;
-import org.apache.lucene.index.BaseCompressingDocValuesFormatTestCase;
-import org.apache.lucene.index.BinaryDocValues;
-import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.IndexableField;
-import org.apache.lucene.index.LeafReader;
-import org.apache.lucene.index.LeafReaderContext;
-import org.apache.lucene.index.NumericDocValues;
-import org.apache.lucene.index.RandomIndexWriter;
-import org.apache.lucene.index.SerialMergeScheduler;
-import org.apache.lucene.index.SortedDocValues;
-import org.apache.lucene.index.SortedNumericDocValues;
-import org.apache.lucene.index.SortedSetDocValues;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.index.Terms;
-import org.apache.lucene.index.TermsEnum.SeekStatus;
-import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.RAMFile;
-import org.apache.lucene.store.RAMInputStream;
-import org.apache.lucene.store.RAMOutputStream;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.BytesRefBuilder;
-import org.apache.lucene.util.LongValues;
-import org.apache.lucene.util.TestUtil;
-
-/**
- * Tests Lucene54DocValuesFormat
- */
-public class TestLucene54DocValuesFormat extends BaseCompressingDocValuesFormatTestCase {
-  private final Codec codec = TestUtil.alwaysDocValuesFormat(new Lucene54DocValuesFormat());
-
-  @Override
-  protected Codec getCodec() {
-    return codec;
-  }
-  
-  // TODO: these big methods can easily blow up some of the other ram-hungry codecs...
-  // for now just keep them here, as we want to test this for this format.
-  
-  @Slow
-  public void testSortedSetVariableLengthBigVsStoredFields() throws Exception {
-    int numIterations = atLeast(1);
-    for (int i = 0; i < numIterations; i++) {
-      doTestSortedSetVsStoredFields(atLeast(300), 1, 32766, 16, 100);
-    }
-  }
-  
-  @Nightly
-  public void testSortedSetVariableLengthManyVsStoredFields() throws Exception {
-    int numIterations = atLeast(1);
-    for (int i = 0; i < numIterations; i++) {
-      doTestSortedSetVsStoredFields(TestUtil.nextInt(random(), 1024, 2049), 1, 500, 16, 100);
-    }
-  }
-  
-  @Slow
-  public void testSortedVariableLengthBigVsStoredFields() throws Exception {
-    int numIterations = atLeast(1);
-    for (int i = 0; i < numIterations; i++) {
-      doTestSortedVsStoredFields(atLeast(300), 1d, 1, 32766);
-    }
-  }
-  
-  @Nightly
-  public void testSortedVariableLengthManyVsStoredFields() throws Exception {
-    int numIterations = atLeast(1);
-    for (int i = 0; i < numIterations; i++) {
-      doTestSortedVsStoredFields(TestUtil.nextInt(random(), 1024, 2049), 1d, 1, 500);
-    }
-  }
-  
-  @Slow
-  public void testTermsEnumFixedWidth() throws Exception {
-    int numIterations = atLeast(1);
-    for (int i = 0; i < numIterations; i++) {
-      doTestTermsEnumRandom(TestUtil.nextInt(random(), 1025, 5121), 10, 10);
-    }
-  }
-  
-  @Slow
-  public void testTermsEnumVariableWidth() throws Exception {
-    int numIterations = atLeast(1);
-    for (int i = 0; i < numIterations; i++) {
-      doTestTermsEnumRandom(TestUtil.nextInt(random(), 1025, 5121), 1, 500);
-    }
-  }
-  
-  @Nightly
-  public void testTermsEnumRandomMany() throws Exception {
-    int numIterations = atLeast(1);
-    for (int i = 0; i < numIterations; i++) {
-      doTestTermsEnumRandom(TestUtil.nextInt(random(), 1025, 8121), 1, 500);
-    }
-  }
-
-  @Slow
-  public void testSparseDocValuesVsStoredFields() throws Exception {
-    int numIterations = atLeast(1);
-    for (int i = 0; i < numIterations; i++) {
-      doTestSparseDocValuesVsStoredFields();
-    }
-  }
-
-  private void doTestSparseDocValuesVsStoredFields() throws Exception {
-    final long[] values = new long[TestUtil.nextInt(random(), 1, 500)];
-    for (int i = 0; i < values.length; ++i) {
-      values[i] = random().nextLong();
-    }
-
-    Directory dir = newFSDirectory(createTempDir());
-    IndexWriterConfig conf = newIndexWriterConfig(new MockAnalyzer(random()));
-    conf.setMergeScheduler(new SerialMergeScheduler());
-    RandomIndexWriter writer = new RandomIndexWriter(random(), dir, conf);
-
-    // sparse compression is only enabled if less than 1% of docs have a value
-    final int avgGap = 100;
-
-    final int numDocs = atLeast(200);
-    for (int i = random().nextInt(avgGap * 2); i >= 0; --i) {
-      writer.addDocument(new Document());
-    }
-    final int maxNumValuesPerDoc = random().nextBoolean() ? 1 : TestUtil.nextInt(random(), 2, 5);
-    for (int i = 0; i < numDocs; ++i) {
-      Document doc = new Document();
-
-      // single-valued
-      long docValue = values[random().nextInt(values.length)];
-      doc.add(new NumericDocValuesField("numeric", docValue));
-      doc.add(new SortedDocValuesField("sorted", new BytesRef(Long.toString(docValue))));
-      doc.add(new BinaryDocValuesField("binary", new BytesRef(Long.toString(docValue))));
-      doc.add(new StoredField("value", docValue));
-
-      // multi-valued
-      final int numValues = TestUtil.nextInt(random(), 1, maxNumValuesPerDoc);
-      for (int j = 0; j < numValues; ++j) {
-        docValue = values[random().nextInt(values.length)];
-        doc.add(new SortedNumericDocValuesField("sorted_numeric", docValue));
-        doc.add(new SortedSetDocValuesField("sorted_set", new BytesRef(Long.toString(docValue))));
-        doc.add(new StoredField("values", docValue));
-      }
-
-      writer.addDocument(doc);
-
-      // add a gap
-      for (int j = TestUtil.nextInt(random(), 0, avgGap * 2); j >= 0; --j) {
-        writer.addDocument(new Document());
-      }
-    }
-
-    if (random().nextBoolean()) {
-      writer.forceMerge(1);
-    }
-
-    final IndexReader indexReader = writer.getReader();
-    TestUtil.checkReader(indexReader);
-    writer.close();
-
-    for (LeafReaderContext context : indexReader.leaves()) {
-      final LeafReader reader = context.reader();
-      final NumericDocValues numeric = DocValues.getNumeric(reader, "numeric");
-
-      final SortedDocValues sorted = DocValues.getSorted(reader, "sorted");
-
-      final BinaryDocValues binary = DocValues.getBinary(reader, "binary");
-
-      final SortedNumericDocValues sortedNumeric = DocValues.getSortedNumeric(reader, "sorted_numeric");
-
-      final SortedSetDocValues sortedSet = DocValues.getSortedSet(reader, "sorted_set");
-
-      for (int i = 0; i < reader.maxDoc(); ++i) {
-        final Document doc = reader.document(i);
-        final IndexableField valueField = doc.getField("value");
-        final Long value = valueField == null ? null : valueField.numericValue().longValue();
-
-        if (value == null) {
-          assertTrue(numeric.docID() + " vs " + i, numeric.docID() < i);
-        } else {
-          assertEquals(i, numeric.nextDoc());
-          assertEquals(i, binary.nextDoc());
-          assertEquals(i, sorted.nextDoc());
-          assertEquals(value.longValue(), numeric.longValue());
-          assertTrue(sorted.ordValue() >= 0);
-          assertEquals(new BytesRef(Long.toString(value)), sorted.lookupOrd(sorted.ordValue()));
-          assertEquals(new BytesRef(Long.toString(value)), binary.binaryValue());
-        }
-
-        final IndexableField[] valuesFields = doc.getFields("values");
-        if (valuesFields.length == 0) {
-          assertTrue(sortedNumeric.docID() + " vs " + i, sortedNumeric.docID() < i);
-        } else {
-          final Set<Long> valueSet = new HashSet<>();
-          for (IndexableField sf : valuesFields) {
-            valueSet.add(sf.numericValue().longValue());
-          }
-
-          assertEquals(i, sortedNumeric.nextDoc());
-          assertEquals(valuesFields.length, sortedNumeric.docValueCount());
-          for (int j = 0; j < sortedNumeric.docValueCount(); ++j) {
-            assertTrue(valueSet.contains(sortedNumeric.nextValue()));
-          }
-          assertEquals(i, sortedSet.nextDoc());
-          int sortedSetCount = 0;
-          while (true) {
-            long ord = sortedSet.nextOrd();
-            if (ord == SortedSetDocValues.NO_MORE_ORDS) {
-              break;
-            }
-            assertTrue(valueSet.contains(Long.parseLong(sortedSet.lookupOrd(ord).utf8ToString())));
-            sortedSetCount++;
-          }
-          assertEquals(valueSet.size(), sortedSetCount);
-        }
-      }
-    }
-
-    indexReader.close();
-    dir.close();
-  }
-
-  // TODO: try to refactor this and some termsenum tests into the base class.
-  // to do this we need to fix the test class to get a DVF not a Codec so we can setup
-  // the postings format correctly.
-  private void doTestTermsEnumRandom(int numDocs, int minLength, int maxLength) throws Exception {
-    Directory dir = newFSDirectory(createTempDir());
-    IndexWriterConfig conf = newIndexWriterConfig(new MockAnalyzer(random()));
-    conf.setMergeScheduler(new SerialMergeScheduler());
-    // set to duel against a codec which has ordinals:
-    final PostingsFormat pf = TestUtil.getPostingsFormatWithOrds(random());
-    final DocValuesFormat dv = new Lucene54DocValuesFormat();
-    conf.setCodec(new AssertingCodec() {
-      @Override
-      public PostingsFormat getPostingsFormatForField(String field) {
-        return pf;
-      }
-
-      @Override
-      public DocValuesFormat getDocValuesFormatForField(String field) {
-        return dv;
-      }
-    });
-    RandomIndexWriter writer = new RandomIndexWriter(random(), dir, conf);
-    
-    // index some docs
-    for (int i = 0; i < numDocs; i++) {
-      Document doc = new Document();
-      Field idField = new StringField("id", Integer.toString(i), Field.Store.NO);
-      doc.add(idField);
-      final int length = TestUtil.nextInt(random(), minLength, maxLength);
-      int numValues = random().nextInt(17);
-      // create a random list of strings
-      List<String> values = new ArrayList<>();
-      for (int v = 0; v < numValues; v++) {
-        values.add(TestUtil.randomSimpleString(random(), minLength, length));
-      }
-      
-      // add in any order to the indexed field
-      ArrayList<String> unordered = new ArrayList<>(values);
-      Collections.shuffle(unordered, random());
-      for (String v : values) {
-        doc.add(newStringField("indexed", v, Field.Store.NO));
-      }
-
-      // add in any order to the dv field
-      ArrayList<String> unordered2 = new ArrayList<>(values);
-      Collections.shuffle(unordered2, random());
-      for (String v : unordered2) {
-        doc.add(new SortedSetDocValuesField("dv", new BytesRef(v)));
-      }
-
-      writer.addDocument(doc);
-      if (random().nextInt(31) == 0) {
-        writer.commit();
-      }
-    }
-    
-    // delete some docs
-    int numDeletions = random().nextInt(numDocs/10);
-    for (int i = 0; i < numDeletions; i++) {
-      int id = random().nextInt(numDocs);
-      writer.deleteDocuments(new Term("id", Integer.toString(id)));
-    }
-    
-    // compare per-segment
-    DirectoryReader ir = writer.getReader();
-    for (LeafReaderContext context : ir.leaves()) {
-      LeafReader r = context.reader();
-      Terms terms = r.terms("indexed");
-      if (terms != null) {
-        SortedSetDocValues ssdv = r.getSortedSetDocValues("dv");
-        assertEquals(terms.size(), ssdv.getValueCount());
-        TermsEnum expected = terms.iterator();
-        TermsEnum actual = r.getSortedSetDocValues("dv").termsEnum();
-        assertEquals(terms.size(), expected, actual);
-
-        doTestSortedSetEnumAdvanceIndependently(ssdv);
-      }
-    }
-    ir.close();
-    
-    writer.forceMerge(1);
-    
-    // now compare again after the merge
-    ir = writer.getReader();
-    LeafReader ar = getOnlyLeafReader(ir);
-    Terms terms = ar.terms("indexed");
-    if (terms != null) {
-      assertEquals(terms.size(), ar.getSortedSetDocValues("dv").getValueCount());
-      TermsEnum expected = terms.iterator();
-      TermsEnum actual = ar.getSortedSetDocValues("dv").termsEnum();
-      assertEquals(terms.size(), expected, actual);
-    }
-    ir.close();
-    
-    writer.close();
-    dir.close();
-  }
-  
-  private void assertEquals(long numOrds, TermsEnum expected, TermsEnum actual) throws Exception {
-    BytesRef ref;
-    
-    // sequential next() through all terms
-    while ((ref = expected.next()) != null) {
-      assertEquals(ref, actual.next());
-      assertEquals(expected.ord(), actual.ord());
-      assertEquals(expected.term(), actual.term());
-    }
-    assertNull(actual.next());
-    
-    // sequential seekExact(ord) through all terms
-    for (long i = 0; i < numOrds; i++) {
-      expected.seekExact(i);
-      actual.seekExact(i);
-      assertEquals(expected.ord(), actual.ord());
-      assertEquals(expected.term(), actual.term());
-    }
-    
-    // sequential seekExact(BytesRef) through all terms
-    for (long i = 0; i < numOrds; i++) {
-      expected.seekExact(i);
-      assertTrue(actual.seekExact(expected.term()));
-      assertEquals(expected.ord(), actual.ord());
-      assertEquals(expected.term(), actual.term());
-    }
-    
-    // sequential seekCeil(BytesRef) through all terms
-    for (long i = 0; i < numOrds; i++) {
-      expected.seekExact(i);
-      assertEquals(SeekStatus.FOUND, actual.seekCeil(expected.term()));
-      assertEquals(expected.ord(), actual.ord());
-      assertEquals(expected.term(), actual.term());
-    }
-    
-    // random seekExact(ord)
-    for (long i = 0; i < numOrds; i++) {
-      long randomOrd = TestUtil.nextLong(random(), 0, numOrds - 1);
-      expected.seekExact(randomOrd);
-      actual.seekExact(randomOrd);
-      assertEquals(expected.ord(), actual.ord());
-      assertEquals(expected.term(), actual.term());
-    }
-    
-    // random seekExact(BytesRef)
-    for (long i = 0; i < numOrds; i++) {
-      long randomOrd = TestUtil.nextLong(random(), 0, numOrds - 1);
-      expected.seekExact(randomOrd);
-      actual.seekExact(expected.term());
-      assertEquals(expected.ord(), actual.ord());
-      assertEquals(expected.term(), actual.term());
-    }
-    
-    // random seekCeil(BytesRef)
-    for (long i = 0; i < numOrds; i++) {
-      BytesRef target = new BytesRef(TestUtil.randomUnicodeString(random()));
-      SeekStatus expectedStatus = expected.seekCeil(target);
-      assertEquals(expectedStatus, actual.seekCeil(target));
-      if (expectedStatus != SeekStatus.END) {
-        assertEquals(expected.ord(), actual.ord());
-        assertEquals(expected.term(), actual.term());
-      }
-    }
-  }
-
-  public void testSparseLongValues() throws IOException {
-    final int iters = atLeast(5);
-    for (int iter = 0; iter < iters; ++iter) {
-      final int numDocs = TestUtil.nextInt(random(), 0, 100);
-      final int[] docIds = new int[numDocs];
-      final long[] values = new long[numDocs];
-      final int maxDoc;
-      if (numDocs == 0) {
-        maxDoc = 1 + random().nextInt(10);
-      } else {
-        docIds[0] = random().nextInt(10);
-        for (int i = 1; i < docIds.length; ++i) {
-          docIds[i] = docIds[i - 1] + 1 + random().nextInt(100);
-        }
-        maxDoc = docIds[numDocs - 1] + 1 + random().nextInt(10);
-      }
-      for (int i = 0; i < values.length; ++i) {
-        values[i] = random().nextLong();
-      }
-      final long missingValue = random().nextLong();
-      final LongValues docIdsValues = new LongValues() {
-        @Override
-        public long get(long index) {
-          return docIds[Math.toIntExact(index)];
-        }
-      };
-      final LongValues valuesValues = new LongValues() {
-        @Override
-        public long get(long index) {
-          return values[Math.toIntExact(index)];
-        }
-      };
-      final SparseNumericDocValues sparseValues = new SparseNumericDocValues(numDocs, docIdsValues, valuesValues);
-
-      // sequential access
-      assertEquals(-1, sparseValues.docID());
-      for (int i = 0; i < docIds.length; ++i) {
-        assertEquals(docIds[i], sparseValues.nextDoc());
-      }
-      assertEquals(DocIdSetIterator.NO_MORE_DOCS, sparseValues.nextDoc());
-
-      // advance
-      for (int i = 0; i < 2000; ++i) {
-        final int target = TestUtil.nextInt(random(), 0, maxDoc);
-        int index = Arrays.binarySearch(docIds, target);
-        if (index < 0) {
-          index = -1 - index;
-        }
-        sparseValues.reset();
-        if (index > 0) {
-          assertEquals(docIds[index - 1], sparseValues.advance(Math.toIntExact(docIds[index - 1])));
-        }
-        if (index == docIds.length) {
-          assertEquals(DocIdSetIterator.NO_MORE_DOCS, sparseValues.advance(target));
-        } else {
-          assertEquals(docIds[index], sparseValues.advance(target));
-        }
-      }
-
-      // advanceExact
-      for (int i = 0; i < 2000; ++i) {
-        sparseValues.reset();
-        if (random().nextBoolean() && docIds.length > 0) {
-          sparseValues.advance(docIds[TestUtil.nextInt(random(), 0, docIds.length - 1)]);
-        }
-
-        final int target = TestUtil.nextInt(random(), Math.max(0, sparseValues.docID()), maxDoc - 1);
-        final boolean exists = sparseValues.advanceExact(target);
-        
-        final int index = Arrays.binarySearch(docIds, target);
-        assertEquals(index >= 0, exists);
-        assertEquals(target, sparseValues.docID());
-
-        final boolean exists2 = sparseValues.advanceExact(target);
-        assertEquals(index >= 0, exists2);
-        assertEquals(target, sparseValues.docID());
-
-        final int nextIndex = index >= 0 ? index + 1 : -1 - index;
-        if (nextIndex >= docIds.length) {
-          assertEquals(DocIdSetIterator.NO_MORE_DOCS, sparseValues.nextDoc());
-        } else {
-          assertEquals(docIds[nextIndex], sparseValues.nextDoc());
-        }
-      }
-      
-
-      final SparseNumericDocValuesRandomAccessWrapper raWrapper = new SparseNumericDocValuesRandomAccessWrapper(sparseValues, missingValue);
-
-      // random-access
-      for (int i = 0; i < 2000; ++i) {
-        final int docId = TestUtil.nextInt(random(), 0, maxDoc - 1);
-        final int idx = Arrays.binarySearch(docIds, docId);
-        final long value = raWrapper.get(docId);
-        if (idx >= 0) {
-          assertEquals(values[idx], value);
-        } else {
-          assertEquals(missingValue, value);
-        }
-      }
-
-      // sequential access
-      for (int docId = 0; docId < maxDoc; docId += random().nextInt(3)) {
-        final int idx = Arrays.binarySearch(docIds, docId);
-        final long value = raWrapper.get(docId);
-        if (idx >= 0) {
-          assertEquals(values[idx], value);
-        } else {
-          assertEquals(missingValue, value);
-        }
-      }
-    }
-  }
-
-  @Slow
-  public void testSortedSetAroundBlockSize() throws IOException {
-    final int frontier = 1 << Lucene54DocValuesFormat.DIRECT_MONOTONIC_BLOCK_SHIFT;
-    for (int maxDoc = frontier - 1; maxDoc <= frontier + 1; ++maxDoc) {
-      final Directory dir = newDirectory();
-      IndexWriter w = new IndexWriter(dir, newIndexWriterConfig().setMergePolicy(newLogMergePolicy()));
-      RAMFile buffer = new RAMFile();
-      RAMOutputStream out = new RAMOutputStream(buffer, false);
-      Document doc = new Document();
-      SortedSetDocValuesField field1 = new SortedSetDocValuesField("sset", new BytesRef());
-      doc.add(field1);
-      SortedSetDocValuesField field2 = new SortedSetDocValuesField("sset", new BytesRef());
-      doc.add(field2);
-      for (int i = 0; i < maxDoc; ++i) {
-        BytesRef s1 = new BytesRef(TestUtil.randomSimpleString(random(), 2));
-        BytesRef s2 = new BytesRef(TestUtil.randomSimpleString(random(), 2));
-        field1.setBytesValue(s1);
-        field2.setBytesValue(s2);
-        w.addDocument(doc);
-        Set<BytesRef> set = new TreeSet<>(Arrays.asList(s1, s2));
-        out.writeVInt(set.size());
-        for (BytesRef ref : set) {
-          out.writeVInt(ref.length);
-          out.writeBytes(ref.bytes, ref.offset, ref.length);
-        }
-      }
-      out.close();
-      w.forceMerge(1);
-      DirectoryReader r = DirectoryReader.open(w);
-      w.close();
-      LeafReader sr = getOnlyLeafReader(r);
-      assertEquals(maxDoc, sr.maxDoc());
-      SortedSetDocValues values = sr.getSortedSetDocValues("sset");
-      assertNotNull(values);
-      RAMInputStream in = new RAMInputStream("", buffer);
-      BytesRefBuilder b = new BytesRefBuilder();
-      for (int i = 0; i < maxDoc; ++i) {
-        assertEquals(i, values.nextDoc());
-        final int numValues = in.readVInt();
-
-        for (int j = 0; j < numValues; ++j) {
-          b.setLength(in.readVInt());
-          b.grow(b.length());
-          in.readBytes(b.bytes(), 0, b.length());
-          assertEquals(b.get(), values.lookupOrd(values.nextOrd()));
-        }
-
-        assertEquals(SortedSetDocValues.NO_MORE_ORDS, values.nextOrd());
-      }
-      r.close();
-      dir.close();
-    }
-  }
-
-  @Slow
-  public void testSortedNumericAroundBlockSize() throws IOException {
-    final int frontier = 1 << Lucene54DocValuesFormat.DIRECT_MONOTONIC_BLOCK_SHIFT;
-    for (int maxDoc = frontier - 1; maxDoc <= frontier + 1; ++maxDoc) {
-      final Directory dir = newDirectory();
-      IndexWriter w = new IndexWriter(dir, newIndexWriterConfig().setMergePolicy(newLogMergePolicy()));
-      RAMFile buffer = new RAMFile();
-      RAMOutputStream out = new RAMOutputStream(buffer, false);
-      Document doc = new Document();
-      SortedNumericDocValuesField field1 = new SortedNumericDocValuesField("snum", 0L);
-      doc.add(field1);
-      SortedNumericDocValuesField field2 = new SortedNumericDocValuesField("snum", 0L);
-      doc.add(field2);
-      for (int i = 0; i < maxDoc; ++i) {
-        long s1 = random().nextInt(100);
-        long s2 = random().nextInt(100);
-        field1.setLongValue(s1);
-        field2.setLongValue(s2);
-        w.addDocument(doc);
-        out.writeVLong(Math.min(s1, s2));
-        out.writeVLong(Math.max(s1, s2));
-      }
-      out.close();
-      w.forceMerge(1);
-      DirectoryReader r = DirectoryReader.open(w);
-      w.close();
-      LeafReader sr = getOnlyLeafReader(r);
-      assertEquals(maxDoc, sr.maxDoc());
-      SortedNumericDocValues values = sr.getSortedNumericDocValues("snum");
-      assertNotNull(values);
-      RAMInputStream in = new RAMInputStream("", buffer);
-      for (int i = 0; i < maxDoc; ++i) {
-        assertEquals(i, values.nextDoc());
-        assertEquals(2, values.docValueCount());
-        assertEquals(in.readVLong(), values.nextValue());
-        assertEquals(in.readVLong(), values.nextValue());
-      }
-      r.close();
-      dir.close();
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/core/src/java/org/apache/lucene/index/IndexFormatTooOldException.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexFormatTooOldException.java b/lucene/core/src/java/org/apache/lucene/index/IndexFormatTooOldException.java
index b7c02f5..1fd7953 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexFormatTooOldException.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexFormatTooOldException.java
@@ -42,7 +42,7 @@ public class IndexFormatTooOldException extends IOException {
    * @lucene.internal */
   public IndexFormatTooOldException(String resourceDescription, String reason) {
     super("Format version is not supported (resource " + resourceDescription + "): " +
-        reason + ". This version of Lucene only supports indexes created with release 6.0 and later.");
+        reason + ". This version of Lucene only supports indexes created with release 7.0 and later.");
     this.resourceDescription = resourceDescription;
     this.reason = reason;
     this.version = null;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/core/src/java/org/apache/lucene/util/Version.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/Version.java b/lucene/core/src/java/org/apache/lucene/util/Version.java
index 0b10d95..634caee 100644
--- a/lucene/core/src/java/org/apache/lucene/util/Version.java
+++ b/lucene/core/src/java/org/apache/lucene/util/Version.java
@@ -39,62 +39,6 @@ public final class Version {
   public static final Version LUCENE_6_0_0 = new Version(6, 0, 0);
 
   /**
-   * Match settings and bugs in Lucene's 6.0.1 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_0_1 = new Version(6, 0, 1);
-
-  /**
-   * Match settings and bugs in Lucene's 6.1.0 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_1_0 = new Version(6, 1, 0);
-
-  /**
-   * Match settings and bugs in Lucene's 6.2.0 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_2_0 = new Version(6, 2, 0);
-
-  /**
-   * Match settings and bugs in Lucene's 6.2.1 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_2_1 = new Version(6, 2, 1);
-
-  /**
-   * Match settings and bugs in Lucene's 6.3.0 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_3_0 = new Version(6, 3, 0);
-
-  /**
-   * Match settings and bugs in Lucene's 6.4.0 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_4_0 = new Version(6, 4, 0);
-
-  /**
-   * Match settings and bugs in Lucene's 6.4.1 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_4_1 = new Version(6, 4, 1);
-
-  /**
-   * Match settings and bugs in Lucene's 6.4.2 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_4_2 = new Version(6, 4, 2);
-
-  /**
    * Match settings and bugs in Lucene's 6.5.0 release.
    * @deprecated Use latest
    */
@@ -102,27 +46,6 @@ public final class Version {
   public static final Version LUCENE_6_5_0 = new Version(6, 5, 0);
 
   /**
-   * Match settings and bugs in Lucene's 6.5.1 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_5_1 = new Version(6, 5, 1);
-
-  /**
-   * Match settings and bugs in Lucene's 6.6.0 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_6_0 = new Version(6, 6, 0);
-
-  /**
-   * Match settings and bugs in Lucene's 6.7.0 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_7_0 = new Version(6, 7, 0);
-
-  /**
    * Match settings and bugs in Lucene's 7.0.0 release.
    * @deprecated (8.0.0) Use latest
    */

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/core/src/test/org/apache/lucene/util/TestVersion.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestVersion.java b/lucene/core/src/test/org/apache/lucene/util/TestVersion.java
index 673aaae..cc30a5d 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestVersion.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestVersion.java
@@ -32,25 +32,26 @@ public class TestVersion extends LuceneTestCase {
         assertTrue("LATEST must be always onOrAfter("+v+")", Version.LATEST.onOrAfter(v));
       }
     }
-    assertTrue(Version.LUCENE_7_0_0.onOrAfter(Version.LUCENE_6_0_0));;
+    assertTrue(Version.LUCENE_8_0_0.onOrAfter(Version.LUCENE_7_0_0));;
   }
 
   public void testToString() {
-    assertEquals("6.0.0", Version.LUCENE_6_0_0.toString());
     assertEquals("7.0.0", Version.LUCENE_7_0_0.toString());
+    assertEquals("8.0.0", Version.LUCENE_8_0_0.toString());
   }
 
   public void testParseLeniently() throws Exception {
-    assertEquals(Version.LUCENE_6_0_0, Version.parseLeniently("6.0"));
-    assertEquals(Version.LUCENE_6_0_0, Version.parseLeniently("6.0.0"));
-    assertEquals(Version.LUCENE_6_0_0, Version.parseLeniently("LUCENE_60"));
-    assertEquals(Version.LUCENE_6_0_0, Version.parseLeniently("LUCENE_6_0"));
-    assertEquals(Version.LUCENE_6_0_0, Version.parseLeniently("LUCENE_6_0_0"));
     assertEquals(Version.LUCENE_7_0_0, Version.parseLeniently("7.0"));
     assertEquals(Version.LUCENE_7_0_0, Version.parseLeniently("7.0.0"));
     assertEquals(Version.LUCENE_7_0_0, Version.parseLeniently("LUCENE_70"));
     assertEquals(Version.LUCENE_7_0_0, Version.parseLeniently("LUCENE_7_0"));
     assertEquals(Version.LUCENE_7_0_0, Version.parseLeniently("LUCENE_7_0_0"));
+    assertEquals(Version.LUCENE_8_0_0, Version.parseLeniently("8.0"));
+    assertEquals(Version.LUCENE_8_0_0, Version.parseLeniently("8.0.0"));
+    assertEquals(Version.LUCENE_8_0_0, Version.parseLeniently("LUCENE_80"));
+    assertEquals(Version.LUCENE_8_0_0, Version.parseLeniently("LUCENE_8_0"));
+    assertEquals(Version.LUCENE_8_0_0, Version.parseLeniently("LUCENE_8_0_0"));
+
     assertEquals(Version.LATEST, Version.parseLeniently("LATEST"));
     assertEquals(Version.LATEST, Version.parseLeniently("latest"));
     assertEquals(Version.LATEST, Version.parseLeniently("LUCENE_CURRENT"));
@@ -74,9 +75,9 @@ public class TestVersion extends LuceneTestCase {
     assertTrue(expected.getMessage().contains("LUCENE61"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parseLeniently("LUCENE_6.0.0");
+      Version.parseLeniently("LUCENE_7.0.0");
     });
-    assertTrue(expected.getMessage().contains("LUCENE_6.0.0"));
+    assertTrue(expected.getMessage().contains("LUCENE_7.0.0"));
   }
 
   public void testParseLenientlyOnAllConstants() throws Exception {
@@ -94,8 +95,8 @@ public class TestVersion extends LuceneTestCase {
   }
 
   public void testParse() throws Exception {
-    assertEquals(Version.LUCENE_6_0_0, Version.parse("6.0.0"));
     assertEquals(Version.LUCENE_7_0_0, Version.parse("7.0.0"));
+    assertEquals(Version.LUCENE_8_0_0, Version.parse("8.0.0"));
     
     // Version does not pass judgement on the major version:
     assertEquals(1, Version.parse("1.0").major);
@@ -103,69 +104,69 @@ public class TestVersion extends LuceneTestCase {
   }
 
   public void testForwardsCompatibility() throws Exception {
-    assertTrue(Version.parse("6.10.20").onOrAfter(Version.LUCENE_6_0_0));
+    assertTrue(Version.parse("7.10.20").onOrAfter(Version.LUCENE_7_0_0));
   }
 
   public void testParseExceptions() {
     ParseException expected = expectThrows(ParseException.class, () -> {
-      Version.parse("LUCENE_6_0_0");
+      Version.parse("LUCENE_7_0_0");
     });
-    assertTrue(expected.getMessage().contains("LUCENE_6_0_0"));
+    assertTrue(expected.getMessage().contains("LUCENE_7_0_0"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parse("6.256");
+      Version.parse("7.256");
     });
-    assertTrue(expected.getMessage().contains("6.256"));
+    assertTrue(expected.getMessage().contains("7.256"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parse("6.-1");
+      Version.parse("7.-1");
     });
-    assertTrue(expected.getMessage().contains("6.-1"));
+    assertTrue(expected.getMessage().contains("7.-1"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parse("6.1.256");
+      Version.parse("7.1.256");
     });
-    assertTrue(expected.getMessage().contains("6.1.256"));
+    assertTrue(expected.getMessage().contains("7.1.256"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parse("6.1.-1");
+      Version.parse("7.1.-1");
     });
-    assertTrue(expected.getMessage().contains("6.1.-1"));
+    assertTrue(expected.getMessage().contains("7.1.-1"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parse("6.1.1.3");
+      Version.parse("7.1.1.3");
     });
-    assertTrue(expected.getMessage().contains("6.1.1.3"));
+    assertTrue(expected.getMessage().contains("7.1.1.3"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parse("6.1.1.-1");
+      Version.parse("7.1.1.-1");
     });
-    assertTrue(expected.getMessage().contains("6.1.1.-1"));
+    assertTrue(expected.getMessage().contains("7.1.1.-1"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parse("6.1.1.1");
+      Version.parse("7.1.1.1");
     });
-    assertTrue(expected.getMessage().contains("6.1.1.1"));
+    assertTrue(expected.getMessage().contains("7.1.1.1"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parse("6.1.1.2");
+      Version.parse("7.1.1.2");
     });
-    assertTrue(expected.getMessage().contains("6.1.1.2"));
+    assertTrue(expected.getMessage().contains("7.1.1.2"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parse("6.0.0.0");
+      Version.parse("7.0.0.0");
     });
-    assertTrue(expected.getMessage().contains("6.0.0.0"));
+    assertTrue(expected.getMessage().contains("7.0.0.0"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parse("6.0.0.1.42");
+      Version.parse("7.0.0.1.42");
     });
-    assertTrue(expected.getMessage().contains("6.0.0.1.42"));
+    assertTrue(expected.getMessage().contains("7.0.0.1.42"));
 
     expected = expectThrows(ParseException.class, () -> {
-      Version.parse("6..0.1");
+      Version.parse("7..0.1");
     });
-    assertTrue(expected.getMessage().contains("6..0.1"));
+    assertTrue(expected.getMessage().contains("7..0.1"));
   }
   
   public void testDeprecations() throws Exception {


[39/53] [abbrv] lucene-solr:feature/autoscaling: LUCENE-5822: Remove python binary temp artifact

Posted by sh...@apache.org.
LUCENE-5822: Remove python binary temp artifact


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/80ae5e29
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/80ae5e29
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/80ae5e29

Branch: refs/heads/feature/autoscaling
Commit: 80ae5e29d57ef8b9c3cf382cf2e1676126f5b13d
Parents: 7b322bd
Author: Uwe Schindler <us...@apache.org>
Authored: Sun Jul 2 12:32:09 2017 +0200
Committer: Uwe Schindler <us...@apache.org>
Committed: Sun Jul 2 12:32:09 2017 +0200

----------------------------------------------------------------------
 dev-tools/scripts/.smokeTestRelease.py.swp | Bin 16384 -> 0 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/80ae5e29/dev-tools/scripts/.smokeTestRelease.py.swp
----------------------------------------------------------------------
diff --git a/dev-tools/scripts/.smokeTestRelease.py.swp b/dev-tools/scripts/.smokeTestRelease.py.swp
deleted file mode 100644
index 3c5acb1..0000000
Binary files a/dev-tools/scripts/.smokeTestRelease.py.swp and /dev/null differ


[38/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-6671: Fix precommit and use the Lucene-Constant to detect Windows. Also allow other local drives!

Posted by sh...@apache.org.
SOLR-6671: Fix precommit and use the Lucene-Constant to detect Windows. Also allow other local drives!


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/7b322bd6
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/7b322bd6
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/7b322bd6

Branch: refs/heads/feature/autoscaling
Commit: 7b322bd67e5a3a9c7f9ecf165d89da60c3767fbd
Parents: 8000b25
Author: Uwe Schindler <us...@apache.org>
Authored: Sun Jul 2 11:44:10 2017 +0200
Committer: Uwe Schindler <us...@apache.org>
Committed: Sun Jul 2 11:44:10 2017 +0200

----------------------------------------------------------------------
 .../src/test/org/apache/solr/core/DirectoryFactoryTest.java | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7b322bd6/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java b/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
index 35bb09b..2c2ddd9 100755
--- a/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
@@ -20,19 +20,17 @@ import java.io.IOException;
 import java.nio.file.Paths;
 import java.util.Properties;
 
-import org.apache.commons.exec.OS;
+import org.apache.lucene.util.Constants;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.handler.admin.CoreAdminHandler;
 import org.apache.solr.handler.component.HttpShardHandlerFactory;
-import org.apache.solr.util.MockCoreContainer;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
 public class DirectoryFactoryTest extends LuceneTestCase {
 
-  private static boolean IS_WINDOWS = (OS.isFamilyDOS() || OS.isFamilyWin9x() || OS.isFamilyWindows());
   public void testLockTypesUnchanged() throws Exception {
     assertEquals("simple", DirectoryFactory.LOCK_TYPE_SIMPLE);
     assertEquals("native", DirectoryFactory.LOCK_TYPE_NATIVE);
@@ -76,8 +74,9 @@ public class DirectoryFactoryTest extends LuceneTestCase {
 
   private void assertDataHome(String expected, String instanceDir, RAMDirectoryFactory rdf, MockCoreContainer cc, String... properties) throws IOException {
     String dataHome = rdf.getDataHome(new CoreDescriptor("core_name", Paths.get(instanceDir), cc.containerProperties, cc.isZooKeeperAware(), properties));
-    if (IS_WINDOWS) {
-      dataHome = dataHome.replaceFirst("^C:", "").replaceAll("\\\\","/");
+    if (Constants.WINDOWS) {
+      // TODO: find a less-hacky way to assert this!
+      dataHome = dataHome.replaceFirst("^[A-Z]:", "").replace("\\", "/");
     }
     assertEquals(expected, dataHome);
   }


[42/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-6671: More generic fix to assert Solr's dataHome

Posted by sh...@apache.org.
SOLR-6671: More generic fix to assert Solr's dataHome


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/20dcb56d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/20dcb56d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/20dcb56d

Branch: refs/heads/feature/autoscaling
Commit: 20dcb56da85accabd8e32b41afaca71707797ade
Parents: eaf1d45
Author: Uwe Schindler <us...@apache.org>
Authored: Mon Jul 3 08:15:54 2017 +0200
Committer: Uwe Schindler <us...@apache.org>
Committed: Mon Jul 3 08:15:54 2017 +0200

----------------------------------------------------------------------
 .../src/test/org/apache/solr/core/DirectoryFactoryTest.java   | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/20dcb56d/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java b/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
index 2c2ddd9..aa00342 100755
--- a/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/core/DirectoryFactoryTest.java
@@ -20,7 +20,6 @@ import java.io.IOException;
 import java.nio.file.Paths;
 import java.util.Properties;
 
-import org.apache.lucene.util.Constants;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.handler.admin.CoreAdminHandler;
@@ -74,11 +73,7 @@ public class DirectoryFactoryTest extends LuceneTestCase {
 
   private void assertDataHome(String expected, String instanceDir, RAMDirectoryFactory rdf, MockCoreContainer cc, String... properties) throws IOException {
     String dataHome = rdf.getDataHome(new CoreDescriptor("core_name", Paths.get(instanceDir), cc.containerProperties, cc.isZooKeeperAware(), properties));
-    if (Constants.WINDOWS) {
-      // TODO: find a less-hacky way to assert this!
-      dataHome = dataHome.replaceFirst("^[A-Z]:", "").replace("\\", "/");
-    }
-    assertEquals(expected, dataHome);
+    assertEquals(Paths.get(expected).toAbsolutePath(), Paths.get(dataHome).toAbsolutePath());
   }
 
 


[13/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10272: Adding user _default configset to test-files, fixing solr & solr.cmd script bugs

Posted by sh...@apache.org.
SOLR-10272: Adding user _default configset to test-files, fixing solr & solr.cmd script bugs


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/85069cac
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/85069cac
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/85069cac

Branch: refs/heads/feature/autoscaling
Commit: 85069cacf40e757b3eb4d4d211b1783faf800bc5
Parents: 8f71bb4
Author: Ishan Chattopadhyaya <is...@apache.org>
Authored: Thu Jun 29 10:46:14 2017 +0530
Committer: Ishan Chattopadhyaya <is...@apache.org>
Committed: Thu Jun 29 10:46:14 2017 +0530

----------------------------------------------------------------------
 solr/bin/solr                                   |   12 +-
 solr/bin/solr.cmd                               |    4 +-
 .../solr/configsets/_default/conf/currency.xml  |   67 +
 .../solr/configsets/_default/conf/elevate.xml   |   42 +
 .../_default/conf/lang/contractions_ca.txt      |    8 +
 .../_default/conf/lang/contractions_fr.txt      |   15 +
 .../_default/conf/lang/contractions_ga.txt      |    5 +
 .../_default/conf/lang/contractions_it.txt      |   23 +
 .../_default/conf/lang/hyphenations_ga.txt      |    5 +
 .../_default/conf/lang/stemdict_nl.txt          |    6 +
 .../_default/conf/lang/stoptags_ja.txt          |  420 ++++++
 .../_default/conf/lang/stopwords_ar.txt         |  125 ++
 .../_default/conf/lang/stopwords_bg.txt         |  193 +++
 .../_default/conf/lang/stopwords_ca.txt         |  220 +++
 .../_default/conf/lang/stopwords_cz.txt         |  172 +++
 .../_default/conf/lang/stopwords_da.txt         |  110 ++
 .../_default/conf/lang/stopwords_de.txt         |  294 ++++
 .../_default/conf/lang/stopwords_el.txt         |   78 +
 .../_default/conf/lang/stopwords_en.txt         |   54 +
 .../_default/conf/lang/stopwords_es.txt         |  356 +++++
 .../_default/conf/lang/stopwords_eu.txt         |   99 ++
 .../_default/conf/lang/stopwords_fa.txt         |  313 ++++
 .../_default/conf/lang/stopwords_fi.txt         |   97 ++
 .../_default/conf/lang/stopwords_fr.txt         |  186 +++
 .../_default/conf/lang/stopwords_ga.txt         |  110 ++
 .../_default/conf/lang/stopwords_gl.txt         |  161 +++
 .../_default/conf/lang/stopwords_hi.txt         |  235 +++
 .../_default/conf/lang/stopwords_hu.txt         |  211 +++
 .../_default/conf/lang/stopwords_hy.txt         |   46 +
 .../_default/conf/lang/stopwords_id.txt         |  359 +++++
 .../_default/conf/lang/stopwords_it.txt         |  303 ++++
 .../_default/conf/lang/stopwords_ja.txt         |  127 ++
 .../_default/conf/lang/stopwords_lv.txt         |  172 +++
 .../_default/conf/lang/stopwords_nl.txt         |  119 ++
 .../_default/conf/lang/stopwords_no.txt         |  194 +++
 .../_default/conf/lang/stopwords_pt.txt         |  253 ++++
 .../_default/conf/lang/stopwords_ro.txt         |  233 +++
 .../_default/conf/lang/stopwords_ru.txt         |  243 ++++
 .../_default/conf/lang/stopwords_sv.txt         |  133 ++
 .../_default/conf/lang/stopwords_th.txt         |  119 ++
 .../_default/conf/lang/stopwords_tr.txt         |  212 +++
 .../_default/conf/lang/userdict_ja.txt          |   29 +
 .../configsets/_default/conf/managed-schema     | 1076 ++++++++++++++
 .../solr/configsets/_default/conf/params.json   |   20 +
 .../solr/configsets/_default/conf/protwords.txt |   21 +
 .../solr/configsets/_default/conf/schema.xml    |   37 -
 .../configsets/_default/conf/solrconfig.xml     | 1355 +++++++++++++++++-
 .../solr/configsets/_default/conf/stopwords.txt |   14 +
 .../solr/configsets/_default/conf/synonyms.txt  |   29 +
 .../solr/cloud/CollectionsAPISolrJTest.java     |   27 +-
 .../apache/solr/cloud/TestConfigSetsAPI.java    |   45 +
 51 files changed, 8729 insertions(+), 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/bin/solr
----------------------------------------------------------------------
diff --git a/solr/bin/solr b/solr/bin/solr
index cd27fda..c9aad2f 100755
--- a/solr/bin/solr
+++ b/solr/bin/solr
@@ -943,12 +943,14 @@ if [[ "$SCRIPT_CMD" == "create" || "$SCRIPT_CMD" == "create_core" || "$SCRIPT_CM
     done
   fi
 
+  if [ -z "$CREATE_CONFDIR" ]; then
+    CREATE_CONFDIR='_default'
+  fi
+  
   # validate the confdir arg (if provided)
-  if ! [ -z "$CREATE_CONFDIR" ]; then
-    if [[ ! -d "$SOLR_TIP/server/solr/configsets/$CREATE_CONFDIR" && ! -d "$CREATE_CONFDIR" ]]; then
-      echo -e "\nSpecified configuration directory $CREATE_CONFDIR not found!\n"
-      exit 1
-    fi
+  if [[ ! -d "$SOLR_TIP/server/solr/configsets/$CREATE_CONFDIR" && ! -d "$CREATE_CONFDIR" ]]; then
+    echo -e "\nSpecified configuration directory $CREATE_CONFDIR not found!\n"
+    exit 1
   fi
 
   if [ -z "$CREATE_NAME" ]; then

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/bin/solr.cmd
----------------------------------------------------------------------
diff --git a/solr/bin/solr.cmd b/solr/bin/solr.cmd
index 99bd815..b268f90 100644
--- a/solr/bin/solr.cmd
+++ b/solr/bin/solr.cmd
@@ -1404,8 +1404,10 @@ IF "!CREATE_NAME!"=="" (
   set "SCRIPT_ERROR=Name (-c) is a required parameter for %SCRIPT_CMD%"
   goto invalid_cmd_line
 )
+IF "!CREATE_CONFDIR!"=="" set CREATE_CONFDIR=_default
 IF "!CREATE_NUM_SHARDS!"=="" set CREATE_NUM_SHARDS=1
 IF "!CREATE_REPFACT!"=="" set CREATE_REPFACT=1
+IF "!CREATE_CONFNAME!"=="" set CREATE_CONFNAME=!CREATE_NAME!
 
 REM Find a port that Solr is running on
 if "!CREATE_PORT!"=="" (
@@ -1431,7 +1433,7 @@ if "%SCRIPT_CMD%"=="create_core" (
     org.apache.solr.util.SolrCLI create_core -name !CREATE_NAME! -solrUrl !SOLR_URL_SCHEME!://%SOLR_TOOL_HOST%:!CREATE_PORT!/solr ^
     -confdir !CREATE_CONFDIR! -configsetsDir "%SOLR_TIP%\server\solr\configsets"
 ) else (
-+  "%JAVA%" %SOLR_SSL_OPTS% %AUTHC_OPTS% %SOLR_ZK_CREDS_AND_ACLS% -Dsolr.install.dir="%SOLR_TIP%" -Dsolr.default.confdir="%DEFAULT_CONFDIR%"^
+  "%JAVA%" %SOLR_SSL_OPTS% %AUTHC_OPTS% %SOLR_ZK_CREDS_AND_ACLS% -Dsolr.install.dir="%SOLR_TIP%" -Dsolr.default.confdir="%DEFAULT_CONFDIR%"^
     -Dlog4j.configuration="file:%DEFAULT_SERVER_DIR%\scripts\cloud-scripts\log4j.properties" ^
     -classpath "%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*;%DEFAULT_SERVER_DIR%\lib\ext\*" ^
     org.apache.solr.util.SolrCLI create -name !CREATE_NAME! -shards !CREATE_NUM_SHARDS! -replicationFactor !CREATE_REPFACT! ^

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/currency.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/currency.xml b/solr/core/src/test-files/solr/configsets/_default/conf/currency.xml
new file mode 100644
index 0000000..532221a
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/currency.xml
@@ -0,0 +1,67 @@
+<?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.
+-->
+
+<!-- Example exchange rates file for CurrencyFieldType named "currency" in example schema -->
+
+<currencyConfig version="1.0">
+  <rates>
+    <!-- Updated from http://www.exchangerate.com/ at 2011-09-27 -->
+    <rate from="USD" to="ARS" rate="4.333871" comment="ARGENTINA Peso" />
+    <rate from="USD" to="AUD" rate="1.025768" comment="AUSTRALIA Dollar" />
+    <rate from="USD" to="EUR" rate="0.743676" comment="European Euro" />
+    <rate from="USD" to="BRL" rate="1.881093" comment="BRAZIL Real" />
+    <rate from="USD" to="CAD" rate="1.030815" comment="CANADA Dollar" />
+    <rate from="USD" to="CLP" rate="519.0996" comment="CHILE Peso" />
+    <rate from="USD" to="CNY" rate="6.387310" comment="CHINA Yuan" />
+    <rate from="USD" to="CZK" rate="18.47134" comment="CZECH REP. Koruna" />
+    <rate from="USD" to="DKK" rate="5.515436" comment="DENMARK Krone" />
+    <rate from="USD" to="HKD" rate="7.801922" comment="HONG KONG Dollar" />
+    <rate from="USD" to="HUF" rate="215.6169" comment="HUNGARY Forint" />
+    <rate from="USD" to="ISK" rate="118.1280" comment="ICELAND Krona" />
+    <rate from="USD" to="INR" rate="49.49088" comment="INDIA Rupee" />
+    <rate from="USD" to="XDR" rate="0.641358" comment="INTNL MON. FUND SDR" />
+    <rate from="USD" to="ILS" rate="3.709739" comment="ISRAEL Sheqel" />
+    <rate from="USD" to="JPY" rate="76.32419" comment="JAPAN Yen" />
+    <rate from="USD" to="KRW" rate="1169.173" comment="KOREA (SOUTH) Won" />
+    <rate from="USD" to="KWD" rate="0.275142" comment="KUWAIT Dinar" />
+    <rate from="USD" to="MXN" rate="13.85895" comment="MEXICO Peso" />
+    <rate from="USD" to="NZD" rate="1.285159" comment="NEW ZEALAND Dollar" />
+    <rate from="USD" to="NOK" rate="5.859035" comment="NORWAY Krone" />
+    <rate from="USD" to="PKR" rate="87.57007" comment="PAKISTAN Rupee" />
+    <rate from="USD" to="PEN" rate="2.730683" comment="PERU Sol" />
+    <rate from="USD" to="PHP" rate="43.62039" comment="PHILIPPINES Peso" />
+    <rate from="USD" to="PLN" rate="3.310139" comment="POLAND Zloty" />
+    <rate from="USD" to="RON" rate="3.100932" comment="ROMANIA Leu" />
+    <rate from="USD" to="RUB" rate="32.14663" comment="RUSSIA Ruble" />
+    <rate from="USD" to="SAR" rate="3.750465" comment="SAUDI ARABIA Riyal" />
+    <rate from="USD" to="SGD" rate="1.299352" comment="SINGAPORE Dollar" />
+    <rate from="USD" to="ZAR" rate="8.329761" comment="SOUTH AFRICA Rand" />
+    <rate from="USD" to="SEK" rate="6.883442" comment="SWEDEN Krona" />
+    <rate from="USD" to="CHF" rate="0.906035" comment="SWITZERLAND Franc" />
+    <rate from="USD" to="TWD" rate="30.40283" comment="TAIWAN Dollar" />
+    <rate from="USD" to="THB" rate="30.89487" comment="THAILAND Baht" />
+    <rate from="USD" to="AED" rate="3.672955" comment="U.A.E. Dirham" />
+    <rate from="USD" to="UAH" rate="7.988582" comment="UKRAINE Hryvnia" />
+    <rate from="USD" to="GBP" rate="0.647910" comment="UNITED KINGDOM Pound" />
+    
+    <!-- Cross-rates for some common currencies -->
+    <rate from="EUR" to="GBP" rate="0.869914" />  
+    <rate from="EUR" to="NOK" rate="7.800095" />  
+    <rate from="GBP" to="NOK" rate="8.966508" />  
+  </rates>
+</currencyConfig>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/elevate.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/elevate.xml b/solr/core/src/test-files/solr/configsets/_default/conf/elevate.xml
new file mode 100644
index 0000000..2c09ebe
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/elevate.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ 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.
+-->
+
+<!-- If this file is found in the config directory, it will only be
+     loaded once at startup.  If it is found in Solr's data
+     directory, it will be re-loaded every commit.
+
+   See http://wiki.apache.org/solr/QueryElevationComponent for more info
+
+-->
+<elevate>
+ <!-- Query elevation examples
+  <query text="foo bar">
+    <doc id="1" />
+    <doc id="2" />
+    <doc id="3" />
+  </query>
+
+for use with techproducts example
+ 
+  <query text="ipod">
+    <doc id="MA147LL/A" />  put the actual ipod at the top 
+    <doc id="IW-02" exclude="true" /> exclude this cable
+  </query>
+-->
+
+</elevate>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_ca.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_ca.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_ca.txt
new file mode 100644
index 0000000..307a85f
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_ca.txt
@@ -0,0 +1,8 @@
+# Set of Catalan contractions for ElisionFilter
+# TODO: load this as a resource from the analyzer and sync it in build.xml
+d
+l
+m
+n
+s
+t

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_fr.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_fr.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_fr.txt
new file mode 100644
index 0000000..f1bba51
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_fr.txt
@@ -0,0 +1,15 @@
+# Set of French contractions for ElisionFilter
+# TODO: load this as a resource from the analyzer and sync it in build.xml
+l
+m
+t
+qu
+n
+s
+j
+d
+c
+jusqu
+quoiqu
+lorsqu
+puisqu

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_ga.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_ga.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_ga.txt
new file mode 100644
index 0000000..9ebe7fa
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_ga.txt
@@ -0,0 +1,5 @@
+# Set of Irish contractions for ElisionFilter
+# TODO: load this as a resource from the analyzer and sync it in build.xml
+d
+m
+b

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_it.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_it.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_it.txt
new file mode 100644
index 0000000..cac0409
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/contractions_it.txt
@@ -0,0 +1,23 @@
+# Set of Italian contractions for ElisionFilter
+# TODO: load this as a resource from the analyzer and sync it in build.xml
+c
+l 
+all 
+dall 
+dell 
+nell 
+sull 
+coll 
+pell 
+gl 
+agl 
+dagl 
+degl 
+negl 
+sugl 
+un 
+m 
+t 
+s 
+v 
+d

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/hyphenations_ga.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/hyphenations_ga.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/hyphenations_ga.txt
new file mode 100644
index 0000000..4d2642c
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/hyphenations_ga.txt
@@ -0,0 +1,5 @@
+# Set of Irish hyphenations for StopFilter
+# TODO: load this as a resource from the analyzer and sync it in build.xml
+h
+n
+t

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stemdict_nl.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stemdict_nl.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stemdict_nl.txt
new file mode 100644
index 0000000..4410729
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stemdict_nl.txt
@@ -0,0 +1,6 @@
+# Set of overrides for the dutch stemmer
+# TODO: load this as a resource from the analyzer and sync it in build.xml
+fiets	fiets
+bromfiets	bromfiets
+ei	eier
+kind	kinder

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stoptags_ja.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stoptags_ja.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stoptags_ja.txt
new file mode 100644
index 0000000..71b7508
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stoptags_ja.txt
@@ -0,0 +1,420 @@
+#
+# This file defines a Japanese stoptag set for JapanesePartOfSpeechStopFilter.
+#
+# Any token with a part-of-speech tag that exactly matches those defined in this
+# file are removed from the token stream.
+#
+# Set your own stoptags by uncommenting the lines below.  Note that comments are
+# not allowed on the same line as a stoptag.  See LUCENE-3745 for frequency lists,
+# etc. that can be useful for building you own stoptag set.
+#
+# The entire possible tagset is provided below for convenience.
+#
+#####
+#  noun: unclassified nouns
+#名詞
+#
+#  noun-common: Common nouns or nouns where the sub-classification is undefined
+#名詞-一般
+#
+#  noun-proper: Proper nouns where the sub-classification is undefined 
+#名詞-固有名詞
+#
+#  noun-proper-misc: miscellaneous proper nouns
+#名詞-固有名詞-一般
+#
+#  noun-proper-person: Personal names where the sub-classification is undefined
+#名詞-固有名詞-人名
+#
+#  noun-proper-person-misc: names that cannot be divided into surname and 
+#  given name; foreign names; names where the surname or given name is unknown.
+#  e.g. お市の方
+#名詞-固有名詞-人名-一般
+#
+#  noun-proper-person-surname: Mainly Japanese surnames.
+#  e.g. 山田
+#名詞-固有名詞-人名-姓
+#
+#  noun-proper-person-given_name: Mainly Japanese given names.
+#  e.g. 太郎
+#名詞-固有名詞-人名-名
+#
+#  noun-proper-organization: Names representing organizations.
+#  e.g. 通産省, NHK
+#名詞-固有名詞-組織
+#
+#  noun-proper-place: Place names where the sub-classification is undefined
+#名詞-固有名詞-地域
+#
+#  noun-proper-place-misc: Place names excluding countries.
+#  e.g. アジア, バルセロナ, 京都
+#名詞-固有名詞-地域-一般
+#
+#  noun-proper-place-country: Country names. 
+#  e.g. 日本, オーストラリア
+#名詞-固有名詞-地域-国
+#
+#  noun-pronoun: Pronouns where the sub-classification is undefined
+#名詞-代名詞
+#
+#  noun-pronoun-misc: miscellaneous pronouns: 
+#  e.g. それ, ここ, あいつ, あなた, あちこち, いくつ, どこか, なに, みなさん, みんな, わたくし, われわれ
+#名詞-代名詞-一般
+#
+#  noun-pronoun-contraction: Spoken language contraction made by combining a 
+#  pronoun and the particle 'wa'.
+#  e.g. ありゃ, こりゃ, こりゃあ, そりゃ, そりゃあ 
+#名詞-代名詞-縮約
+#
+#  noun-adverbial: Temporal nouns such as names of days or months that behave 
+#  like adverbs. Nouns that represent amount or ratios and can be used adverbially,
+#  e.g. 金曜, 一月, 午後, 少量
+#名詞-副詞可能
+#
+#  noun-verbal: Nouns that take arguments with case and can appear followed by 
+#  'suru' and related verbs (する, できる, なさる, くださる)
+#  e.g. インプット, 愛着, 悪化, 悪戦苦闘, 一安心, 下取り
+#名詞-サ変接続
+#
+#  noun-adjective-base: The base form of adjectives, words that appear before な ("na")
+#  e.g. 健康, 安易, 駄目, だめ
+#名詞-形容動詞語幹
+#
+#  noun-numeric: Arabic numbers, Chinese numerals, and counters like 何 (回), 数.
+#  e.g. 0, 1, 2, 何, 数, 幾
+#名詞-数
+#
+#  noun-affix: noun affixes where the sub-classification is undefined
+#名詞-非自立
+#
+#  noun-affix-misc: Of adnominalizers, the case-marker の ("no"), and words that 
+#  attach to the base form of inflectional words, words that cannot be classified 
+#  into any of the other categories below. This category includes indefinite nouns.
+#  e.g. あかつき, 暁, かい, 甲斐, 気, きらい, 嫌い, くせ, 癖, こと, 事, ごと, 毎, しだい, 次第, 
+#       順, せい, 所為, ついで, 序で, つもり, 積もり, 点, どころ, の, はず, 筈, はずみ, 弾み, 
+#       拍子, ふう, ふり, 振り, ほう, 方, 旨, もの, 物, 者, ゆえ, 故, ゆえん, 所以, わけ, 訳,
+#       わり, 割り, 割, ん-口語/, もん-口語/
+#名詞-非自立-一般
+#
+#  noun-affix-adverbial: noun affixes that that can behave as adverbs.
+#  e.g. あいだ, 間, あげく, 挙げ句, あと, 後, 余り, 以外, 以降, 以後, 以上, 以前, 一方, うえ, 
+#       上, うち, 内, おり, 折り, かぎり, 限り, きり, っきり, 結果, ころ, 頃, さい, 際, 最中, さなか, 
+#       最中, じたい, 自体, たび, 度, ため, 為, つど, 都度, とおり, 通り, とき, 時, ところ, 所, 
+#       とたん, 途端, なか, 中, のち, 後, ばあい, 場合, 日, ぶん, 分, ほか, 他, まえ, 前, まま, 
+#       儘, 侭, みぎり, 矢先
+#名詞-非自立-副詞可能
+#
+#  noun-affix-aux: noun affixes treated as 助動詞 ("auxiliary verb") in school grammars 
+#  with the stem よう(だ) ("you(da)").
+#  e.g.  よう, やう, 様 (よう)
+#名詞-非自立-助動詞語幹
+#  
+#  noun-affix-adjective-base: noun affixes that can connect to the indeclinable
+#  connection form な (aux "da").
+#  e.g. みたい, ふう
+#名詞-非自立-形容動詞語幹
+#
+#  noun-special: special nouns where the sub-classification is undefined.
+#名詞-特殊
+#
+#  noun-special-aux: The そうだ ("souda") stem form that is used for reporting news, is 
+#  treated as 助動詞 ("auxiliary verb") in school grammars, and attach to the base 
+#  form of inflectional words.
+#  e.g. そう
+#名詞-特殊-助動詞語幹
+#
+#  noun-suffix: noun suffixes where the sub-classification is undefined.
+#名詞-接尾
+#
+#  noun-suffix-misc: Of the nouns or stem forms of other parts of speech that connect 
+#  to ガル or タイ and can combine into compound nouns, words that cannot be classified into
+#  any of the other categories below. In general, this category is more inclusive than 
+#  接尾語 ("suffix") and is usually the last element in a compound noun.
+#  e.g. おき, かた, 方, 甲斐 (がい), がかり, ぎみ, 気味, ぐるみ, (~した) さ, 次第, 済 (ず) み,
+#       よう, (でき)っこ, 感, 観, 性, 学, 類, 面, 用
+#名詞-接尾-一般
+#
+#  noun-suffix-person: Suffixes that form nouns and attach to person names more often
+#  than other nouns.
+#  e.g. 君, 様, 著
+#名詞-接尾-人名
+#
+#  noun-suffix-place: Suffixes that form nouns and attach to place names more often 
+#  than other nouns.
+#  e.g. 町, 市, 県
+#名詞-接尾-地域
+#
+#  noun-suffix-verbal: Of the suffixes that attach to nouns and form nouns, those that 
+#  can appear before スル ("suru").
+#  e.g. 化, 視, 分け, 入り, 落ち, 買い
+#名詞-接尾-サ変接続
+#
+#  noun-suffix-aux: The stem form of そうだ (様態) that is used to indicate conditions, 
+#  is treated as 助動詞 ("auxiliary verb") in school grammars, and attach to the 
+#  conjunctive form of inflectional words.
+#  e.g. そう
+#名詞-接尾-助動詞語幹
+#
+#  noun-suffix-adjective-base: Suffixes that attach to other nouns or the conjunctive 
+#  form of inflectional words and appear before the copula だ ("da").
+#  e.g. 的, げ, がち
+#名詞-接尾-形容動詞語幹
+#
+#  noun-suffix-adverbial: Suffixes that attach to other nouns and can behave as adverbs.
+#  e.g. 後 (ご), 以後, 以降, 以前, 前後, 中, 末, 上, 時 (じ)
+#名詞-接尾-副詞可能
+#
+#  noun-suffix-classifier: Suffixes that attach to numbers and form nouns. This category 
+#  is more inclusive than 助数詞 ("classifier") and includes common nouns that attach 
+#  to numbers.
+#  e.g. 個, つ, 本, 冊, パーセント, cm, kg, カ月, か国, 区画, 時間, 時半
+#名詞-接尾-助数詞
+#
+#  noun-suffix-special: Special suffixes that mainly attach to inflecting words.
+#  e.g. (楽し) さ, (考え) 方
+#名詞-接尾-特殊
+#
+#  noun-suffix-conjunctive: Nouns that behave like conjunctions and join two words 
+#  together.
+#  e.g. (日本) 対 (アメリカ), 対 (アメリカ), (3) 対 (5), (女優) 兼 (主婦)
+#名詞-接続詞的
+#
+#  noun-verbal_aux: Nouns that attach to the conjunctive particle て ("te") and are 
+#  semantically verb-like.
+#  e.g. ごらん, ご覧, 御覧, 頂戴
+#名詞-動詞非自立的
+#
+#  noun-quotation: text that cannot be segmented into words, proverbs, Chinese poetry, 
+#  dialects, English, etc. Currently, the only entry for 名詞 引用文字列 ("noun quotation") 
+#  is いわく ("iwaku").
+#名詞-引用文字列
+#
+#  noun-nai_adjective: Words that appear before the auxiliary verb ない ("nai") and
+#  behave like an adjective.
+#  e.g. 申し訳, 仕方, とんでも, 違い
+#名詞-ナイ形容詞語幹
+#
+#####
+#  prefix: unclassified prefixes
+#接頭詞
+#
+#  prefix-nominal: Prefixes that attach to nouns (including adjective stem forms) 
+#  excluding numerical expressions.
+#  e.g. お (水), 某 (氏), 同 (社), 故 (~氏), 高 (品質), お (見事), ご (立派)
+#接頭詞-名詞接続
+#
+#  prefix-verbal: Prefixes that attach to the imperative form of a verb or a verb
+#  in conjunctive form followed by なる/なさる/くださる.
+#  e.g. お (読みなさい), お (座り)
+#接頭詞-動詞接続
+#
+#  prefix-adjectival: Prefixes that attach to adjectives.
+#  e.g. お (寒いですねえ), バカ (でかい)
+#接頭詞-形容詞接続
+#
+#  prefix-numerical: Prefixes that attach to numerical expressions.
+#  e.g. 約, およそ, 毎時
+#接頭詞-数接続
+#
+#####
+#  verb: unclassified verbs
+#動詞
+#
+#  verb-main:
+#動詞-自立
+#
+#  verb-auxiliary:
+#動詞-非自立
+#
+#  verb-suffix:
+#動詞-接尾
+#
+#####
+#  adjective: unclassified adjectives
+#形容詞
+#
+#  adjective-main:
+#形容詞-自立
+#
+#  adjective-auxiliary:
+#形容詞-非自立
+#
+#  adjective-suffix:
+#形容詞-接尾
+#
+#####
+#  adverb: unclassified adverbs
+#副詞
+#
+#  adverb-misc: Words that can be segmented into one unit and where adnominal 
+#  modification is not possible.
+#  e.g. あいかわらず, 多分
+#副詞-一般
+#
+#  adverb-particle_conjunction: Adverbs that can be followed by の, は, に, 
+#  な, する, だ, etc.
+#  e.g. こんなに, そんなに, あんなに, なにか, なんでも
+#副詞-助詞類接続
+#
+#####
+#  adnominal: Words that only have noun-modifying forms.
+#  e.g. この, その, あの, どの, いわゆる, なんらかの, 何らかの, いろんな, こういう, そういう, ああいう, 
+#       どういう, こんな, そんな, あんな, どんな, 大きな, 小さな, おかしな, ほんの, たいした, 
+#       「(, も) さる (ことながら)」, 微々たる, 堂々たる, 単なる, いかなる, 我が」「同じ, 亡き
+#連体詞
+#
+#####
+#  conjunction: Conjunctions that can occur independently.
+#  e.g. が, けれども, そして, じゃあ, それどころか
+接続詞
+#
+#####
+#  particle: unclassified particles.
+助詞
+#
+#  particle-case: case particles where the subclassification is undefined.
+助詞-格助詞
+#
+#  particle-case-misc: Case particles.
+#  e.g. から, が, で, と, に, へ, より, を, の, にて
+助詞-格助詞-一般
+#
+#  particle-case-quote: the "to" that appears after nouns, a person’s speech, 
+#  quotation marks, expressions of decisions from a meeting, reasons, judgements,
+#  conjectures, etc.
+#  e.g. ( だ) と (述べた.), ( である) と (して執行猶予...)
+助詞-格助詞-引用
+#
+#  particle-case-compound: Compounds of particles and verbs that mainly behave 
+#  like case particles.
+#  e.g. という, といった, とかいう, として, とともに, と共に, でもって, にあたって, に当たって, に当って,
+#       にあたり, に当たり, に当り, に当たる, にあたる, において, に於いて,に於て, における, に於ける, 
+#       にかけ, にかけて, にかんし, に関し, にかんして, に関して, にかんする, に関する, に際し, 
+#       に際して, にしたがい, に従い, に従う, にしたがって, に従って, にたいし, に対し, にたいして, 
+#       に対して, にたいする, に対する, について, につき, につけ, につけて, につれ, につれて, にとって,
+#       にとり, にまつわる, によって, に依って, に因って, により, に依り, に因り, による, に依る, に因る, 
+#       にわたって, にわたる, をもって, を以って, を通じ, を通じて, を通して, をめぐって, をめぐり, をめぐる,
+#       って-口語/, ちゅう-関西弁「という」/, (何) ていう (人)-口語/, っていう-口語/, といふ, とかいふ
+助詞-格助詞-連語
+#
+#  particle-conjunctive:
+#  e.g. から, からには, が, けれど, けれども, けど, し, つつ, て, で, と, ところが, どころか, とも, ども, 
+#       ながら, なり, ので, のに, ば, ものの, や ( した), やいなや, (ころん) じゃ(いけない)-口語/, 
+#       (行っ) ちゃ(いけない)-口語/, (言っ) たって (しかたがない)-口語/, (それがなく)ったって (平気)-口語/
+助詞-接続助詞
+#
+#  particle-dependency:
+#  e.g. こそ, さえ, しか, すら, は, も, ぞ
+助詞-係助詞
+#
+#  particle-adverbial:
+#  e.g. がてら, かも, くらい, 位, ぐらい, しも, (学校) じゃ(これが流行っている)-口語/, 
+#       (それ)じゃあ (よくない)-口語/, ずつ, (私) なぞ, など, (私) なり (に), (先生) なんか (大嫌い)-口語/,
+#       (私) なんぞ, (先生) なんて (大嫌い)-口語/, のみ, だけ, (私) だって-口語/, だに, 
+#       (彼)ったら-口語/, (お茶) でも (いかが), 等 (とう), (今後) とも, ばかり, ばっか-口語/, ばっかり-口語/,
+#       ほど, 程, まで, 迄, (誰) も (が)([助詞-格助詞] および [助詞-係助詞] の前に位置する「も」)
+助詞-副助詞
+#
+#  particle-interjective: particles with interjective grammatical roles.
+#  e.g. (松島) や
+助詞-間投助詞
+#
+#  particle-coordinate:
+#  e.g. と, たり, だの, だり, とか, なり, や, やら
+助詞-並立助詞
+#
+#  particle-final:
+#  e.g. かい, かしら, さ, ぜ, (だ)っけ-口語/, (とまってる) で-方言/, な, ナ, なあ-口語/, ぞ, ね, ネ, 
+#       ねぇ-口語/, ねえ-口語/, ねん-方言/, の, のう-口語/, や, よ, ヨ, よぉ-口語/, わ, わい-口語/
+助詞-終助詞
+#
+#  particle-adverbial/conjunctive/final: The particle "ka" when unknown whether it is 
+#  adverbial, conjunctive, or sentence final. For example:
+#       (a) 「A か B か」. Ex:「(国内で運用する) か,(海外で運用する) か (.)」
+#       (b) Inside an adverb phrase. Ex:「(幸いという) か (, 死者はいなかった.)」
+#           「(祈りが届いたせい) か (, 試験に合格した.)」
+#       (c) 「かのように」. Ex:「(何もなかった) か (のように振る舞った.)」
+#  e.g. か
+助詞-副助詞/並立助詞/終助詞
+#
+#  particle-adnominalizer: The "no" that attaches to nouns and modifies 
+#  non-inflectional words.
+助詞-連体化
+#
+#  particle-adnominalizer: The "ni" and "to" that appear following nouns and adverbs 
+#  that are giongo, giseigo, or gitaigo.
+#  e.g. に, と
+助詞-副詞化
+#
+#  particle-special: A particle that does not fit into one of the above classifications. 
+#  This includes particles that are used in Tanka, Haiku, and other poetry.
+#  e.g. かな, けむ, ( しただろう) に, (あんた) にゃ(わからん), (俺) ん (家)
+助詞-特殊
+#
+#####
+#  auxiliary-verb:
+助動詞
+#
+#####
+#  interjection: Greetings and other exclamations.
+#  e.g. おはよう, おはようございます, こんにちは, こんばんは, ありがとう, どうもありがとう, ありがとうございます, 
+#       いただきます, ごちそうさま, さよなら, さようなら, はい, いいえ, ごめん, ごめんなさい
+#感動詞
+#
+#####
+#  symbol: unclassified Symbols.
+記号
+#
+#  symbol-misc: A general symbol not in one of the categories below.
+#  e.g. [○◎@$〒→+]
+記号-一般
+#
+#  symbol-comma: Commas
+#  e.g. [,、]
+記号-読点
+#
+#  symbol-period: Periods and full stops.
+#  e.g. [..。]
+記号-句点
+#
+#  symbol-space: Full-width whitespace.
+記号-空白
+#
+#  symbol-open_bracket:
+#  e.g. [({‘“『【]
+記号-括弧開
+#
+#  symbol-close_bracket:
+#  e.g. [)}’”』」】]
+記号-括弧閉
+#
+#  symbol-alphabetic:
+#記号-アルファベット
+#
+#####
+#  other: unclassified other
+#その他
+#
+#  other-interjection: Words that are hard to classify as noun-suffixes or 
+#  sentence-final particles.
+#  e.g. (だ)ァ
+その他-間投
+#
+#####
+#  filler: Aizuchi that occurs during a conversation or sounds inserted as filler.
+#  e.g. あの, うんと, えと
+フィラー
+#
+#####
+#  non-verbal: non-verbal sound.
+非言語音
+#
+#####
+#  fragment:
+#語断片
+#
+#####
+#  unknown: unknown part of speech.
+#未知語
+#
+##### End of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ar.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ar.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ar.txt
new file mode 100644
index 0000000..046829d
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ar.txt
@@ -0,0 +1,125 @@
+# This file was created by Jacques Savoy and is distributed under the BSD license.
+# See http://members.unine.ch/jacques.savoy/clef/index.html.
+# Also see http://www.opensource.org/licenses/bsd-license.html
+# Cleaned on October 11, 2009 (not normalized, so use before normalization)
+# This means that when modifying this list, you might need to add some 
+# redundant entries, for example containing forms with both أ and ا
+من
+ومن
+منها
+منه
+في
+وفي
+فيها
+فيه
+و
+ف
+ثم
+او
+أو
+ب
+بها
+به
+ا
+أ
+اى
+اي
+أي
+أى
+لا
+ولا
+الا
+ألا
+إلا
+لكن
+ما
+وما
+كما
+فما
+عن
+مع
+اذا
+إذا
+ان
+أن
+إن
+انها
+أنها
+إنها
+انه
+أنه
+إنه
+بان
+بأن
+فان
+فأن
+وان
+وأن
+وإن
+التى
+التي
+الذى
+الذي
+الذين
+الى
+الي
+إلى
+إلي
+على
+عليها
+عليه
+اما
+أما
+إما
+ايضا
+أيضا
+كل
+وكل
+لم
+ولم
+لن
+ولن
+هى
+هي
+هو
+وهى
+وهي
+وهو
+فهى
+فهي
+فهو
+انت
+أنت
+لك
+لها
+له
+هذه
+هذا
+تلك
+ذلك
+هناك
+كانت
+كان
+يكون
+تكون
+وكانت
+وكان
+غير
+بعض
+قد
+نحو
+بين
+بينما
+منذ
+ضمن
+حيث
+الان
+الآن
+خلال
+بعد
+قبل
+حتى
+عند
+عندما
+لدى
+جميع

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_bg.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_bg.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_bg.txt
new file mode 100644
index 0000000..1ae4ba2
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_bg.txt
@@ -0,0 +1,193 @@
+# This file was created by Jacques Savoy and is distributed under the BSD license.
+# See http://members.unine.ch/jacques.savoy/clef/index.html.
+# Also see http://www.opensource.org/licenses/bsd-license.html
+а
+аз
+ако
+ала
+бе
+без
+беше
+би
+бил
+била
+били
+било
+близо
+бъдат
+бъде
+бяха
+в
+вас
+ваш
+ваша
+вероятно
+вече
+взема
+ви
+вие
+винаги
+все
+всеки
+всички
+всичко
+всяка
+във
+въпреки
+върху
+г
+ги
+главно
+го
+д
+да
+дали
+до
+докато
+докога
+дори
+досега
+доста
+е
+едва
+един
+ето
+за
+зад
+заедно
+заради
+засега
+затова
+защо
+защото
+и
+из
+или
+им
+има
+имат
+иска
+й
+каза
+как
+каква
+какво
+както
+какъв
+като
+кога
+когато
+което
+които
+кой
+който
+колко
+която
+къде
+където
+към
+ли
+м
+ме
+между
+мен
+ми
+мнозина
+мога
+могат
+може
+моля
+момента
+му
+н
+на
+над
+назад
+най
+направи
+напред
+например
+нас
+не
+него
+нея
+ни
+ние
+никой
+нито
+но
+някои
+някой
+няма
+обаче
+около
+освен
+особено
+от
+отгоре
+отново
+още
+пак
+по
+повече
+повечето
+под
+поне
+поради
+после
+почти
+прави
+пред
+преди
+през
+при
+пък
+първо
+с
+са
+само
+се
+сега
+си
+скоро
+след
+сме
+според
+сред
+срещу
+сте
+съм
+със
+също
+т
+тази
+така
+такива
+такъв
+там
+твой
+те
+тези
+ти
+тн
+то
+това
+тогава
+този
+той
+толкова
+точно
+трябва
+тук
+тъй
+тя
+тях
+у
+харесва
+ч
+че
+често
+чрез
+ще
+щом
+я

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ca.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ca.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ca.txt
new file mode 100644
index 0000000..3da65de
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ca.txt
@@ -0,0 +1,220 @@
+# Catalan stopwords from http://github.com/vcl/cue.language (Apache 2 Licensed)
+a
+abans
+ací
+ah
+així
+això
+al
+als
+aleshores
+algun
+alguna
+algunes
+alguns
+alhora
+allà
+allí
+allò
+altra
+altre
+altres
+amb
+ambdós
+ambdues
+apa
+aquell
+aquella
+aquelles
+aquells
+aquest
+aquesta
+aquestes
+aquests
+aquí
+baix
+cada
+cadascú
+cadascuna
+cadascunes
+cadascuns
+com
+contra
+d'un
+d'una
+d'unes
+d'uns
+dalt
+de
+del
+dels
+des
+després
+dins
+dintre
+donat
+doncs
+durant
+e
+eh
+el
+els
+em
+en
+encara
+ens
+entre
+érem
+eren
+éreu
+es
+és
+esta
+està
+estàvem
+estaven
+estàveu
+esteu
+et
+etc
+ets
+fins
+fora
+gairebé
+ha
+han
+has
+havia
+he
+hem
+heu
+hi 
+ho
+i
+igual
+iguals
+ja
+l'hi
+la
+les
+li
+li'n
+llavors
+m'he
+ma
+mal
+malgrat
+mateix
+mateixa
+mateixes
+mateixos
+me
+mentre
+més
+meu
+meus
+meva
+meves
+molt
+molta
+moltes
+molts
+mon
+mons
+n'he
+n'hi
+ne
+ni
+no
+nogensmenys
+només
+nosaltres
+nostra
+nostre
+nostres
+o
+oh
+oi
+on
+pas
+pel
+pels
+per
+però
+perquè
+poc 
+poca
+pocs
+poques
+potser
+propi
+qual
+quals
+quan
+quant 
+que
+què
+quelcom
+qui
+quin
+quina
+quines
+quins
+s'ha
+s'han
+sa
+semblant
+semblants
+ses
+seu 
+seus
+seva
+seva
+seves
+si
+sobre
+sobretot
+sóc
+solament
+sols
+son 
+són
+sons 
+sota
+sou
+t'ha
+t'han
+t'he
+ta
+tal
+també
+tampoc
+tan
+tant
+tanta
+tantes
+teu
+teus
+teva
+teves
+ton
+tons
+tot
+tota
+totes
+tots
+un
+una
+unes
+uns
+us
+va
+vaig
+vam
+van
+vas
+veu
+vosaltres
+vostra
+vostre
+vostres

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_cz.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_cz.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_cz.txt
new file mode 100644
index 0000000..53c6097
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_cz.txt
@@ -0,0 +1,172 @@
+a
+s
+k
+o
+i
+u
+v
+z
+dnes
+cz
+tímto
+budeš
+budem
+byli
+jseš
+můj
+svým
+ta
+tomto
+tohle
+tuto
+tyto
+jej
+zda
+proč
+máte
+tato
+kam
+tohoto
+kdo
+kteří
+mi
+nám
+tom
+tomuto
+mít
+nic
+proto
+kterou
+byla
+toho
+protože
+asi
+ho
+naši
+napište
+re
+což
+tím
+takže
+svých
+její
+svými
+jste
+aj
+tu
+tedy
+teto
+bylo
+kde
+ke
+pravé
+ji
+nad
+nejsou
+či
+pod
+téma
+mezi
+přes
+ty
+pak
+vám
+ani
+když
+však
+neg
+jsem
+tento
+článku
+články
+aby
+jsme
+před
+pta
+jejich
+byl
+ještě
+až
+bez
+také
+pouze
+první
+vaše
+která
+nás
+nový
+tipy
+pokud
+může
+strana
+jeho
+své
+jiné
+zprávy
+nové
+není
+vás
+jen
+podle
+zde
+už
+být
+více
+bude
+již
+než
+který
+by
+které
+co
+nebo
+ten
+tak
+má
+při
+od
+po
+jsou
+jak
+další
+ale
+si
+se
+ve
+to
+jako
+za
+zpět
+ze
+do
+pro
+je
+na
+atd
+atp
+jakmile
+přičemž
+já
+on
+ona
+ono
+oni
+ony
+my
+vy
+jí
+ji
+mě
+mne
+jemu
+tomu
+těm
+těmu
+němu
+němuž
+jehož
+jíž
+jelikož
+jež
+jakož
+načež

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_da.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_da.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_da.txt
new file mode 100644
index 0000000..42e6145
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_da.txt
@@ -0,0 +1,110 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/danish/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+
+ | A Danish stop word list. Comments begin with vertical bar. Each stop
+ | word is at the start of a line.
+
+ | This is a ranked list (commonest to rarest) of stopwords derived from
+ | a large text sample.
+
+
+og           | and
+i            | in
+jeg          | I
+det          | that (dem. pronoun)/it (pers. pronoun)
+at           | that (in front of a sentence)/to (with infinitive)
+en           | a/an
+den          | it (pers. pronoun)/that (dem. pronoun)
+til          | to/at/for/until/against/by/of/into, more
+er           | present tense of "to be"
+som          | who, as
+på           | on/upon/in/on/at/to/after/of/with/for, on
+de           | they
+med          | with/by/in, along
+han          | he
+af           | of/by/from/off/for/in/with/on, off
+for          | at/for/to/from/by/of/ago, in front/before, because
+ikke         | not
+der          | who/which, there/those
+var          | past tense of "to be"
+mig          | me/myself
+sig          | oneself/himself/herself/itself/themselves
+men          | but
+et           | a/an/one, one (number), someone/somebody/one
+har          | present tense of "to have"
+om           | round/about/for/in/a, about/around/down, if
+vi           | we
+min          | my
+havde        | past tense of "to have"
+ham          | him
+hun          | she
+nu           | now
+over         | over/above/across/by/beyond/past/on/about, over/past
+da           | then, when/as/since
+fra          | from/off/since, off, since
+du           | you
+ud           | out
+sin          | his/her/its/one's
+dem          | them
+os           | us/ourselves
+op           | up
+man          | you/one
+hans         | his
+hvor         | where
+eller        | or
+hvad         | what
+skal         | must/shall etc.
+selv         | myself/youself/herself/ourselves etc., even
+her          | here
+alle         | all/everyone/everybody etc.
+vil          | will (verb)
+blev         | past tense of "to stay/to remain/to get/to become"
+kunne        | could
+ind          | in
+når          | when
+være         | present tense of "to be"
+dog          | however/yet/after all
+noget        | something
+ville        | would
+jo           | you know/you see (adv), yes
+deres        | their/theirs
+efter        | after/behind/according to/for/by/from, later/afterwards
+ned          | down
+skulle       | should
+denne        | this
+end          | than
+dette        | this
+mit          | my/mine
+også         | also
+under        | under/beneath/below/during, below/underneath
+have         | have
+dig          | you
+anden        | other
+hende        | her
+mine         | my
+alt          | everything
+meget        | much/very, plenty of
+sit          | his, her, its, one's
+sine         | his, her, its, one's
+vor          | our
+mod          | against
+disse        | these
+hvis         | if
+din          | your/yours
+nogle        | some
+hos          | by/at
+blive        | be/become
+mange        | many
+ad           | by/through
+bliver       | present tense of "to be/to become"
+hendes       | her/hers
+været        | be
+thi          | for (conj)
+jer          | you
+sådan        | such, like this/like that

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_de.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_de.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_de.txt
new file mode 100644
index 0000000..86525e7
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_de.txt
@@ -0,0 +1,294 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/german/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+
+ | A German stop word list. Comments begin with vertical bar. Each stop
+ | word is at the start of a line.
+
+ | The number of forms in this list is reduced significantly by passing it
+ | through the German stemmer.
+
+
+aber           |  but
+
+alle           |  all
+allem
+allen
+aller
+alles
+
+als            |  than, as
+also           |  so
+am             |  an + dem
+an             |  at
+
+ander          |  other
+andere
+anderem
+anderen
+anderer
+anderes
+anderm
+andern
+anderr
+anders
+
+auch           |  also
+auf            |  on
+aus            |  out of
+bei            |  by
+bin            |  am
+bis            |  until
+bist           |  art
+da             |  there
+damit          |  with it
+dann           |  then
+
+der            |  the
+den
+des
+dem
+die
+das
+
+daß            |  that
+
+derselbe       |  the same
+derselben
+denselben
+desselben
+demselben
+dieselbe
+dieselben
+dasselbe
+
+dazu           |  to that
+
+dein           |  thy
+deine
+deinem
+deinen
+deiner
+deines
+
+denn           |  because
+
+derer          |  of those
+dessen         |  of him
+
+dich           |  thee
+dir            |  to thee
+du             |  thou
+
+dies           |  this
+diese
+diesem
+diesen
+dieser
+dieses
+
+
+doch           |  (several meanings)
+dort           |  (over) there
+
+
+durch          |  through
+
+ein            |  a
+eine
+einem
+einen
+einer
+eines
+
+einig          |  some
+einige
+einigem
+einigen
+einiger
+einiges
+
+einmal         |  once
+
+er             |  he
+ihn            |  him
+ihm            |  to him
+
+es             |  it
+etwas          |  something
+
+euer           |  your
+eure
+eurem
+euren
+eurer
+eures
+
+für            |  for
+gegen          |  towards
+gewesen        |  p.p. of sein
+hab            |  have
+habe           |  have
+haben          |  have
+hat            |  has
+hatte          |  had
+hatten         |  had
+hier           |  here
+hin            |  there
+hinter         |  behind
+
+ich            |  I
+mich           |  me
+mir            |  to me
+
+
+ihr            |  you, to her
+ihre
+ihrem
+ihren
+ihrer
+ihres
+euch           |  to you
+
+im             |  in + dem
+in             |  in
+indem          |  while
+ins            |  in + das
+ist            |  is
+
+jede           |  each, every
+jedem
+jeden
+jeder
+jedes
+
+jene           |  that
+jenem
+jenen
+jener
+jenes
+
+jetzt          |  now
+kann           |  can
+
+kein           |  no
+keine
+keinem
+keinen
+keiner
+keines
+
+können         |  can
+könnte         |  could
+machen         |  do
+man            |  one
+
+manche         |  some, many a
+manchem
+manchen
+mancher
+manches
+
+mein           |  my
+meine
+meinem
+meinen
+meiner
+meines
+
+mit            |  with
+muss           |  must
+musste         |  had to
+nach           |  to(wards)
+nicht          |  not
+nichts         |  nothing
+noch           |  still, yet
+nun            |  now
+nur            |  only
+ob             |  whether
+oder           |  or
+ohne           |  without
+sehr           |  very
+
+sein           |  his
+seine
+seinem
+seinen
+seiner
+seines
+
+selbst         |  self
+sich           |  herself
+
+sie            |  they, she
+ihnen          |  to them
+
+sind           |  are
+so             |  so
+
+solche         |  such
+solchem
+solchen
+solcher
+solches
+
+soll           |  shall
+sollte         |  should
+sondern        |  but
+sonst          |  else
+über           |  over
+um             |  about, around
+und            |  and
+
+uns            |  us
+unse
+unsem
+unsen
+unser
+unses
+
+unter          |  under
+viel           |  much
+vom            |  von + dem
+von            |  from
+vor            |  before
+während        |  while
+war            |  was
+waren          |  were
+warst          |  wast
+was            |  what
+weg            |  away, off
+weil           |  because
+weiter         |  further
+
+welche         |  which
+welchem
+welchen
+welcher
+welches
+
+wenn           |  when
+werde          |  will
+werden         |  will
+wie            |  how
+wieder         |  again
+will           |  want
+wir            |  we
+wird           |  will
+wirst          |  willst
+wo             |  where
+wollen         |  want
+wollte         |  wanted
+würde          |  would
+würden         |  would
+zu             |  to
+zum            |  zu + dem
+zur            |  zu + der
+zwar           |  indeed
+zwischen       |  between
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_el.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_el.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_el.txt
new file mode 100644
index 0000000..232681f
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_el.txt
@@ -0,0 +1,78 @@
+# Lucene Greek Stopwords list
+# Note: by default this file is used after GreekLowerCaseFilter,
+# so when modifying this file use 'σ' instead of 'ς' 
+ο
+η
+το
+οι
+τα
+του
+τησ
+των
+τον
+την
+και 
+κι
+κ
+ειμαι
+εισαι
+ειναι
+ειμαστε
+ειστε
+στο
+στον
+στη
+στην
+μα
+αλλα
+απο
+για
+προσ
+με
+σε
+ωσ
+παρα
+αντι
+κατα
+μετα
+θα
+να
+δε
+δεν
+μη
+μην
+επι
+ενω
+εαν
+αν
+τοτε
+που
+πωσ
+ποιοσ
+ποια
+ποιο
+ποιοι
+ποιεσ
+ποιων
+ποιουσ
+αυτοσ
+αυτη
+αυτο
+αυτοι
+αυτων
+αυτουσ
+αυτεσ
+αυτα
+εκεινοσ
+εκεινη
+εκεινο
+εκεινοι
+εκεινεσ
+εκεινα
+εκεινων
+εκεινουσ
+οπωσ
+ομωσ
+ισωσ
+οσο
+οτι

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_en.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_en.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_en.txt
new file mode 100644
index 0000000..2c164c0
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_en.txt
@@ -0,0 +1,54 @@
+# 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.
+
+# a couple of test stopwords to test that the words are really being
+# configured from this file:
+stopworda
+stopwordb
+
+# Standard english stop words taken from Lucene's StopAnalyzer
+a
+an
+and
+are
+as
+at
+be
+but
+by
+for
+if
+in
+into
+is
+it
+no
+not
+of
+on
+or
+such
+that
+the
+their
+then
+there
+these
+they
+this
+to
+was
+will
+with

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_es.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_es.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_es.txt
new file mode 100644
index 0000000..487d78c
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_es.txt
@@ -0,0 +1,356 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/spanish/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+
+ | A Spanish stop word list. Comments begin with vertical bar. Each stop
+ | word is at the start of a line.
+
+
+ | The following is a ranked list (commonest to rarest) of stopwords
+ | deriving from a large sample of text.
+
+ | Extra words have been added at the end.
+
+de             |  from, of
+la             |  the, her
+que            |  who, that
+el             |  the
+en             |  in
+y              |  and
+a              |  to
+los            |  the, them
+del            |  de + el
+se             |  himself, from him etc
+las            |  the, them
+por            |  for, by, etc
+un             |  a
+para           |  for
+con            |  with
+no             |  no
+una            |  a
+su             |  his, her
+al             |  a + el
+  | es         from SER
+lo             |  him
+como           |  how
+más            |  more
+pero           |  pero
+sus            |  su plural
+le             |  to him, her
+ya             |  already
+o              |  or
+  | fue        from SER
+este           |  this
+  | ha         from HABER
+sí             |  himself etc
+porque         |  because
+esta           |  this
+  | son        from SER
+entre          |  between
+  | está     from ESTAR
+cuando         |  when
+muy            |  very
+sin            |  without
+sobre          |  on
+  | ser        from SER
+  | tiene      from TENER
+también        |  also
+me             |  me
+hasta          |  until
+hay            |  there is/are
+donde          |  where
+  | han        from HABER
+quien          |  whom, that
+  | están      from ESTAR
+  | estado     from ESTAR
+desde          |  from
+todo           |  all
+nos            |  us
+durante        |  during
+  | estados    from ESTAR
+todos          |  all
+uno            |  a
+les            |  to them
+ni             |  nor
+contra         |  against
+otros          |  other
+  | fueron     from SER
+ese            |  that
+eso            |  that
+  | había      from HABER
+ante           |  before
+ellos          |  they
+e              |  and (variant of y)
+esto           |  this
+mí             |  me
+antes          |  before
+algunos        |  some
+qué            |  what?
+unos           |  a
+yo             |  I
+otro           |  other
+otras          |  other
+otra           |  other
+él             |  he
+tanto          |  so much, many
+esa            |  that
+estos          |  these
+mucho          |  much, many
+quienes        |  who
+nada           |  nothing
+muchos         |  many
+cual           |  who
+  | sea        from SER
+poco           |  few
+ella           |  she
+estar          |  to be
+  | haber      from HABER
+estas          |  these
+  | estaba     from ESTAR
+  | estamos    from ESTAR
+algunas        |  some
+algo           |  something
+nosotros       |  we
+
+      | other forms
+
+mi             |  me
+mis            |  mi plural
+tú             |  thou
+te             |  thee
+ti             |  thee
+tu             |  thy
+tus            |  tu plural
+ellas          |  they
+nosotras       |  we
+vosotros       |  you
+vosotras       |  you
+os             |  you
+mío            |  mine
+mía            |
+míos           |
+mías           |
+tuyo           |  thine
+tuya           |
+tuyos          |
+tuyas          |
+suyo           |  his, hers, theirs
+suya           |
+suyos          |
+suyas          |
+nuestro        |  ours
+nuestra        |
+nuestros       |
+nuestras       |
+vuestro        |  yours
+vuestra        |
+vuestros       |
+vuestras       |
+esos           |  those
+esas           |  those
+
+               | forms of estar, to be (not including the infinitive):
+estoy
+estás
+está
+estamos
+estáis
+están
+esté
+estés
+estemos
+estéis
+estén
+estaré
+estarás
+estará
+estaremos
+estaréis
+estarán
+estaría
+estarías
+estaríamos
+estaríais
+estarían
+estaba
+estabas
+estábamos
+estabais
+estaban
+estuve
+estuviste
+estuvo
+estuvimos
+estuvisteis
+estuvieron
+estuviera
+estuvieras
+estuviéramos
+estuvierais
+estuvieran
+estuviese
+estuvieses
+estuviésemos
+estuvieseis
+estuviesen
+estando
+estado
+estada
+estados
+estadas
+estad
+
+               | forms of haber, to have (not including the infinitive):
+he
+has
+ha
+hemos
+habéis
+han
+haya
+hayas
+hayamos
+hayáis
+hayan
+habré
+habrás
+habrá
+habremos
+habréis
+habrán
+habría
+habrías
+habríamos
+habríais
+habrían
+había
+habías
+habíamos
+habíais
+habían
+hube
+hubiste
+hubo
+hubimos
+hubisteis
+hubieron
+hubiera
+hubieras
+hubiéramos
+hubierais
+hubieran
+hubiese
+hubieses
+hubiésemos
+hubieseis
+hubiesen
+habiendo
+habido
+habida
+habidos
+habidas
+
+               | forms of ser, to be (not including the infinitive):
+soy
+eres
+es
+somos
+sois
+son
+sea
+seas
+seamos
+seáis
+sean
+seré
+serás
+será
+seremos
+seréis
+serán
+sería
+serías
+seríamos
+seríais
+serían
+era
+eras
+éramos
+erais
+eran
+fui
+fuiste
+fue
+fuimos
+fuisteis
+fueron
+fuera
+fueras
+fuéramos
+fuerais
+fueran
+fuese
+fueses
+fuésemos
+fueseis
+fuesen
+siendo
+sido
+  |  sed also means 'thirst'
+
+               | forms of tener, to have (not including the infinitive):
+tengo
+tienes
+tiene
+tenemos
+tenéis
+tienen
+tenga
+tengas
+tengamos
+tengáis
+tengan
+tendré
+tendrás
+tendrá
+tendremos
+tendréis
+tendrán
+tendría
+tendrías
+tendríamos
+tendríais
+tendrían
+tenía
+tenías
+teníamos
+teníais
+tenían
+tuve
+tuviste
+tuvo
+tuvimos
+tuvisteis
+tuvieron
+tuviera
+tuvieras
+tuviéramos
+tuvierais
+tuvieran
+tuviese
+tuvieses
+tuviésemos
+tuvieseis
+tuviesen
+teniendo
+tenido
+tenida
+tenidos
+tenidas
+tened
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_eu.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_eu.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_eu.txt
new file mode 100644
index 0000000..25f1db9
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_eu.txt
@@ -0,0 +1,99 @@
+# example set of basque stopwords
+al
+anitz
+arabera
+asko
+baina
+bat
+batean
+batek
+bati
+batzuei
+batzuek
+batzuetan
+batzuk
+bera
+beraiek
+berau
+berauek
+bere
+berori
+beroriek
+beste
+bezala
+da
+dago
+dira
+ditu
+du
+dute
+edo
+egin
+ere
+eta
+eurak
+ez
+gainera
+gu
+gutxi
+guzti
+haiei
+haiek
+haietan
+hainbeste
+hala
+han
+handik
+hango
+hara
+hari
+hark
+hartan
+hau
+hauei
+hauek
+hauetan
+hemen
+hemendik
+hemengo
+hi
+hona
+honek
+honela
+honetan
+honi
+hor
+hori
+horiei
+horiek
+horietan
+horko
+horra
+horrek
+horrela
+horretan
+horri
+hortik
+hura
+izan
+ni
+noiz
+nola
+non
+nondik
+nongo
+nor
+nora
+ze
+zein
+zen
+zenbait
+zenbat
+zer
+zergatik
+ziren
+zituen
+zu
+zuek
+zuen
+zuten

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fa.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fa.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fa.txt
new file mode 100644
index 0000000..723641c
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fa.txt
@@ -0,0 +1,313 @@
+# This file was created by Jacques Savoy and is distributed under the BSD license.
+# See http://members.unine.ch/jacques.savoy/clef/index.html.
+# Also see http://www.opensource.org/licenses/bsd-license.html
+# Note: by default this file is used after normalization, so when adding entries
+# to this file, use the arabic 'ي' instead of 'ی'
+انان
+نداشته
+سراسر
+خياه
+ايشان
+وي
+تاكنون
+بيشتري
+دوم
+پس
+ناشي
+وگو
+يا
+داشتند
+سپس
+هنگام
+هرگز
+پنج
+نشان
+امسال
+ديگر
+گروهي
+شدند
+چطور
+ده
+و
+دو
+نخستين
+ولي
+چرا
+چه
+وسط
+ه
+كدام
+قابل
+يك
+رفت
+هفت
+همچنين
+در
+هزار
+بله
+بلي
+شايد
+اما
+شناسي
+گرفته
+دهد
+داشته
+دانست
+داشتن
+خواهيم
+ميليارد
+وقتيكه
+امد
+خواهد
+جز
+اورده
+شده
+بلكه
+خدمات
+شدن
+برخي
+نبود
+بسياري
+جلوگيري
+حق
+كردند
+نوعي
+بعري
+نكرده
+نظير
+نبايد
+بوده
+بودن
+داد
+اورد
+هست
+جايي
+شود
+دنبال
+داده
+بايد
+سابق
+هيچ
+همان
+انجا
+كمتر
+كجاست
+گردد
+كسي
+تر
+مردم
+تان
+دادن
+بودند
+سري
+جدا
+ندارند
+مگر
+يكديگر
+دارد
+دهند
+بنابراين
+هنگامي
+سمت
+جا
+انچه
+خود
+دادند
+زياد
+دارند
+اثر
+بدون
+بهترين
+بيشتر
+البته
+به
+براساس
+بيرون
+كرد
+بعضي
+گرفت
+توي
+اي
+ميليون
+او
+جريان
+تول
+بر
+مانند
+برابر
+باشيم
+مدتي
+گويند
+اكنون
+تا
+تنها
+جديد
+چند
+بي
+نشده
+كردن
+كردم
+گويد
+كرده
+كنيم
+نمي
+نزد
+روي
+قصد
+فقط
+بالاي
+ديگران
+اين
+ديروز
+توسط
+سوم
+ايم
+دانند
+سوي
+استفاده
+شما
+كنار
+داريم
+ساخته
+طور
+امده
+رفته
+نخست
+بيست
+نزديك
+طي
+كنيد
+از
+انها
+تمامي
+داشت
+يكي
+طريق
+اش
+چيست
+روب
+نمايد
+گفت
+چندين
+چيزي
+تواند
+ام
+ايا
+با
+ان
+ايد
+ترين
+اينكه
+ديگري
+راه
+هايي
+بروز
+همچنان
+پاعين
+كس
+حدود
+مختلف
+مقابل
+چيز
+گيرد
+ندارد
+ضد
+همچون
+سازي
+شان
+مورد
+باره
+مرسي
+خويش
+برخوردار
+چون
+خارج
+شش
+هنوز
+تحت
+ضمن
+هستيم
+گفته
+فكر
+بسيار
+پيش
+براي
+روزهاي
+انكه
+نخواهد
+بالا
+كل
+وقتي
+كي
+چنين
+كه
+گيري
+نيست
+است
+كجا
+كند
+نيز
+يابد
+بندي
+حتي
+توانند
+عقب
+خواست
+كنند
+بين
+تمام
+همه
+ما
+باشند
+مثل
+شد
+اري
+باشد
+اره
+طبق
+بعد
+اگر
+صورت
+غير
+جاي
+بيش
+ريزي
+اند
+زيرا
+چگونه
+بار
+لطفا
+مي
+درباره
+من
+ديده
+همين
+گذاري
+برداري
+علت
+گذاشته
+هم
+فوق
+نه
+ها
+شوند
+اباد
+همواره
+هر
+اول
+خواهند
+چهار
+نام
+امروز
+مان
+هاي
+قبل
+كنم
+سعي
+تازه
+را
+هستند
+زير
+جلوي
+عنوان
+بود

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fi.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fi.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fi.txt
new file mode 100644
index 0000000..4372c9a
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fi.txt
@@ -0,0 +1,97 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/finnish/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+ 
+| forms of BE
+
+olla
+olen
+olet
+on
+olemme
+olette
+ovat
+ole        | negative form
+
+oli
+olisi
+olisit
+olisin
+olisimme
+olisitte
+olisivat
+olit
+olin
+olimme
+olitte
+olivat
+ollut
+olleet
+
+en         | negation
+et
+ei
+emme
+ette
+eivät
+
+|Nom   Gen    Acc    Part   Iness   Elat    Illat  Adess   Ablat   Allat   Ess    Trans
+minä   minun  minut  minua  minussa minusta minuun minulla minulta minulle               | I
+sinä   sinun  sinut  sinua  sinussa sinusta sinuun sinulla sinulta sinulle               | you
+hän    hänen  hänet  häntä  hänessä hänestä häneen hänellä häneltä hänelle               | he she
+me     meidän meidät meitä  meissä  meistä  meihin meillä  meiltä  meille                | we
+te     teidän teidät teitä  teissä  teistä  teihin teillä  teiltä  teille                | you
+he     heidän heidät heitä  heissä  heistä  heihin heillä  heiltä  heille                | they
+
+tämä   tämän         tätä   tässä   tästä   tähän  tallä   tältä   tälle   tänä   täksi  | this
+tuo    tuon          tuotä  tuossa  tuosta  tuohon tuolla  tuolta  tuolle  tuona  tuoksi | that
+se     sen           sitä   siinä   siitä   siihen sillä   siltä   sille   sinä   siksi  | it
+nämä   näiden        näitä  näissä  näistä  näihin näillä  näiltä  näille  näinä  näiksi | these
+nuo    noiden        noita  noissa  noista  noihin noilla  noilta  noille  noina  noiksi | those
+ne     niiden        niitä  niissä  niistä  niihin niillä  niiltä  niille  niinä  niiksi | they
+
+kuka   kenen kenet   ketä   kenessä kenestä keneen kenellä keneltä kenelle kenenä keneksi| who
+ketkä  keiden ketkä  keitä  keissä  keistä  keihin keillä  keiltä  keille  keinä  keiksi | (pl)
+mikä   minkä minkä   mitä   missä   mistä   mihin  millä   miltä   mille   minä   miksi  | which what
+mitkä                                                                                    | (pl)
+
+joka   jonka         jota   jossa   josta   johon  jolla   jolta   jolle   jona   joksi  | who which
+jotka  joiden        joita  joissa  joista  joihin joilla  joilta  joille  joina  joiksi | (pl)
+
+| conjunctions
+
+että   | that
+ja     | and
+jos    | if
+koska  | because
+kuin   | than
+mutta  | but
+niin   | so
+sekä   | and
+sillä  | for
+tai    | or
+vaan   | but
+vai    | or
+vaikka | although
+
+
+| prepositions
+
+kanssa  | with
+mukaan  | according to
+noin    | about
+poikki  | across
+yli     | over, across
+
+| other
+
+kun    | when
+niin   | so
+nyt    | now
+itse   | self
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fr.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fr.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fr.txt
new file mode 100644
index 0000000..749abae
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_fr.txt
@@ -0,0 +1,186 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/french/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+
+ | A French stop word list. Comments begin with vertical bar. Each stop
+ | word is at the start of a line.
+
+au             |  a + le
+aux            |  a + les
+avec           |  with
+ce             |  this
+ces            |  these
+dans           |  with
+de             |  of
+des            |  de + les
+du             |  de + le
+elle           |  she
+en             |  `of them' etc
+et             |  and
+eux            |  them
+il             |  he
+je             |  I
+la             |  the
+le             |  the
+leur           |  their
+lui            |  him
+ma             |  my (fem)
+mais           |  but
+me             |  me
+même           |  same; as in moi-même (myself) etc
+mes            |  me (pl)
+moi            |  me
+mon            |  my (masc)
+ne             |  not
+nos            |  our (pl)
+notre          |  our
+nous           |  we
+on             |  one
+ou             |  where
+par            |  by
+pas            |  not
+pour           |  for
+qu             |  que before vowel
+que            |  that
+qui            |  who
+sa             |  his, her (fem)
+se             |  oneself
+ses            |  his (pl)
+son            |  his, her (masc)
+sur            |  on
+ta             |  thy (fem)
+te             |  thee
+tes            |  thy (pl)
+toi            |  thee
+ton            |  thy (masc)
+tu             |  thou
+un             |  a
+une            |  a
+vos            |  your (pl)
+votre          |  your
+vous           |  you
+
+               |  single letter forms
+
+c              |  c'
+d              |  d'
+j              |  j'
+l              |  l'
+à              |  to, at
+m              |  m'
+n              |  n'
+s              |  s'
+t              |  t'
+y              |  there
+
+               | forms of être (not including the infinitive):
+été
+étée
+étées
+étés
+étant
+suis
+es
+est
+sommes
+êtes
+sont
+serai
+seras
+sera
+serons
+serez
+seront
+serais
+serait
+serions
+seriez
+seraient
+étais
+était
+étions
+étiez
+étaient
+fus
+fut
+fûmes
+fûtes
+furent
+sois
+soit
+soyons
+soyez
+soient
+fusse
+fusses
+fût
+fussions
+fussiez
+fussent
+
+               | forms of avoir (not including the infinitive):
+ayant
+eu
+eue
+eues
+eus
+ai
+as
+avons
+avez
+ont
+aurai
+auras
+aura
+aurons
+aurez
+auront
+aurais
+aurait
+aurions
+auriez
+auraient
+avais
+avait
+avions
+aviez
+avaient
+eut
+eûmes
+eûtes
+eurent
+aie
+aies
+ait
+ayons
+ayez
+aient
+eusse
+eusses
+eût
+eussions
+eussiez
+eussent
+
+               | Later additions (from Jean-Christophe Deschamps)
+ceci           |  this
+cela           |  that
+celà           |  that
+cet            |  this
+cette          |  this
+ici            |  here
+ils            |  they
+les            |  the (pl)
+leurs          |  their (pl)
+quel           |  which
+quels          |  which
+quelle         |  which
+quelles        |  which
+sans           |  without
+soi            |  oneself
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ga.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ga.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ga.txt
new file mode 100644
index 0000000..9ff88d7
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ga.txt
@@ -0,0 +1,110 @@
+
+a
+ach
+ag
+agus
+an
+aon
+ar
+arna
+as
+b'
+ba
+beirt
+bhúr
+caoga
+ceathair
+ceathrar
+chomh
+chtó
+chuig
+chun
+cois
+céad
+cúig
+cúigear
+d'
+daichead
+dar
+de
+deich
+deichniúr
+den
+dhá
+do
+don
+dtí
+dá
+dár
+dó
+faoi
+faoin
+faoina
+faoinár
+fara
+fiche
+gach
+gan
+go
+gur
+haon
+hocht
+i
+iad
+idir
+in
+ina
+ins
+inár
+is
+le
+leis
+lena
+lenár
+m'
+mar
+mo
+mé
+na
+nach
+naoi
+naonúr
+ná
+ní
+níor
+nó
+nócha
+ocht
+ochtar
+os
+roimh
+sa
+seacht
+seachtar
+seachtó
+seasca
+seisear
+siad
+sibh
+sinn
+sna
+sé
+sí
+tar
+thar
+thú
+triúr
+trí
+trína
+trínár
+tríocha
+tú
+um
+ár
+é
+éis
+í
+ó
+ón
+óna
+ónár

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_gl.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_gl.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_gl.txt
new file mode 100644
index 0000000..d8760b1
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_gl.txt
@@ -0,0 +1,161 @@
+# galican stopwords
+a
+aínda
+alí
+aquel
+aquela
+aquelas
+aqueles
+aquilo
+aquí
+ao
+aos
+as
+así
+á
+ben
+cando
+che
+co
+coa
+comigo
+con
+connosco
+contigo
+convosco
+coas
+cos
+cun
+cuns
+cunha
+cunhas
+da
+dalgunha
+dalgunhas
+dalgún
+dalgúns
+das
+de
+del
+dela
+delas
+deles
+desde
+deste
+do
+dos
+dun
+duns
+dunha
+dunhas
+e
+el
+ela
+elas
+eles
+en
+era
+eran
+esa
+esas
+ese
+eses
+esta
+estar
+estaba
+está
+están
+este
+estes
+estiven
+estou
+eu
+é
+facer
+foi
+foron
+fun
+había
+hai
+iso
+isto
+la
+las
+lle
+lles
+lo
+los
+mais
+me
+meu
+meus
+min
+miña
+miñas
+moi
+na
+nas
+neste
+nin
+no
+non
+nos
+nosa
+nosas
+noso
+nosos
+nós
+nun
+nunha
+nuns
+nunhas
+o
+os
+ou
+ó
+ós
+para
+pero
+pode
+pois
+pola
+polas
+polo
+polos
+por
+que
+se
+senón
+ser
+seu
+seus
+sexa
+sido
+sobre
+súa
+súas
+tamén
+tan
+te
+ten
+teñen
+teño
+ter
+teu
+teus
+ti
+tido
+tiña
+tiven
+túa
+túas
+un
+unha
+unhas
+uns
+vos
+vosa
+vosas
+voso
+vosos
+vós

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hi.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hi.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hi.txt
new file mode 100644
index 0000000..86286bb
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hi.txt
@@ -0,0 +1,235 @@
+# Also see http://www.opensource.org/licenses/bsd-license.html
+# See http://members.unine.ch/jacques.savoy/clef/index.html.
+# This file was created by Jacques Savoy and is distributed under the BSD license.
+# Note: by default this file also contains forms normalized by HindiNormalizer 
+# for spelling variation (see section below), such that it can be used whether or 
+# not you enable that feature. When adding additional entries to this list,
+# please add the normalized form as well. 
+अंदर
+अत
+अपना
+अपनी
+अपने
+अभी
+आदि
+आप
+इत्यादि
+इन 
+इनका
+इन्हीं
+इन्हें
+इन्हों
+इस
+इसका
+इसकी
+इसके
+इसमें
+इसी
+इसे
+उन
+उनका
+उनकी
+उनके
+उनको
+उन्हीं
+उन्हें
+उन्हों
+उस
+उसके
+उसी
+उसे
+एक
+एवं
+एस
+ऐसे
+और
+कई
+कर
+करता
+करते
+करना
+करने
+करें
+कहते
+कहा
+का
+काफ़ी
+कि
+कितना
+किन्हें
+किन्हों
+किया
+किर
+किस
+किसी
+किसे
+की
+कुछ
+कुल
+के
+को
+कोई
+कौन
+कौनसा
+गया
+घर
+जब
+जहाँ
+जा
+जितना
+जिन
+जिन्हें
+जिन्हों
+जिस
+जिसे
+जीधर
+जैसा
+जैसे
+जो
+तक
+तब
+तरह
+तिन
+तिन्हें
+तिन्हों
+तिस
+तिसे
+तो
+था
+थी
+थे
+दबारा
+दिया
+दुसरा
+दूसरे
+दो
+द्वारा
+न
+नहीं
+ना
+निहायत
+नीचे
+ने
+पर
+पर  
+पहले
+पूरा
+पे
+फिर
+बनी
+बही
+बहुत
+बाद
+बाला
+बिलकुल
+भी
+भीतर
+मगर
+मानो
+मे
+में
+यदि
+यह
+यहाँ
+यही
+या
+यिह 
+ये
+रखें
+रहा
+रहे
+ऱ्वासा
+लिए
+लिये
+लेकिन
+व
+वर्ग
+वह
+वह 
+वहाँ
+वहीं
+वाले
+वुह 
+वे
+वग़ैरह
+संग
+सकता
+सकते
+सबसे
+सभी
+साथ
+साबुत
+साभ
+सारा
+से
+सो
+ही
+हुआ
+हुई
+हुए
+है
+हैं
+हो
+होता
+होती
+होते
+होना
+होने
+# additional normalized forms of the above
+अपनि
+जेसे
+होति
+सभि
+तिंहों
+इंहों
+दवारा
+इसि
+किंहें
+थि
+उंहों
+ओर
+जिंहें
+वहिं
+अभि
+बनि
+हि
+उंहिं
+उंहें
+हें
+वगेरह
+एसे
+रवासा
+कोन
+निचे
+काफि
+उसि
+पुरा
+भितर
+हे
+बहि
+वहां
+कोइ
+यहां
+जिंहों
+तिंहें
+किसि
+कइ
+यहि
+इंहिं
+जिधर
+इंहें
+अदि
+इतयादि
+हुइ
+कोनसा
+इसकि
+दुसरे
+जहां
+अप
+किंहों
+उनकि
+भि
+वरग
+हुअ
+जेसा
+नहिं

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hu.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hu.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hu.txt
new file mode 100644
index 0000000..37526da
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hu.txt
@@ -0,0 +1,211 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/hungarian/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+ 
+| Hungarian stop word list
+| prepared by Anna Tordai
+
+a
+ahogy
+ahol
+aki
+akik
+akkor
+alatt
+által
+általában
+amely
+amelyek
+amelyekben
+amelyeket
+amelyet
+amelynek
+ami
+amit
+amolyan
+amíg
+amikor
+át
+abban
+ahhoz
+annak
+arra
+arról
+az
+azok
+azon
+azt
+azzal
+azért
+aztán
+azután
+azonban
+bár
+be
+belül
+benne
+cikk
+cikkek
+cikkeket
+csak
+de
+e
+eddig
+egész
+egy
+egyes
+egyetlen
+egyéb
+egyik
+egyre
+ekkor
+el
+elég
+ellen
+elő
+először
+előtt
+első
+én
+éppen
+ebben
+ehhez
+emilyen
+ennek
+erre
+ez
+ezt
+ezek
+ezen
+ezzel
+ezért
+és
+fel
+felé
+hanem
+hiszen
+hogy
+hogyan
+igen
+így
+illetve
+ill.
+ill
+ilyen
+ilyenkor
+ison
+ismét
+itt
+jó
+jól
+jobban
+kell
+kellett
+keresztül
+keressünk
+ki
+kívül
+között
+közül
+legalább
+lehet
+lehetett
+legyen
+lenne
+lenni
+lesz
+lett
+maga
+magát
+majd
+majd
+már
+más
+másik
+meg
+még
+mellett
+mert
+mely
+melyek
+mi
+mit
+míg
+miért
+milyen
+mikor
+minden
+mindent
+mindenki
+mindig
+mint
+mintha
+mivel
+most
+nagy
+nagyobb
+nagyon
+ne
+néha
+nekem
+neki
+nem
+néhány
+nélkül
+nincs
+olyan
+ott
+össze
+ő
+ők
+őket
+pedig
+persze
+rá
+s
+saját
+sem
+semmi
+sok
+sokat
+sokkal
+számára
+szemben
+szerint
+szinte
+talán
+tehát
+teljes
+tovább
+továbbá
+több
+úgy
+ugyanis
+új
+újabb
+újra
+után
+utána
+utolsó
+vagy
+vagyis
+valaki
+valami
+valamint
+való
+vagyok
+van
+vannak
+volt
+voltam
+voltak
+voltunk
+vissza
+vele
+viszont
+volna

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hy.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hy.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hy.txt
new file mode 100644
index 0000000..60c1c50
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_hy.txt
@@ -0,0 +1,46 @@
+# example set of Armenian stopwords.
+այդ
+այլ
+այն
+այս
+դու
+դուք
+եմ
+են
+ենք
+ես
+եք
+է
+էի
+էին
+էինք
+էիր
+էիք
+էր
+ըստ
+թ
+ի
+ին
+իսկ
+իր
+կամ
+համար
+հետ
+հետո
+մենք
+մեջ
+մի
+ն
+նա
+նաև
+նրա
+նրանք
+որ
+որը
+որոնք
+որպես
+ու
+ում
+պիտի
+վրա
+և

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_id.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_id.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_id.txt
new file mode 100644
index 0000000..4617f83
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_id.txt
@@ -0,0 +1,359 @@
+# from appendix D of: A Study of Stemming Effects on Information
+# Retrieval in Bahasa Indonesia
+ada
+adanya
+adalah
+adapun
+agak
+agaknya
+agar
+akan
+akankah
+akhirnya
+aku
+akulah
+amat
+amatlah
+anda
+andalah
+antar
+diantaranya
+antara
+antaranya
+diantara
+apa
+apaan
+mengapa
+apabila
+apakah
+apalagi
+apatah
+atau
+ataukah
+ataupun
+bagai
+bagaikan
+sebagai
+sebagainya
+bagaimana
+bagaimanapun
+sebagaimana
+bagaimanakah
+bagi
+bahkan
+bahwa
+bahwasanya
+sebaliknya
+banyak
+sebanyak
+beberapa
+seberapa
+begini
+beginian
+beginikah
+beginilah
+sebegini
+begitu
+begitukah
+begitulah
+begitupun
+sebegitu
+belum
+belumlah
+sebelum
+sebelumnya
+sebenarnya
+berapa
+berapakah
+berapalah
+berapapun
+betulkah
+sebetulnya
+biasa
+biasanya
+bila
+bilakah
+bisa
+bisakah
+sebisanya
+boleh
+bolehkah
+bolehlah
+buat
+bukan
+bukankah
+bukanlah
+bukannya
+cuma
+percuma
+dahulu
+dalam
+dan
+dapat
+dari
+daripada
+dekat
+demi
+demikian
+demikianlah
+sedemikian
+dengan
+depan
+di
+dia
+dialah
+dini
+diri
+dirinya
+terdiri
+dong
+dulu
+enggak
+enggaknya
+entah
+entahlah
+terhadap
+terhadapnya
+hal
+hampir
+hanya
+hanyalah
+harus
+haruslah
+harusnya
+seharusnya
+hendak
+hendaklah
+hendaknya
+hingga
+sehingga
+ia
+ialah
+ibarat
+ingin
+inginkah
+inginkan
+ini
+inikah
+inilah
+itu
+itukah
+itulah
+jangan
+jangankan
+janganlah
+jika
+jikalau
+juga
+justru
+kala
+kalau
+kalaulah
+kalaupun
+kalian
+kami
+kamilah
+kamu
+kamulah
+kan
+kapan
+kapankah
+kapanpun
+dikarenakan
+karena
+karenanya
+ke
+kecil
+kemudian
+kenapa
+kepada
+kepadanya
+ketika
+seketika
+khususnya
+kini
+kinilah
+kiranya
+sekiranya
+kita
+kitalah
+kok
+lagi
+lagian
+selagi
+lah
+lain
+lainnya
+melainkan
+selaku
+lalu
+melalui
+terlalu
+lama
+lamanya
+selama
+selama
+selamanya
+lebih
+terlebih
+bermacam
+macam
+semacam
+maka
+makanya
+makin
+malah
+malahan
+mampu
+mampukah
+mana
+manakala
+manalagi
+masih
+masihkah
+semasih
+masing
+mau
+maupun
+semaunya
+memang
+mereka
+merekalah
+meski
+meskipun
+semula
+mungkin
+mungkinkah
+nah
+namun
+nanti
+nantinya
+nyaris
+oleh
+olehnya
+seorang
+seseorang
+pada
+padanya
+padahal
+paling
+sepanjang
+pantas
+sepantasnya
+sepantasnyalah
+para
+pasti
+pastilah
+per
+pernah
+pula
+pun
+merupakan
+rupanya
+serupa
+saat
+saatnya
+sesaat
+saja
+sajalah
+saling
+bersama
+sama
+sesama
+sambil
+sampai
+sana
+sangat
+sangatlah
+saya
+sayalah
+se
+sebab
+sebabnya
+sebuah
+tersebut
+tersebutlah
+sedang
+sedangkan
+sedikit
+sedikitnya
+segala
+segalanya
+segera
+sesegera
+sejak
+sejenak
+sekali
+sekalian
+sekalipun
+sesekali
+sekaligus
+sekarang
+sekarang
+sekitar
+sekitarnya
+sela
+selain
+selalu
+seluruh
+seluruhnya
+semakin
+sementara
+sempat
+semua
+semuanya
+sendiri
+sendirinya
+seolah
+seperti
+sepertinya
+sering
+seringnya
+serta
+siapa
+siapakah
+siapapun
+disini
+disinilah
+sini
+sinilah
+sesuatu
+sesuatunya
+suatu
+sesudah
+sesudahnya
+sudah
+sudahkah
+sudahlah
+supaya
+tadi
+tadinya
+tak
+tanpa
+setelah
+telah
+tentang
+tentu
+tentulah
+tentunya
+tertentu
+seterusnya
+tapi
+tetapi
+setiap
+tiap
+setidaknya
+tidak
+tidakkah
+tidaklah
+toh
+waduh
+wah
+wahai
+sewaktu
+walau
+walaupun
+wong
+yaitu
+yakni
+yang


[20/53] [abbrv] lucene-solr:feature/autoscaling: LUCENE-7890: The `SortedSetDocValues` and `SortedNumericDocValues` instances returned by the MemoryIndex should support subsequent `advanceExact(0)` invocations.

Posted by sh...@apache.org.
LUCENE-7890: The `SortedSetDocValues` and `SortedNumericDocValues` instances returned by the MemoryIndex should support subsequent `advanceExact(0)` invocations.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/9f096200
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/9f096200
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/9f096200

Branch: refs/heads/feature/autoscaling
Commit: 9f096200b23ca1ff7b9d3c864c27a5b2b707f62a
Parents: c9c0121
Author: Martijn van Groningen <mv...@apache.org>
Authored: Thu Jun 29 15:03:44 2017 +0200
Committer: Martijn van Groningen <mv...@apache.org>
Committed: Thu Jun 29 15:03:44 2017 +0200

----------------------------------------------------------------------
 .../apache/lucene/index/memory/MemoryIndex.java |  6 ++-
 .../lucene/index/memory/TestMemoryIndex.java    | 40 ++++++++++++++++++++
 2 files changed, 44 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9f096200/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
----------------------------------------------------------------------
diff --git a/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java b/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
index 9812a39..fa6b564 100644
--- a/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
+++ b/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
@@ -938,11 +938,11 @@ public class MemoryIndex {
     MemoryDocValuesIterator it = new MemoryDocValuesIterator();
     return new SortedNumericDocValues() {
 
-      int value = 0;
+      int ord = 0;
 
       @Override
       public long nextValue() throws IOException {
-        return values[value++];
+        return values[ord++];
       }
 
       @Override
@@ -952,6 +952,7 @@ public class MemoryIndex {
 
       @Override
       public boolean advanceExact(int target) throws IOException {
+        ord = 0;
         return it.advance(target) == target;
       }
 
@@ -1082,6 +1083,7 @@ public class MemoryIndex {
 
       @Override
       public boolean advanceExact(int target) throws IOException {
+        ord = 0;
         return it.advance(target) == target;
       }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9f096200/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
----------------------------------------------------------------------
diff --git a/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java b/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
index d4ce8f1..a737aad 100644
--- a/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
+++ b/lucene/memory/src/test/org/apache/lucene/index/memory/TestMemoryIndex.java
@@ -302,6 +302,46 @@ public class TestMemoryIndex extends LuceneTestCase {
     assertEquals("f", sortedSetDocValues.lookupOrd(2L).utf8ToString());
   }
 
+  public void testDocValues_resetIterator() throws Exception {
+    Document doc = new Document();
+
+    doc.add(new SortedSetDocValuesField("sorted_set", new BytesRef("f")));
+    doc.add(new SortedSetDocValuesField("sorted_set", new BytesRef("d")));
+    doc.add(new SortedSetDocValuesField("sorted_set", new BytesRef("d")));
+    doc.add(new SortedSetDocValuesField("sorted_set", new BytesRef("c")));
+
+    doc.add(new SortedNumericDocValuesField("sorted_numeric", 33L));
+    doc.add(new SortedNumericDocValuesField("sorted_numeric", 32L));
+    doc.add(new SortedNumericDocValuesField("sorted_numeric", 32L));
+    doc.add(new SortedNumericDocValuesField("sorted_numeric", 31L));
+    doc.add(new SortedNumericDocValuesField("sorted_numeric", 30L));
+
+    MemoryIndex mi = MemoryIndex.fromDocument(doc, analyzer);
+    LeafReader leafReader = mi.createSearcher().getIndexReader().leaves().get(0).reader();
+
+    SortedSetDocValues sortedSetDocValues = leafReader.getSortedSetDocValues("sorted_set");
+    assertEquals(3, sortedSetDocValues.getValueCount());
+    for (int times = 0; times < 3; times++) {
+      assertTrue(sortedSetDocValues.advanceExact(0));
+      assertEquals(0L, sortedSetDocValues.nextOrd());
+      assertEquals(1L, sortedSetDocValues.nextOrd());
+      assertEquals(2L, sortedSetDocValues.nextOrd());
+      assertEquals(SortedSetDocValues.NO_MORE_ORDS, sortedSetDocValues.nextOrd());
+    }
+
+    SortedNumericDocValues sortedNumericDocValues = leafReader.getSortedNumericDocValues("sorted_numeric");
+    for (int times = 0; times < 3; times++) {
+      assertTrue(sortedNumericDocValues.advanceExact(0));
+      assertEquals(5, sortedNumericDocValues.docValueCount());
+      assertEquals(30L, sortedNumericDocValues.nextValue());
+      assertEquals(31L, sortedNumericDocValues.nextValue());
+      assertEquals(32L, sortedNumericDocValues.nextValue());
+      assertEquals(32L, sortedNumericDocValues.nextValue());
+      assertEquals(33L, sortedNumericDocValues.nextValue());
+    }
+
+  }
+
   public void testInvalidDocValuesUsage() throws Exception {
     Document doc = new Document();
     doc.add(new NumericDocValuesField("field", 29L));


[21/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10272: Fix for test failure, while comparing directory contents of _default configsets

Posted by sh...@apache.org.
SOLR-10272: Fix for test failure, while comparing directory contents of _default configsets


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/46bfd9cf
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/46bfd9cf
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/46bfd9cf

Branch: refs/heads/feature/autoscaling
Commit: 46bfd9cf7e9da99e936fe986af88f4ab47d7fe33
Parents: 9f09620
Author: Ishan Chattopadhyaya <is...@apache.org>
Authored: Thu Jun 29 21:52:19 2017 +0530
Committer: Ishan Chattopadhyaya <is...@apache.org>
Committed: Thu Jun 29 21:52:19 2017 +0530

----------------------------------------------------------------------
 .../core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/46bfd9cf/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
index a9e5837..364108c 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
@@ -744,7 +744,11 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
         FileVisitResult result = super.preVisitDirectory(dir, attrs);
         Path relativePath = userDefault.toPath().relativize(dir);
         File testDefaultFile = testDefault.toPath().resolve(relativePath).toFile();
-        assertEquals("Mismatch in files", Arrays.toString(dir.toFile().list()), Arrays.toString(testDefaultFile.list()));
+        String[] listOne = dir.toFile().list();
+        String[] listTwo = testDefaultFile.list();
+        Arrays.sort(listOne);
+        Arrays.sort(listTwo);
+        assertEquals("Mismatch in files", Arrays.toString(listOne), Arrays.toString(listTwo));
         return result;
       }
       @Override


[36/53] [abbrv] lucene-solr:feature/autoscaling: LUCENE-5822 fix smoke test for renamed README

Posted by sh...@apache.org.
LUCENE-5822 fix smoke test for renamed README


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/5b484806
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/5b484806
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/5b484806

Branch: refs/heads/feature/autoscaling
Commit: 5b484806a07e6bb4888c4c704de4eee891d76910
Parents: 2e56e7e
Author: Mike Drob <md...@apache.org>
Authored: Fri Jun 30 16:22:37 2017 -0500
Committer: Mike Drob <md...@apache.org>
Committed: Sat Jul 1 16:10:51 2017 -0700

----------------------------------------------------------------------
 dev-tools/scripts/.smokeTestRelease.py.swp | Bin 0 -> 16384 bytes
 dev-tools/scripts/smokeTestRelease.py      |  12 ++++++++----
 2 files changed, 8 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5b484806/dev-tools/scripts/.smokeTestRelease.py.swp
----------------------------------------------------------------------
diff --git a/dev-tools/scripts/.smokeTestRelease.py.swp b/dev-tools/scripts/.smokeTestRelease.py.swp
new file mode 100644
index 0000000..3c5acb1
Binary files /dev/null and b/dev-tools/scripts/.smokeTestRelease.py.swp differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5b484806/dev-tools/scripts/smokeTestRelease.py
----------------------------------------------------------------------
diff --git a/dev-tools/scripts/smokeTestRelease.py b/dev-tools/scripts/smokeTestRelease.py
index 84978bb..1083a09 100644
--- a/dev-tools/scripts/smokeTestRelease.py
+++ b/dev-tools/scripts/smokeTestRelease.py
@@ -644,10 +644,14 @@ def verifyUnpacked(java, project, artifact, unpackPath, gitRevision, version, te
       textFiles.append('BUILD')
 
   for fileName in textFiles:
-    fileName += '.txt'
-    if fileName not in l:
-      raise RuntimeError('file "%s" is missing from artifact %s' % (fileName, artifact))
-    l.remove(fileName)
+    fileNameTxt = fileName + '.txt'
+    fileNameMd = fileName + '.md'
+    if fileNameTxt in l:
+      l.remove(fileNameTxt)
+    elif fileNameMd in l:
+      l.remove(fileNameMd)
+    else:
+      raise RuntimeError('file "%s".[txt|md] is missing from artifact %s' % (fileName, artifact))
 
   if project == 'lucene':
     if LUCENE_NOTICE is None:


[04/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-6807: requestDispatcher/@handleSelect now defaults to false; stop using it. Deprecated StandardRequestHandler; stop using it.

Posted by sh...@apache.org.
SOLR-6807: requestDispatcher/@handleSelect now defaults to false; stop using it.
Deprecated StandardRequestHandler; stop using it.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/82a44beb
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/82a44beb
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/82a44beb

Branch: refs/heads/feature/autoscaling
Commit: 82a44beb3cbb685e4d30d55d06eb78f012afb93c
Parents: d5963be
Author: David Smiley <ds...@apache.org>
Authored: Wed Jun 28 17:22:43 2017 -0400
Committer: David Smiley <ds...@apache.org>
Committed: Wed Jun 28 17:22:44 2017 -0400

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  12 +
 .../collection1/conf/solrconfig-icucollate.xml  |   2 +-
 .../collection1/conf/solrconfig-analytics.xml   |   2 +-
 .../solr/collection1/conf/solrconfig.xml        |  20 +-
 .../clustering/ClusteringComponentTest.java     |   2 +-
 .../collection1/conf/dataimport-solrconfig.xml  |  40 ++--
 .../conf/contentstream-solrconfig.xml           |  42 ++--
 .../conf/dataimport-nodatasource-solrconfig.xml |  42 ++--
 .../collection1/conf/dataimport-solrconfig.xml  |  42 ++--
 .../solr/collection1/conf/solrconfig.xml        |  37 +--
 .../extraction/TestXLSXResponseWriter.java      |   2 +-
 .../conf/solrconfig-languageidentifier.xml      |   4 +-
 .../uima/solr/collection1/conf/solrconfig.xml   |  25 +-
 .../uima/uima-tokenizers-solrconfig.xml         |  15 +-
 .../java/org/apache/solr/core/SolrConfig.java   |   3 +-
 .../solr/handler/MoreLikeThisHandler.java       |   2 +-
 .../apache/solr/handler/RequestHandlerBase.java |   1 -
 .../solr/handler/StandardRequestHandler.java    |  19 +-
 .../org/apache/solr/util/SolrPluginUtils.java   |  12 +-
 .../resources/SystemCollectionSolrConfig.xml    |   2 +-
 .../collection1/conf/bad-error-solrconfig.xml   |   2 +-
 .../collection1/conf/bad-mpf-solrconfig.xml     |   2 +-
 ...dd-schema-fields-update-processor-chains.xml |   2 +-
 .../conf/solrconfig-altdirectory.xml            |   2 +-
 .../conf/solrconfig-analytics-query.xml         | 227 +------------------
 .../solr/collection1/conf/solrconfig-basic.xml  |   2 +-
 .../conf/solrconfig-blockjoinfacetcomponent.xml |  11 +-
 .../conf/solrconfig-cache-enable-disable.xml    |   4 +-
 .../solr/collection1/conf/solrconfig-cdcr.xml   |   2 +-
 .../conf/solrconfig-cdcrupdatelog.xml           |   2 +-
 .../conf/solrconfig-classification.xml          |   2 +-
 .../conf/solrconfig-collapseqparser.xml         | 125 +---------
 .../conf/solrconfig-components-name.xml         |   4 +-
 .../solrconfig-configurerecoverystrategy.xml    |   2 +-
 .../conf/solrconfig-customrecoverystrategy.xml  |   2 +-
 .../conf/solrconfig-delaying-component.xml      |   2 +-
 .../collection1/conf/solrconfig-delpolicy1.xml  |   2 +-
 .../collection1/conf/solrconfig-delpolicy2.xml  |   2 +-
 ...lrconfig-distrib-update-processor-chains.xml |   3 +-
 .../conf/solrconfig-doctransformers.xml         |   4 +-
 .../collection1/conf/solrconfig-elevate.xml     |   2 +-
 .../solrconfig-externalversionconstraint.xml    |   2 +-
 .../conf/solrconfig-functionquery.xml           |   4 +-
 .../solr/collection1/conf/solrconfig-hash.xml   |   4 +-
 .../collection1/conf/solrconfig-headers.xml     |   2 +-
 .../collection1/conf/solrconfig-highlight.xml   |   2 +-
 .../conf/solrconfig-implicitproperties.xml      |   2 +-
 .../conf/solrconfig-infixsuggesters.xml         |   2 +-
 .../conf/solrconfig-logmergepolicyfactory.xml   |   2 +-
 .../conf/solrconfig-managed-schema-test.xml     |   2 +-
 .../conf/solrconfig-managed-schema.xml          |   4 +-
 .../conf/solrconfig-master-throttled.xml        |   8 +-
 .../solr/collection1/conf/solrconfig-master.xml |   8 +-
 .../conf/solrconfig-master1-keepOneBackup.xml   |   4 +-
 .../collection1/conf/solrconfig-master1.xml     |   8 +-
 .../collection1/conf/solrconfig-master2.xml     |   8 +-
 .../collection1/conf/solrconfig-master3.xml     |   8 +-
 .../conf/solrconfig-mergepolicy-defaults.xml    |   2 +-
 .../conf/solrconfig-mergepolicy-legacy.xml      |   2 +-
 .../solrconfig-mergepolicyfactory-nocfs.xml     |   2 +-
 .../collection1/conf/solrconfig-nocache.xml     |   8 +-
 .../conf/solrconfig-nomergepolicyfactory.xml    |   2 +-
 .../collection1/conf/solrconfig-noopregen.xml   |   2 +-
 .../collection1/conf/solrconfig-paramset.xml    |   2 +-
 ...lrconfig-parsing-update-processor-chains.xml |   2 +-
 .../conf/solrconfig-phrasesuggest.xml           |   2 +-
 .../conf/solrconfig-plugcollector.xml           |  28 +--
 .../conf/solrconfig-postingshighlight.xml       |   2 +-
 .../conf/solrconfig-query-parser-init.xml       |   2 +-
 .../conf/solrconfig-querysender-noquery.xml     |   2 +-
 .../collection1/conf/solrconfig-querysender.xml |   8 +-
 .../collection1/conf/solrconfig-repeater.xml    |   8 +-
 .../collection1/conf/solrconfig-reqHandler.incl |   2 +-
 .../conf/solrconfig-response-log-component.xml  |  16 +-
 .../collection1/conf/solrconfig-schemaless.xml  |   2 +-
 .../conf/solrconfig-script-updateprocessor.xml  |   2 +-
 .../conf/solrconfig-searcher-listeners1.xml     |   2 +-
 .../solr/collection1/conf/solrconfig-slave.xml  |   8 +-
 .../solr/collection1/conf/solrconfig-slave1.xml |   8 +-
 .../conf/solrconfig-solcoreproperties.xml       |   2 +-
 .../solrconfig-sortingmergepolicyfactory.xml    |   4 +-
 .../conf/solrconfig-sortingresponse.xml         |   2 +-
 .../collection1/conf/solrconfig-spatial.xml     |   2 +-
 .../conf/solrconfig-spellcheckcomponent.xml     |  12 +-
 .../conf/solrconfig-spellchecker.xml            |   2 +-
 .../solr/collection1/conf/solrconfig-sql.xml    |   4 +-
 ...-suggestercomponent-context-filter-query.xml |   2 +-
 .../conf/solrconfig-suggestercomponent.xml      |   2 +-
 .../collection1/conf/solrconfig-test-misc.xml   |   4 +-
 .../conf/solrconfig-testxmlparser.xml           |   2 +-
 .../solrconfig-tieredmergepolicyfactory.xml     |   2 +-
 .../solr/collection1/conf/solrconfig-tlog.xml   |   5 +-
 ...nfig-uninvertdocvaluesmergepolicyfactory.xml |   2 +-
 .../conf/solrconfig-update-processor-chains.xml |   2 +-
 ...lrconfig-warmer-randommergepolicyfactory.xml |   2 +-
 .../solr/collection1/conf/solrconfig.xml        |  35 ++-
 .../conf/solrconfig_SimpleTextCodec.xml         |   2 +-
 .../solr/collection1/conf/solrconfig_codec.xml  |   2 +-
 .../solr/collection1/conf/solrconfig_codec2.xml |   2 +-
 .../solr/collection1/conf/solrconfig_perf.xml   |   5 +-
 .../bad-mergepolicy/conf/solrconfig.xml         |   2 +-
 .../configsets/cdcr-source/conf/solrconfig.xml  |   3 +-
 .../configsets/cdcr-target/conf/solrconfig.xml  |   3 +-
 .../exitable-directory/conf/solrconfig.xml      |   2 +-
 .../test-files/solr/crazy-path-to-config.xml    |  10 +-
 .../org/apache/solr/BasicFunctionalityTest.java |   6 +-
 .../org/apache/solr/ConvertedLegacyTest.java    |  46 ++--
 .../apache/solr/DisMaxRequestHandlerTest.java   |   8 +-
 .../test/org/apache/solr/EchoParamsTest.java    |   4 +-
 .../src/test/org/apache/solr/SampleTest.java    |   2 +-
 .../test/org/apache/solr/SolrInfoBeanTest.java  |   4 +-
 .../org/apache/solr/TestDistributedSearch.java  |   6 +-
 .../test/org/apache/solr/cloud/BasicZkTest.java |   2 +-
 .../cloud/TestRandomRequestDistribution.java    |   4 +-
 .../solr/core/AlternateDirectoryTest.java       |   2 +-
 .../apache/solr/core/RequestHandlersTest.java   |   8 +-
 .../test/org/apache/solr/core/SolrCoreTest.java |   2 +-
 .../test/org/apache/solr/core/TestConfig.java   |   4 +-
 .../solr/core/TestQuerySenderListener.java      |   2 +-
 .../solr/core/TestQuerySenderNoQuery.java       |   2 +-
 .../apache/solr/core/TestXIncludeConfig.java    |   2 +-
 .../solr/handler/MoreLikeThisHandlerTest.java   |   1 -
 .../apache/solr/handler/SearchHandlerTest.java  |  80 +++++++
 .../handler/StandardRequestHandlerTest.java     |  88 -------
 .../DistributedSpellCheckComponentTest.java     |  10 +-
 .../handler/component/FacetPivotSmallTest.java  |   1 -
 .../component/ResponseLogComponentTest.java     |  12 +-
 .../component/SpellCheckComponentTest.java      |  10 +-
 .../handler/component/StatsComponentTest.java   |   1 -
 .../handler/component/SuggestComponentTest.java |   2 +-
 .../component/TermVectorComponentTest.java      |   2 +-
 .../highlight/FastVectorHighlighterTest.java    |   2 +-
 .../solr/highlight/HighlighterConfigTest.java   |   2 +-
 .../apache/solr/highlight/HighlighterTest.java  |  84 +++----
 .../metrics/SolrMetricsIntegrationTest.java     |   2 +-
 .../apache/solr/request/SimpleFacetsTest.java   |   4 +-
 .../solr/request/TestIntervalFaceting.java      |   2 +-
 .../search/TestComplexPhraseQParserPlugin.java  |   8 +-
 .../search/join/BlockJoinFacetDistribTest.java  |   2 +-
 .../search/join/BlockJoinFacetRandomTest.java   |   2 +-
 .../search/join/BlockJoinFacetSimpleTest.java   |   2 +-
 .../spelling/DirectSolrSpellCheckerTest.java    |   2 +-
 .../solr/spelling/SpellCheckCollatorTest.java   |  43 ++--
 .../SpellCheckCollatorWithCollapseTest.java     |   2 +-
 .../spelling/WordBreakSolrSpellCheckerTest.java |  16 +-
 .../example-DIH/solr/db/conf/solrconfig.xml     |  24 +-
 .../example-DIH/solr/mail/conf/solrconfig.xml   |  24 +-
 .../example-DIH/solr/solr/conf/solrconfig.xml   |  24 +-
 solr/example/files/conf/solrconfig.xml          |  24 +-
 .../configsets/_default/conf/solrconfig.xml     |  23 +-
 .../conf/solrconfig.xml                         |  23 +-
 .../src/distributed-requests.adoc               |   4 +-
 .../src/the-dismax-query-parser.adoc            |  16 +-
 .../solr/common/params/MoreLikeThisParams.java  |   3 +-
 .../solr/collection1/conf/solrconfig-slave1.xml |   8 +-
 .../solr/collection1/conf/solrconfig-sql.xml    |   4 +-
 .../solrj/solr/collection1/conf/solrconfig.xml  |   4 +-
 .../solr/configsets/ml/conf/solrconfig.xml      |   4 +-
 .../solr/configsets/shared/conf/solrconfig.xml  |   8 +-
 .../configsets/streaming/conf/solrconfig.xml    |   6 +-
 .../solr/multicore/core0/conf/solrconfig.xml    |   8 +-
 .../solr/multicore/core1/conf/solrconfig.xml    |   8 +-
 .../client/solrj/impl/CloudSolrClientTest.java  |   2 +-
 .../java/org/apache/solr/SolrTestCaseJ4.java    |  10 +-
 164 files changed, 561 insertions(+), 1183 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 9578698..be23b3a 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -120,6 +120,13 @@ Upgrading from Solr 6.x
   fields, a new JSON request language, and more. DocValues are now required for any field used in the analytics expression
   whereas previously docValues was not required. Please see SOLR-10123 for details.
 
+* solrconfig.xml: <requestDispatcher handleSelect="..."> now defaults to false when luceneMatchVersion >= 7.0,
+  thus ignoring "qt". Regardless, "qt" is still used as a SolrJ special parameter that specifies the request handler
+  (tail URL path) to use.  If you have request handlers without a leading '/', you can set handleSelect="true"
+  or better yet consider migrating.
+
+* StandardRequestHandler is deprecated. Simply use SearchHandler instead.
+
 New Features
 ----------------------
 * SOLR-9857, SOLR-9858: Collect aggregated metrics from nodes and shard leaders in overseer. (ab)
@@ -351,6 +358,11 @@ Other Changes
   - SOLR-10946: Randomize the usage of Points based numerics in solrj test schemas (hossman)
   - SOLR-10947: Randomize the usage of Points based numerics in contrib test schemas (hossman)
 
+* SOLR-6807: Changed requestDispatcher's handleSelect to default to false, thus ignoring "qt".
+  Simplified configs to not refer to handleSelect or "qt".  Switch all tests that assumed true to assume false
+  (added leading '/' in request handlers). Switch all tests referring to "standard" request handler to
+  instead refer to "/select" with SearchHandler. Deprecated the old StandardRequestHandler. (David Smiley)
+
 ==================  6.7.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/analysis-extras/src/test-files/analysis-extras/solr/collection1/conf/solrconfig-icucollate.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/analysis-extras/src/test-files/analysis-extras/solr/collection1/conf/solrconfig-icucollate.xml b/solr/contrib/analysis-extras/src/test-files/analysis-extras/solr/collection1/conf/solrconfig-icucollate.xml
index 8266aae..90c52d7 100644
--- a/solr/contrib/analysis-extras/src/test-files/analysis-extras/solr/collection1/conf/solrconfig-icucollate.xml
+++ b/solr/contrib/analysis-extras/src/test-files/analysis-extras/solr/collection1/conf/solrconfig-icucollate.xml
@@ -22,6 +22,6 @@
   <indexConfig>
     <useCompoundFile>${useCompoundFile:false}</useCompoundFile>
   </indexConfig>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-analytics.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-analytics.xml b/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-analytics.xml
index 31d6437..4c359a6 100644
--- a/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-analytics.xml
+++ b/solr/contrib/analytics/src/test-files/solr/collection1/conf/solrconfig-analytics.xml
@@ -24,7 +24,7 @@
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <arr name="components">
       <str>query</str>
       <str>facet</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/solrconfig.xml b/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/solrconfig.xml
index 74d903e..8d0f82e 100644
--- a/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/solrconfig.xml
+++ b/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/solrconfig.xml
@@ -214,12 +214,7 @@
 
   </query>
 
-  <!-- 
-    Let the dispatch filter handler /select?qt=XXX
-    handleSelect=true will use consistent error handling for /select and /update
-    handleSelect=false will use solr1.1 style error formatting
-    -->
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <!--Make sure your system has some authentication before enabling remote streaming!
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     -->
@@ -260,17 +255,8 @@
        <!-- <cacheControl>max-age=30, public</cacheControl> -->
     </httpCaching>
   </requestDispatcher>
-  
-      
-  <!-- requestHandler plugins... incoming queries will be dispatched to the
-     correct handler based on the path or the 'qt' param.
-     Names starting with a '/' are accessed with the a path equal to the 
-     registered name.  Names without a leading '/' are accessed with:
-      http://host/app/select?qt=name
-     If no qt is defined, the requestHandler that declares default="true"
-     will be used.
-  -->
-  <requestHandler name="standard" class="solr.SearchHandler" default="true">
+
+  <requestHandler name="/select" class="solr.SearchHandler">
     <!-- default values for query parameters -->
      <lst name="defaults">
        <str name="echoParams">explicit</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java b/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java
index bff9f37..8ccc8ed 100644
--- a/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java
+++ b/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java
@@ -66,7 +66,7 @@ public class ClusteringComponentTest extends AbstractClusteringTestCase {
     params.add(ClusteringParams.USE_SEARCH_RESULTS, "true");
 
 
-    SolrRequestHandler handler = core.getRequestHandler("standard");
+    SolrRequestHandler handler = core.getRequestHandler("/select");
     SolrQueryResponse rsp;
     rsp = new SolrQueryResponse();
     rsp.addResponseHeader(new SimpleOrderedMap<>());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-solrconfig.xml b/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-solrconfig.xml
index 7672cab..d426320 100644
--- a/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-solrconfig.xml
+++ b/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-solrconfig.xml
@@ -144,21 +144,21 @@
          and there is a current searcher handling requests (aka registered). -->
     <!-- QuerySenderListener takes an array of NamedList and executes a
          local query request for each NamedList in sequence. -->
-    <listener event="newSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>
-        <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>
-        <lst><str name="q">static newSearcher warming query from solrconfig.xml</str></lst>
-      </arr>
-    </listener>
+    <!--<listener event="newSearcher" class="solr.QuerySenderListener">-->
+      <!--<arr name="queries">-->
+        <!--<lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>-->
+        <!--<lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>-->
+        <!--<lst><str name="q">static newSearcher warming query from solrconfig.xml</str></lst>-->
+      <!--</arr>-->
+    <!--</listener>-->
 
     <!-- a firstSearcher event is fired whenever a new searcher is being
          prepared but there is no current registered searcher to handle
          requests or to gain autowarming data from. -->
-    <listener event="firstSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-      </arr>
-    </listener>
+    <!--<listener event="firstSearcher" class="solr.QuerySenderListener">-->
+      <!--<arr name="queries">-->
+      <!--</arr>-->
+    <!--</listener>-->
 
     <!-- If a search request comes in and there is no current registered searcher,
          then immediately register the still warming searcher and use it.  If
@@ -173,12 +173,7 @@
 
   </query>
 
-  <!-- 
-    Let the dispatch filter handler /select?qt=XXX
-    handleSelect=true will use consistent error handling for /select and /update
-    handleSelect=false will use solr1.1 style error formatting
-    -->
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <!--Make sure your system has some authentication before enabling remote streaming!
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     -->
@@ -220,16 +215,7 @@
     </httpCaching>
   </requestDispatcher>
   
-      
-  <!-- requestHandler plugins... incoming queries will be dispatched to the
-     correct handler based on the path or the 'qt' param.
-     Names starting with a '/' are accessed with the a path equal to the 
-     registered name.  Names without a leading '/' are accessed with:
-      http://host/app/select?qt=name
-     If no qt is defined, the requestHandler that declares default="true"
-     will be used.
-  -->
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <!-- default values for query parameters -->
      <lst name="defaults">
        <str name="echoParams">explicit</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/contentstream-solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/contentstream-solrconfig.xml b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/contentstream-solrconfig.xml
index 235b15c..a07ab78 100644
--- a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/contentstream-solrconfig.xml
+++ b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/contentstream-solrconfig.xml
@@ -144,21 +144,21 @@
          and there is a current searcher handling requests (aka registered). -->
     <!-- QuerySenderListener takes an array of NamedList and executes a
          local query request for each NamedList in sequence. -->
-    <listener event="newSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>
-        <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>
-        <lst><str name="q">static newSearcher warming query from solrconfig.xml</str></lst>
-      </arr>
-    </listener>
+    <!--<listener event="newSearcher" class="solr.QuerySenderListener">-->
+      <!--<arr name="queries">-->
+        <!--<lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>-->
+        <!--<lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>-->
+        <!--<lst><str name="q">static newSearcher warming query from solrconfig.xml</str></lst>-->
+      <!--</arr>-->
+    <!--</listener>-->
 
     <!-- a firstSearcher event is fired whenever a new searcher is being
          prepared but there is no current registered searcher to handle
          requests or to gain autowarming data from. -->
-    <listener event="firstSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-      </arr>
-    </listener>
+    <!--<listener event="firstSearcher" class="solr.QuerySenderListener">-->
+      <!--<arr name="queries">-->
+      <!--</arr>-->
+    <!--</listener>-->
 
     <!-- If a search request comes in and there is no current registered searcher,
          then immediately register the still warming searcher and use it.  If
@@ -173,12 +173,7 @@
 
   </query>
 
-  <!-- 
-    Let the dispatch filter handler /select?qt=XXX
-    handleSelect=true will use consistent error handling for /select and /update
-    handleSelect=false will use solr1.1 style error formatting
-    -->
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <!--Make sure your system has some authentication before enabling remote streaming!
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     -->
@@ -219,17 +214,8 @@
        <!-- <cacheControl>max-age=30, public</cacheControl> -->
     </httpCaching>
   </requestDispatcher>
-  
-      
-  <!-- requestHandler plugins... incoming queries will be dispatched to the
-     correct handler based on the path or the 'qt' param.
-     Names starting with a '/' are accessed with the a path equal to the 
-     registered name.  Names without a leading '/' are accessed with:
-      http://host/app/select?qt=name
-     If no qt is defined, the requestHandler that declares default="true"
-     will be used.
-  -->
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
+
+  <requestHandler name="/select" class="solr.SearchHandler">
     <!-- default values for query parameters -->
      <lst name="defaults">
        <str name="echoParams">explicit</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-nodatasource-solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-nodatasource-solrconfig.xml b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-nodatasource-solrconfig.xml
index 7f20677..6754f9e 100644
--- a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-nodatasource-solrconfig.xml
+++ b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-nodatasource-solrconfig.xml
@@ -146,21 +146,21 @@
          and there is a current searcher handling requests (aka registered). -->
     <!-- QuerySenderListener takes an array of NamedList and executes a
          local query request for each NamedList in sequence. -->
-    <listener event="newSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>
-        <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>
-        <lst><str name="q">static newSearcher warming query from solrconfig.xml</str></lst>
-      </arr>
-    </listener>
+    <!--<listener event="newSearcher" class="solr.QuerySenderListener">-->
+      <!--<arr name="queries">-->
+        <!--<lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>-->
+        <!--<lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>-->
+        <!--<lst><str name="q">static newSearcher warming query from solrconfig.xml</str></lst>-->
+      <!--</arr>-->
+    <!--</listener>-->
 
     <!-- a firstSearcher event is fired whenever a new searcher is being
          prepared but there is no current registered searcher to handle
          requests or to gain autowarming data from. -->
-    <listener event="firstSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-      </arr>
-    </listener>
+    <!--<listener event="firstSearcher" class="solr.QuerySenderListener">-->
+      <!--<arr name="queries">-->
+      <!--</arr>-->
+    <!--</listener>-->
 
     <!-- If a search request comes in and there is no current registered searcher,
          then immediately register the still warming searcher and use it.  If
@@ -175,12 +175,7 @@
 
   </query>
 
-  <!-- 
-    Let the dispatch filter handler /select?qt=XXX
-    handleSelect=true will use consistent error handling for /select and /update
-    handleSelect=false will use solr1.1 style error formatting
-    -->
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <!--Make sure your system has some authentication before enabling remote streaming!
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     -->
@@ -221,17 +216,8 @@
        <!-- <cacheControl>max-age=30, public</cacheControl> -->
     </httpCaching>
   </requestDispatcher>
-  
-      
-  <!-- requestHandler plugins... incoming queries will be dispatched to the
-     correct handler based on the path or the 'qt' param.
-     Names starting with a '/' are accessed with the a path equal to the 
-     registered name.  Names without a leading '/' are accessed with:
-      http://host/app/select?qt=name
-     If no qt is defined, the requestHandler that declares default="true"
-     will be used.
-  -->
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
+
+  <requestHandler name="/select" class="solr.SearchHandler">
     <!-- default values for query parameters -->
      <lst name="defaults">
        <str name="echoParams">explicit</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solrconfig.xml b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solrconfig.xml
index 2eacf8a..a662fd9 100644
--- a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solrconfig.xml
+++ b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solrconfig.xml
@@ -144,21 +144,21 @@
          and there is a current searcher handling requests (aka registered). -->
     <!-- QuerySenderListener takes an array of NamedList and executes a
          local query request for each NamedList in sequence. -->
-    <listener event="newSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>
-        <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>
-        <lst><str name="q">static newSearcher warming query from solrconfig.xml</str></lst>
-      </arr>
-    </listener>
+    <!--<listener event="newSearcher" class="solr.QuerySenderListener">-->
+      <!--<arr name="queries">-->
+        <!--<lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>-->
+        <!--<lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>-->
+        <!--<lst><str name="q">static newSearcher warming query from solrconfig.xml</str></lst>-->
+      <!--</arr>-->
+    <!--</listener>-->
 
     <!-- a firstSearcher event is fired whenever a new searcher is being
          prepared but there is no current registered searcher to handle
          requests or to gain autowarming data from. -->
-    <listener event="firstSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-      </arr>
-    </listener>
+    <!--<listener event="firstSearcher" class="solr.QuerySenderListener">-->
+      <!--<arr name="queries">-->
+      <!--</arr>-->
+    <!--</listener>-->
 
     <!-- If a search request comes in and there is no current registered searcher,
          then immediately register the still warming searcher and use it.  If
@@ -173,12 +173,7 @@
 
   </query>
 
-  <!-- 
-    Let the dispatch filter handler /select?qt=XXX
-    handleSelect=true will use consistent error handling for /select and /update
-    handleSelect=false will use solr1.1 style error formatting
-    -->
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <!--Make sure your system has some authentication before enabling remote streaming!
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     -->
@@ -219,17 +214,8 @@
        <!-- <cacheControl>max-age=30, public</cacheControl> -->
     </httpCaching>
   </requestDispatcher>
-  
-      
-  <!-- requestHandler plugins... incoming queries will be dispatched to the
-     correct handler based on the path or the 'qt' param.
-     Names starting with a '/' are accessed with the a path equal to the 
-     registered name.  Names without a leading '/' are accessed with:
-      http://host/app/select?qt=name
-     If no qt is defined, the requestHandler that declares default="true"
-     will be used.
-  -->
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
+
+  <requestHandler name="/select" class="solr.SearchHandler">
     <!-- default values for query parameters -->
      <lst name="defaults">
        <str name="echoParams">explicit</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/solrconfig.xml b/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/solrconfig.xml
index 261263e..4dbf082 100644
--- a/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/solrconfig.xml
+++ b/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/solrconfig.xml
@@ -149,42 +149,9 @@
   </query>
 
 
-  <!-- An alternate set representation that uses an integer hash to store filters (sets of docids).
-       If the set cardinality <= maxSize elements, then HashDocSet will be used instead of the bitset
-       based HashBitset. -->
-
-  <!-- requestHandler plugins... incoming queries will be dispatched to the
-     correct handler based on the 'qt' param matching the
-     name of registered handlers.
-      The "standard" request handler is the default and will be used if qt
-     is not specified in the request.
-  -->
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
-  <requestHandler name="dismax" class="solr.SearchHandler" >
-    <lst name="defaults">
-     <str name="defType">dismax</str>
-    </lst>
-  </requestHandler>
-
-  <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
-    <lst name="defaults">
-      <int name="rows">4</int>
-      <bool name="hl">true</bool>
-      <str name="hl.fl">text,name,subject,title,whitetok</str>
-    </lst>
-  </requestHandler>
-
-  <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
-    <lst name="defaults">
-      <int name="rows">4</int>
-      <bool name="hl">true</bool>
-      <str name="hl.fl">text,name,subject,title,whitetok</str>
-    </lst>
-  </requestHandler>
 
   <requestHandler name="/update/extract" class="org.apache.solr.handler.extraction.ExtractingRequestHandler">
     <str name="parseContext.config">parseContext.xml</str>
@@ -227,7 +194,7 @@
   </highlighting>
 
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/TestXLSXResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/TestXLSXResponseWriter.java b/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/TestXLSXResponseWriter.java
index 5c79f0d..7d37844 100644
--- a/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/TestXLSXResponseWriter.java
+++ b/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/TestXLSXResponseWriter.java
@@ -228,7 +228,7 @@ public class TestXLSXResponseWriter extends SolrTestCaseJ4 {
 
   // returns first worksheet as XLSXResponseWriter only returns one sheet
   private XSSFSheet getWSResultForQuery(SolrQueryRequest req) throws IOException, Exception {
-    SolrQueryResponse rsp = h.queryAndResponse("standard", req);
+    SolrQueryResponse rsp = h.queryAndResponse("", req);
     return getWSResultForQuery(req, rsp);
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/langid/src/test-files/langid/solr/collection1/conf/solrconfig-languageidentifier.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/langid/src/test-files/langid/solr/collection1/conf/solrconfig-languageidentifier.xml b/solr/contrib/langid/src/test-files/langid/solr/collection1/conf/solrconfig-languageidentifier.xml
index 04b75f2..9ae54ad 100644
--- a/solr/contrib/langid/src/test-files/langid/solr/collection1/conf/solrconfig-languageidentifier.xml
+++ b/solr/contrib/langid/src/test-files/langid/solr/collection1/conf/solrconfig-languageidentifier.xml
@@ -44,11 +44,11 @@
      </lst>
   </requestHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/solrconfig.xml b/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/solrconfig.xml
index a79db3f..96392d3 100644
--- a/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/solrconfig.xml
+++ b/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/solrconfig.xml
@@ -315,12 +315,7 @@
 
   </query>
 
-  <!--
-    Let the dispatch filter handler /select?qt=XXX handleSelect=true
-    will use consistent error handling for /select and /update
-    handleSelect=false will use solr1.1 style error formatting
-  -->
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <!--
       Make sure your system has some authentication before enabling
       remote streaming!
@@ -360,17 +355,7 @@
     </httpCaching>
   </requestDispatcher>
 
-
-  <!--
-    requestHandler plugins... incoming queries will be dispatched to the
-    correct handler based on the path or the 'qt' param.
-    Names starting with a '/' are accessed with the a path equal to the
-    registered name. Names without a leading '/' are accessed with:
-    http://host/app/select?qt=name If no qt is defined, the
-    requestHandler that declares default="true" will be used.
-  -->
-  <requestHandler name="standard" class="solr.SearchHandler"
-    default="true">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <!-- default values for query parameters -->
     <lst name="defaults">
       <str name="echoParams">explicit</str>
@@ -387,7 +372,7 @@
     standard SearchHandler with a default query parser of "dismax". see
     http://wiki.apache.org/solr/DisMaxRequestHandler
   -->
-  <requestHandler name="dismax" class="solr.SearchHandler">
+  <requestHandler name="/dismax" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="defType">dismax</str>
       <str name="echoParams">explicit</str>
@@ -427,7 +412,7 @@
     Note how you can register the same handler multiple times with
     different names (and different init parameters)
   -->
-  <requestHandler name="partitioned" class="solr.SearchHandler">
+  <requestHandler name="/partitioned" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="defType">dismax</str>
       <str name="echoParams">explicit</str>
@@ -568,7 +553,7 @@
     example. You will likely want to add the component to your already
     specified request handlers.
   -->
-  <requestHandler name="tvrh"
+  <requestHandler name="/tvrh"
     class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <bool name="tv">true</bool>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/contrib/uima/src/test-files/uima/uima-tokenizers-solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/uima/src/test-files/uima/uima-tokenizers-solrconfig.xml b/solr/contrib/uima/src/test-files/uima/uima-tokenizers-solrconfig.xml
index 1a0f58b..df7dc1e 100644
--- a/solr/contrib/uima/src/test-files/uima/uima-tokenizers-solrconfig.xml
+++ b/solr/contrib/uima/src/test-files/uima/uima-tokenizers-solrconfig.xml
@@ -314,12 +314,7 @@
 
   </query>
 
-  <!--
-    Let the dispatch filter handler /select?qt=XXX handleSelect=true
-    will use consistent error handling for /select and /update
-    handleSelect=false will use solr1.1 style error formatting
-  -->
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <!--
       Make sure your system has some authentication before enabling
       remote streaming!
@@ -368,7 +363,7 @@
     http://host/app/select?qt=name If no qt is defined, the
     requestHandler that declares default="true" will be used.
   -->
-  <requestHandler name="standard" class="solr.SearchHandler"
+  <requestHandler name="/select" class="solr.SearchHandler"
     default="true">
     <!-- default values for query parameters -->
     <lst name="defaults">
@@ -386,7 +381,7 @@
     standard SearchHandler with a default query parser of "dismax". see
     http://wiki.apache.org/solr/DisMaxRequestHandler
   -->
-  <requestHandler name="dismax" class="solr.SearchHandler">
+  <requestHandler name="/dismax" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="defType">dismax</str>
       <str name="echoParams">explicit</str>
@@ -426,7 +421,7 @@
     Note how you can register the same handler multiple times with
     different names (and different init parameters)
   -->
-  <requestHandler name="partitioned" class="solr.SearchHandler">
+  <requestHandler name="/partitioned" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="defType">dismax</str>
       <str name="echoParams">explicit</str>
@@ -567,7 +562,7 @@
     example. You will likely want to add the component to your already
     specified request handlers.
   -->
-  <requestHandler name="tvrh"
+  <requestHandler name="/tvrh"
     class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <bool name="tv">true</bool>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/java/org/apache/solr/core/SolrConfig.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrConfig.java b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
index dc7fe28..9942323 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrConfig.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
@@ -308,9 +308,8 @@ public class SolrConfig extends Config implements MapSerializable {
     enableRemoteStreams = getBool(
         "requestDispatcher/requestParsers/@enableRemoteStreaming", false);
 
-    // Let this filter take care of /select?xxx format
     handleSelect = getBool(
-        "requestDispatcher/@handleSelect", true);
+        "requestDispatcher/@handleSelect", !luceneMatchVersion.onOrAfter(Version.LUCENE_7_0_0));
 
     addHttpRequestToContext = getBool(
         "requestDispatcher/requestParsers/@addHttpRequestToContext", false);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
index 0d12136..62f1016 100644
--- a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
@@ -249,7 +249,7 @@ public class MoreLikeThisHandler extends RequestHandlerBase
           dbgQuery = true;
           dbgResults = true;
         }
-        // Copied from StandardRequestHandler... perhaps it should be added to doStandardDebug?
+        // TODO resolve duplicated code with DebugComponent.  Perhaps it should be added to doStandardDebug?
         if (dbg == true) {
           try {
             NamedList<Object> dbgInfo = SolrPluginUtils.doStandardDebug(req, q, mlt.getRawMLTQuery(), mltDocs.docList, dbgQuery, dbgResults);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
index 4219768..990d475 100644
--- a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
+++ b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
@@ -125,7 +125,6 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
   public void init(NamedList args) {
     initArgs = args;
 
-    // Copied from StandardRequestHandler
     if( args != null ) {
       defaults = getSolrParamsFromNamedList(args, "defaults");
       appends = getSolrParamsFromNamedList(args, "appends");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/java/org/apache/solr/handler/StandardRequestHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/StandardRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/StandardRequestHandler.java
index f167b1d..e87aa68 100644
--- a/solr/core/src/java/org/apache/solr/handler/StandardRequestHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/StandardRequestHandler.java
@@ -18,24 +18,7 @@ package org.apache.solr.handler;
 
 import org.apache.solr.handler.component.*;
 
-/**
- *
- *
- * All of the following options may be configured for this handler
- * in the solrconfig as defaults, and may be overridden as request parameters.
- * (TODO: complete documentation of request parameters here, rather than only
- * on the wiki).
- *
- * <ul>
- * <li> highlight - Set to any value not .equal() to "false" to enable highlight
- * generation</li>
- * <li> highlightFields - Set to a comma- or space-delimited list of fields to
- * highlight.  If unspecified, uses the default query field</li>
- * <li> maxSnippets - maximum number of snippets to generate per field-highlight.
- * </li>
- * </ul>
- *
- */
+@Deprecated
 public class StandardRequestHandler extends SearchHandler 
 {
   //////////////////////// SolrInfoMBeans methods //////////////////////

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java b/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
index 1d265c7..01c7c33 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
@@ -88,17 +88,7 @@ import static org.apache.solr.core.PluginInfo.INVARIANTS;
 import static org.apache.solr.core.RequestParams.USEPARAM;
 
 /**
- * <p>Utilities that may be of use to RequestHandlers.</p>
- *
- * <p>
- * Many of these functions have code that was stolen/mutated from
- * StandardRequestHandler.
- * </p>
- *
- * <p>:TODO: refactor StandardRequestHandler to use these utilities</p>
- *
- * <p>:TODO: Many "standard" functionality methods are not cognisant of
- * default parameter settings.
+ * Utilities that may be of use to RequestHandlers.
  */
 public class SolrPluginUtils {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/resources/SystemCollectionSolrConfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/SystemCollectionSolrConfig.xml b/solr/core/src/resources/SystemCollectionSolrConfig.xml
index 7b1da63..f857561 100644
--- a/solr/core/src/resources/SystemCollectionSolrConfig.xml
+++ b/solr/core/src/resources/SystemCollectionSolrConfig.xml
@@ -10,7 +10,7 @@
       <maxDocs>1</maxDocs>
       <openSearcher>true</openSearcher>
     </autoCommit></updateHandler>
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
+  <requestHandler name="/select" class="solr.SearchHandler" default="true" />
   <requestHandler name="/blob" class="solr.BlobHandler">
     <lst name="invariants">
       <str name="maxSize">${blob.max.size.mb:5}</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/bad-error-solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/bad-error-solrconfig.xml b/solr/core/src/test-files/solr/collection1/conf/bad-error-solrconfig.xml
index 75014ac..c8bb8cf 100644
--- a/solr/core/src/test-files/solr/collection1/conf/bad-error-solrconfig.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/bad-error-solrconfig.xml
@@ -23,7 +23,7 @@
 
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
 
-  <requestHandler name="my_error_handler" class="solr.ThrowErrorOnInitRequestHandler"></requestHandler>
+  <requestHandler name="/my_error_handler" class="solr.ThrowErrorOnInitRequestHandler"></requestHandler>
 
   <schemaFactory class="ClassicIndexSchemaFactory"/>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/bad-mpf-solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/bad-mpf-solrconfig.xml b/solr/core/src/test-files/solr/collection1/conf/bad-mpf-solrconfig.xml
index 0adf321..189d449 100644
--- a/solr/core/src/test-files/solr/collection1/conf/bad-mpf-solrconfig.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/bad-mpf-solrconfig.xml
@@ -30,7 +30,7 @@
   </indexConfig>
 
   <updateHandler class="solr.DirectUpdateHandler2"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
 
   <schemaFactory class="ClassicIndexSchemaFactory"/>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-add-schema-fields-update-processor-chains.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-add-schema-fields-update-processor-chains.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-add-schema-fields-update-processor-chains.xml
index 4541fbc..f2e0f3e 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-add-schema-fields-update-processor-chains.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-add-schema-fields-update-processor-chains.xml
@@ -23,7 +23,7 @@
   -->
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
 
   <schemaFactory class="ManagedIndexSchemaFactory">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-altdirectory.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-altdirectory.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-altdirectory.xml
index cb4cd7c..0c62584 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-altdirectory.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-altdirectory.xml
@@ -20,7 +20,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <directoryFactory name="DirectoryFactory" class="org.apache.solr.core.AlternateDirectoryTest$TestFSDirectoryFactory"></directoryFactory>
   <indexReaderFactory name="IndexReaderFactory" class="org.apache.solr.core.AlternateDirectoryTest$TestIndexReaderFactory"></indexReaderFactory >
   <schemaFactory class="ClassicIndexSchemaFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-analytics-query.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-analytics-query.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-analytics-query.xml
index f729afa..fc33e46 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-analytics-query.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-analytics-query.xml
@@ -187,233 +187,12 @@
 If the set cardinality <= maxSize elements, then HashDocSet will be used instead of the bitset
 based HashBitset. -->
 
-  <!-- requestHandler plugins... incoming queries will be dispatched to the
-     correct handler based on the 'qt' param matching the
-     name of registered handlers.
-      The "standard" request handler is the default and will be used if qt
-     is not specified in the request.
+  <!-- requestHandler plugins.
   -->
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
-
-  <requestHandler name="dismax" class="solr.SearchHandler" >
-    <lst name="defaults">
-      <str name="defType">dismax</str>
-      <str name="q.alt">*:*</str>
-      <float name="tie">0.01</float>
-      <str name="qf">
-        text^0.5 features_t^1.0 subject^1.4 title_stemmed^2.0
-      </str>
-      <str name="pf">
-        text^0.2 features_t^1.1 subject^1.4 title_stemmed^2.0 title^1.5
-      </str>
-      <str name="bf">
-        ord(weight)^0.5 recip(rord(iind),1,1000,1000)^0.3
-      </str>
-      <str name="mm">
-        3&lt;-1 5&lt;-2 6&lt;90%
-      </str>
-      <int name="ps">100</int>
-    </lst>
-  </requestHandler>
-
-  <requestHandler name="mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler"/>
-
-  <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
-    <lst name="defaults">
-      <int name="rows">4</int>
-      <bool name="hl">true</bool>
-      <str name="hl.fl">text,name,subject,title,whitetok</str>
-    </lst>
-  </requestHandler>
-
-  <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
-    <lst name="defaults">
-      <int name="rows">4</int>
-      <bool name="hl">true</bool>
-      <str name="hl.fl">text,name,subject,title,whitetok</str>
-    </lst>
-  </requestHandler>
-
-  <searchComponent name="spellcheck" class="org.apache.solr.handler.component.SpellCheckComponent">
-    <!-- This is slightly different from the field value so we can test dealing with token offset changes -->
-    <str name="queryAnalyzerFieldType">lowerpunctfilt</str>
-
-    <lst name="spellchecker">
-      <str name="name">default</str>
-      <str name="field">lowerfilt</str>
-      <str name="spellcheckIndexDir">spellchecker1</str>
-      <str name="buildOnCommit">false</str>
-    </lst>
-    <lst name="spellchecker">
-      <str name="name">direct</str>
-      <str name="classname">DirectSolrSpellChecker</str>
-      <str name="field">lowerfilt</str>
-      <int name="minQueryLength">3</int>
-    </lst>
-    <lst name="spellchecker">
-      <str name="name">wordbreak</str>
-      <str name="classname">solr.WordBreakSolrSpellChecker</str>
-      <str name="field">lowerfilt</str>
-      <str name="combineWords">true</str>
-      <str name="breakWords">true</str>
-      <int name="maxChanges">10</int>
-    </lst>
-    <lst name="spellchecker">
-      <str name="name">multipleFields</str>
-      <str name="field">lowerfilt1and2</str>
-      <str name="spellcheckIndexDir">spellcheckerMultipleFields</str>
-      <str name="buildOnCommit">false</str>
-    </lst>
-    <!-- Example of using different distance measure -->
-    <lst name="spellchecker">
-      <str name="name">jarowinkler</str>
-      <str name="field">lowerfilt</str>
-      <!-- Use a different Distance Measure -->
-      <str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
-      <str name="spellcheckIndexDir">spellchecker2</str>
-
-    </lst>
-    <lst name="spellchecker">
-      <str name="classname">solr.FileBasedSpellChecker</str>
-      <str name="name">external</str>
-      <str name="sourceLocation">spellings.txt</str>
-      <str name="characterEncoding">UTF-8</str>
-      <str name="spellcheckIndexDir">spellchecker3</str>
-    </lst>
-    <!-- Comparator -->
-    <lst name="spellchecker">
-      <str name="name">freq</str>
-      <str name="field">lowerfilt</str>
-      <str name="spellcheckIndexDir">spellcheckerFreq</str>
-      <!-- comparatorClass be one of:
-        1. score (default)
-        2. freq (Frequency first, then score)
-        3. A fully qualified class name
-       -->
-      <str name="comparatorClass">freq</str>
-      <str name="buildOnCommit">false</str>
-    </lst>
-    <lst name="spellchecker">
-      <str name="name">fqcn</str>
-      <str name="field">lowerfilt</str>
-      <str name="spellcheckIndexDir">spellcheckerFQCN</str>
-      <str name="comparatorClass">org.apache.solr.spelling.SampleComparator</str>
-      <str name="buildOnCommit">false</str>
-    </lst>
-    <lst name="spellchecker">
-      <str name="name">perDict</str>
-      <str name="classname">org.apache.solr.handler.component.DummyCustomParamSpellChecker</str>
-      <str name="field">lowerfilt</str>
-    </lst>
-  </searchComponent>
-
-  <searchComponent name="termsComp" class="org.apache.solr.handler.component.TermsComponent"/>
-
-  <requestHandler name="/terms" class="org.apache.solr.handler.component.SearchHandler">
-    <arr name="components">
-      <str>termsComp</str>
-    </arr>
-  </requestHandler>
-  <!--
-  The SpellingQueryConverter to convert raw (CommonParams.Q) queries into tokens.  Uses a simple regular expression
-   to strip off field markup, boosts, ranges, etc. but it is not guaranteed to match an exact parse from the query parser.
-   -->
-  <queryConverter name="queryConverter" class="org.apache.solr.spelling.SpellingQueryConverter"/>
-
-  <requestHandler name="spellCheckCompRH" class="org.apache.solr.handler.component.SearchHandler">
-    <lst name="defaults">
-      <!-- omp = Only More Popular -->
-      <str name="spellcheck.onlyMorePopular">false</str>
-      <!-- exr = Extended Results -->
-      <str name="spellcheck.extendedResults">false</str>
-      <!--  The number of suggestions to return -->
-      <str name="spellcheck.count">1</str>
-    </lst>
-    <arr name="last-components">
-      <str>spellcheck</str>
-    </arr>
-  </requestHandler>
-  <requestHandler name="spellCheckCompRH_Direct" class="org.apache.solr.handler.component.SearchHandler">
-    <lst name="defaults">
-      <str name="spellcheck.dictionary">direct</str>
-      <str name="spellcheck.onlyMorePopular">false</str>
-      <str name="spellcheck.extendedResults">false</str>
-      <str name="spellcheck.count">1</str>
-    </lst>
-    <arr name="last-components">
-      <str>spellcheck</str>
-    </arr>
-  </requestHandler>
-  <requestHandler name="spellCheckWithWordbreak" class="org.apache.solr.handler.component.SearchHandler">
-    <lst name="defaults">
-      <str name="spellcheck.dictionary">default</str>
-      <str name="spellcheck.dictionary">wordbreak</str>
-      <str name="spellcheck.count">20</str>
-    </lst>
-    <arr name="last-components">
-      <str>spellcheck</str>
-    </arr>
-  </requestHandler>
-  <requestHandler name="spellCheckWithWordbreak_Direct" class="org.apache.solr.handler.component.SearchHandler">
-    <lst name="defaults">
-      <str name="spellcheck.dictionary">direct</str>
-      <str name="spellcheck.dictionary">wordbreak</str>
-      <str name="spellcheck.count">20</str>
-    </lst>
-    <arr name="last-components">
-      <str>spellcheck</str>
-    </arr>
-  </requestHandler>
-  <requestHandler name="spellCheckCompRH1" class="org.apache.solr.handler.component.SearchHandler">
-    <lst name="defaults">
-      <str name="defType">dismax</str>
-      <str name="qf">lowerfilt1^1</str>
-    </lst>
-    <arr name="last-components">
-      <str>spellcheck</str>
-    </arr>
-  </requestHandler>
-
-  <requestHandler name="mltrh" class="org.apache.solr.handler.component.SearchHandler">
-
-  </requestHandler>
-
-  <searchComponent name="tvComponent" class="org.apache.solr.handler.component.TermVectorComponent"/>
-
-  <requestHandler name="tvrh" class="org.apache.solr.handler.component.SearchHandler">
-    <lst name="defaults">
-
-    </lst>
-    <arr name="last-components">
-      <str>tvComponent</str>
-    </arr>
-  </requestHandler>
-
-  <!-- test elevation -->
-  <searchComponent name="elevate" class="org.apache.solr.handler.component.QueryElevationComponent" >
-    <str name="queryFieldType">string</str>
-    <str name="config-file">elevate.xml</str>
-  </searchComponent>
-
-
-  <requestHandler name="/elevate" class="org.apache.solr.handler.component.SearchHandler">
-    <lst name="defaults">
-      <str name="echoParams">explicit</str>
-    </lst>
-    <arr name="last-components">
-      <str>elevate</str>
-    </arr>
-  </requestHandler>
-
-  <requestHandler name="/mlt" class="solr.MoreLikeThisHandler">
-  </requestHandler>
-
-
   <searchComponent class="solr.HighlightComponent" name="highlight">
     <highlighting>
       <!-- Configure the standard fragmenter -->
@@ -461,7 +240,7 @@ based HashBitset. -->
     </highlighting>
   </searchComponent>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-basic.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-basic.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-basic.xml
index ff9fab2..d98ecac 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-basic.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-basic.xml
@@ -25,5 +25,5 @@
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-blockjoinfacetcomponent.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-blockjoinfacetcomponent.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-blockjoinfacetcomponent.xml
index b222693..b114535 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-blockjoinfacetcomponent.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-blockjoinfacetcomponent.xml
@@ -24,8 +24,7 @@
   <schemaFactory class="ClassicIndexSchemaFactory"/>
   <dataDir>${solr.data.dir:}</dataDir>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
-  </requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
   <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
 
@@ -38,18 +37,18 @@
   <searchComponent name="blockJoinFacet" class="org.apache.solr.search.join.BlockJoinFacetComponent"/>
   <searchComponent name="blockJoinDocSetFacet" class="org.apache.solr.search.join.BlockJoinDocSetFacetComponent"/>
 
-  <requestHandler name="blockJoinFacetRH" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/blockJoinFacetRH" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
-      <str name="shards.qt">blockJoinFacetRH</str>
+      <str name="shards.qt">/blockJoinFacetRH</str>
     </lst>
     <arr name="last-components">
       <str>blockJoinFacet</str>
     </arr>
   </requestHandler>
   
-    <requestHandler name="blockJoinDocSetFacetRH" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/blockJoinDocSetFacetRH" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
-      <str name="shards.qt">blockJoinDocSetFacetRH</str>
+      <str name="shards.qt">/blockJoinDocSetFacetRH</str>
     </lst>
     <arr name="last-components">
       <str>blockJoinDocSetFacet</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-cache-enable-disable.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-cache-enable-disable.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-cache-enable-disable.xml
index 5990a81..b8e3dd7 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-cache-enable-disable.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-cache-enable-disable.xml
@@ -23,7 +23,7 @@
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
   
   <query>
     <!-- Maximum number of clauses in a boolean query... can affect
@@ -74,7 +74,7 @@
 
   </query>
 
-  <initParams path="standard">
+  <initParams path="/select">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-cdcr.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-cdcr.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-cdcr.xml
index df50f41..c6b360c 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-cdcr.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-cdcr.xml
@@ -37,7 +37,7 @@
 
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
   </requestHandler>
 
   <requestHandler name="/update" class="solr.UpdateRequestHandler">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-cdcrupdatelog.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-cdcrupdatelog.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-cdcrupdatelog.xml
index c9b9d80..86b2d2b 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-cdcrupdatelog.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-cdcrupdatelog.xml
@@ -37,7 +37,7 @@
 
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
   </requestHandler>
 
   <updateHandler class="solr.DirectUpdateHandler2">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-classification.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-classification.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-classification.xml
index f688ed1..3370600 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-classification.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-classification.xml
@@ -23,7 +23,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="solrconfig.snippet.randomindexconfig.xml"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
   

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-collapseqparser.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-collapseqparser.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-collapseqparser.xml
index 8267451..65820e0 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-collapseqparser.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-collapseqparser.xml
@@ -192,77 +192,29 @@ based HashBitset. -->
       The "standard" request handler is the default and will be used if qt
      is not specified in the request.
   -->
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
-  <requestHandler name="dismax" class="solr.SearchHandler" >
-    <lst name="defaults">
-      <str name="defType">dismax</str>
-      <str name="q.alt">*:*</str>
-      <float name="tie">0.01</float>
-      <str name="qf">
-        text^0.5 features_t^1.0 subject^1.4 title_stemmed^2.0
-      </str>
-      <str name="pf">
-        text^0.2 features_t^1.1 subject^1.4 title_stemmed^2.0 title^1.5
-      </str>
-      <str name="bf">
-        ord(weight)^0.5 recip(rord(iind),1,1000,1000)^0.3
-      </str>
-      <str name="mm">
-        3&lt;-1 5&lt;-2 6&lt;90%
-      </str>
-      <int name="ps">100</int>
-    </lst>
-  </requestHandler>
-
-  <requestHandler name="mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler"/>
-
-  <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
-    <lst name="defaults">
-      <int name="rows">4</int>
-      <bool name="hl">true</bool>
-      <str name="hl.fl">text,name,subject,title,whitetok</str>
-    </lst>
-  </requestHandler>
-
-  <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
-    <lst name="defaults">
-      <int name="rows">4</int>
-      <bool name="hl">true</bool>
-      <str name="hl.fl">text,name,subject,title,whitetok</str>
-    </lst>
-  </requestHandler>
-
   <searchComponent name="spellcheck" class="org.apache.solr.handler.component.SpellCheckComponent">
     <!-- This is slightly different from the field value so we can test dealing with token offset changes -->
     <str name="queryAnalyzerFieldType">a_s</str>
 
-   <lst name="spellchecker">
+    <lst name="spellchecker">
       <str name="name">direct</str>
       <str name="classname">DirectSolrSpellChecker</str>
       <str name="field">a_s</str>
       <int name="minQueryLength">3</int>
-    </lst>    
+    </lst>
   </searchComponent>
 
-  <searchComponent name="termsComp" class="org.apache.solr.handler.component.TermsComponent"/>
-
-  <requestHandler name="/terms" class="org.apache.solr.handler.component.SearchHandler">
-    <arr name="components">
-      <str>termsComp</str>
-    </arr>
-  </requestHandler>
   <!--
   The SpellingQueryConverter to convert raw (CommonParams.Q) queries into tokens.  Uses a simple regular expression
    to strip off field markup, boosts, ranges, etc. but it is not guaranteed to match an exact parse from the query parser.
    -->
   <queryConverter name="queryConverter" class="org.apache.solr.spelling.SpellingQueryConverter"/>
 
-  <requestHandler name="spellCheckCompRH_Direct" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckCompRH_Direct" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <str name="spellcheck.dictionary">direct</str>
       <str name="spellcheck.onlyMorePopular">false</str>
@@ -274,21 +226,6 @@ based HashBitset. -->
     </arr>
   </requestHandler>
 
-  <requestHandler name="mltrh" class="org.apache.solr.handler.component.SearchHandler">
-
-  </requestHandler>
-
-  <searchComponent name="tvComponent" class="org.apache.solr.handler.component.TermVectorComponent"/>
-
-  <requestHandler name="tvrh" class="org.apache.solr.handler.component.SearchHandler">
-    <lst name="defaults">
-
-    </lst>
-    <arr name="last-components">
-      <str>tvComponent</str>
-    </arr>
-  </requestHandler>
-
   <!-- test elevation -->
   <searchComponent name="elevate" class="org.apache.solr.handler.component.QueryElevationComponent" >
     <str name="queryFieldType">string</str>
@@ -305,57 +242,7 @@ based HashBitset. -->
     </arr>
   </requestHandler>
 
-  <requestHandler name="/mlt" class="solr.MoreLikeThisHandler">
-  </requestHandler>
-
-  <searchComponent class="solr.HighlightComponent" name="highlight">
-    <highlighting>
-      <!-- Configure the standard fragmenter -->
-      <fragmenter name="gap" class="org.apache.solr.highlight.GapFragmenter" default="true">
-        <lst name="defaults">
-          <int name="hl.fragsize">100</int>
-        </lst>
-      </fragmenter>
-
-      <fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter">
-        <lst name="defaults">
-          <int name="hl.fragsize">70</int>
-        </lst>
-      </fragmenter>
-
-      <!-- Configure the standard formatter -->
-      <formatter name="html" class="org.apache.solr.highlight.HtmlFormatter" default="true">
-        <lst name="defaults">
-          <str name="hl.simple.pre"><![CDATA[<em>]]></str>
-          <str name="hl.simple.post"><![CDATA[</em>]]></str>
-        </lst>
-      </formatter>
-
-      <!-- Configure the standard fragListBuilder -->
-      <fragListBuilder name="simple" class="org.apache.solr.highlight.SimpleFragListBuilder" default="true"/>
-
-      <!-- Configure the standard fragmentsBuilder -->
-      <fragmentsBuilder name="simple" class="org.apache.solr.highlight.SimpleFragmentsBuilder" default="true"/>
-      <fragmentsBuilder name="scoreOrder" class="org.apache.solr.highlight.ScoreOrderFragmentsBuilder"/>
-
-      <boundaryScanner name="simple" class="solr.highlight.SimpleBoundaryScanner" default="true">
-        <lst name="defaults">
-          <str name="hl.bs.maxScan">10</str>
-          <str name="hl.bs.chars">.,!? &#9;&#10;&#13;</str>
-        </lst>
-      </boundaryScanner>
-
-      <boundaryScanner name="breakIterator" class="solr.highlight.BreakIteratorBoundaryScanner">
-        <lst name="defaults">
-          <str name="hl.bs.type">WORD</str>
-          <str name="hl.bs.language">en</str>
-          <str name="hl.bs.country">US</str>
-        </lst>
-      </boundaryScanner>
-    </highlighting>
-  </searchComponent>
-
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>
@@ -447,7 +334,7 @@ based HashBitset. -->
     <processor class="solr.RunUpdateProcessorFactory" />
   </updateRequestProcessorChain>
 
-  <initParams path="/elevate,standard">
+  <initParams path="/elevate,/select">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-components-name.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-components-name.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-components-name.xml
index fe0e55c..8d311dd 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-components-name.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-components-name.xml
@@ -42,7 +42,7 @@
   <queryResponseWriter name="xml" default="true"
                        class="solr.XMLResponseWriter" />
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
     <arr name="first-components">
       <str>component1</str>
@@ -52,7 +52,7 @@
     </arr>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-configurerecoverystrategy.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-configurerecoverystrategy.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-configurerecoverystrategy.xml
index 62e671d..d86a6de 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-configurerecoverystrategy.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-configurerecoverystrategy.xml
@@ -20,7 +20,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <recoveryStrategy>
     <int name="maxRetries">250</int>
   </recoveryStrategy>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-customrecoverystrategy.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-customrecoverystrategy.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-customrecoverystrategy.xml
index d43ed29..4e8effa 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-customrecoverystrategy.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-customrecoverystrategy.xml
@@ -20,7 +20,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <!--
     The RecoveryStrategy and RecoveryStrategy.Builder classes may change in future and customisations
     are not supported between versions in terms of API or back compat behaviour.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-delaying-component.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-delaying-component.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-delaying-component.xml
index 91f1068..c1b1b02 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-delaying-component.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-delaying-component.xml
@@ -34,7 +34,7 @@
     </arr>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher >
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     <httpCaching never304="true" />
   </requestDispatcher>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-delpolicy1.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-delpolicy1.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-delpolicy1.xml
index 36b4b98..424783b 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-delpolicy1.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-delpolicy1.xml
@@ -23,7 +23,7 @@
   <schemaFactory class="ClassicIndexSchemaFactory"/>
 
   <updateHandler class="solr.DirectUpdateHandler2"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"/>
+  <requestHandler name="/select" class="solr.SearchHandler"/>
 
   <indexConfig>
     <!-- we can't include solrconfig.snippet.randomindexconfig.xml because we need

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-delpolicy2.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-delpolicy2.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-delpolicy2.xml
index 06352f3..bb4d3f8 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-delpolicy2.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-delpolicy2.xml
@@ -43,6 +43,6 @@
     </deletionPolicy>
   </indexConfig>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
 </config>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-distrib-update-processor-chains.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-distrib-update-processor-chains.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-distrib-update-processor-chains.xml
index 97ed18b..f91be75 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-distrib-update-processor-chains.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-distrib-update-processor-chains.xml
@@ -43,8 +43,7 @@
    <processor class="solr.RunUpdateProcessorFactory" />
  </updateRequestProcessorChain>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
-  </requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"/>
 
   <requestHandler name="/get" class="solr.RealTimeGetHandler">
     <lst name="defaults">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-doctransformers.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-doctransformers.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-doctransformers.xml
index b242f11..5a7d65e 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-doctransformers.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-doctransformers.xml
@@ -37,9 +37,9 @@
 
   <transformer name="custom" class="org.apache.solr.response.TestCustomDocTransformer$CustomTransformerFactory" />
 
-  <requestHandler name="/select" class="solr.StandardRequestHandler"/>
+  <requestHandler name="/select" class="solr.SearchHandler"/>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
   </requestDispatcher>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-elevate.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-elevate.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-elevate.xml
index 03efed6..083333c 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-elevate.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-elevate.xml
@@ -150,7 +150,7 @@
     </arr>
   </requestHandler>-->
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-externalversionconstraint.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-externalversionconstraint.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-externalversionconstraint.xml
index eef941e..3a0adbe 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-externalversionconstraint.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-externalversionconstraint.xml
@@ -109,7 +109,7 @@
     <processor class="solr.RunUpdateProcessorFactory" />
   </updateRequestProcessorChain>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
   </requestHandler>
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-functionquery.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-functionquery.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-functionquery.xml
index 10f5e85..ef0c39a 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-functionquery.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-functionquery.xml
@@ -28,7 +28,7 @@
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"/>
+  <requestHandler name="/select" class="solr.SearchHandler"/>
 
   <updateHandler class="solr.DirectUpdateHandler2"/>
 
@@ -39,7 +39,7 @@
   <valueSourceParser name="nvl" class="org.apache.solr.search.function.NvlValueSourceParser">
     <float name="nvlFloatValue">0.0</float>
   </valueSourceParser>
-  <initParams path="standard">
+  <initParams path="/select">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>


[16/53] [abbrv] lucene-solr:feature/autoscaling: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/lucene-solr

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b4fa0e78/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java
----------------------------------------------------------------------


[15/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10973: Use the correct constructor for InputStreamBody.

Posted by sh...@apache.org.
SOLR-10973: Use the correct constructor for InputStreamBody.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/224f3498
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/224f3498
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/224f3498

Branch: refs/heads/feature/autoscaling
Commit: 224f349857889d4ac8493cce0008eb51a2b7cb9b
Parents: 3291ef8
Author: Karl Wright <Da...@gmail.com>
Authored: Thu Jun 29 04:58:51 2017 -0400
Committer: Karl Wright <Da...@gmail.com>
Committed: Thu Jun 29 04:58:51 2017 -0400

----------------------------------------------------------------------
 .../src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/224f3498/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java
index c1e9576..6ea4201 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java
@@ -421,7 +421,7 @@ public class HttpSolrClient extends SolrClient {
             parts.add(new FormBodyPart(name,
                 new InputStreamBody(
                     content.getStream(),
-                    contentType,
+                    ContentType.parse(contentType),
                     content.getName())));
           }
         }


[18/53] [abbrv] lucene-solr:feature/autoscaling: Fix solrj test compilation error.

Posted by sh...@apache.org.
Fix solrj test compilation error.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/cabb1fa3
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/cabb1fa3
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/cabb1fa3

Branch: refs/heads/feature/autoscaling
Commit: cabb1fa366c5fc74a3be25f9a2e92b023c04343f
Parents: b4fa0e7
Author: Karl Wright <Da...@gmail.com>
Authored: Thu Jun 29 05:13:51 2017 -0400
Committer: Karl Wright <Da...@gmail.com>
Committed: Thu Jun 29 05:13:51 2017 -0400

----------------------------------------------------------------------
 .../solr/client/solrj/embedded/SolrExampleStreamingTest.java       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cabb1fa3/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java
index 35ab898..6443ce9 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java
@@ -132,7 +132,7 @@ public class SolrExampleStreamingTest extends SolrExampleTests {
       lastError = ex;
     }
     
-    static class Builder extends ConcurrentUpdateSolrClient.Builder {
+    public static class Builder extends ConcurrentUpdateSolrClient.Builder {
 
       public Builder(String baseSolrUrl) {
         super(baseSolrUrl);


[14/53] [abbrv] lucene-solr:feature/autoscaling: LUCENE-7838 - removed dep from sandbox, created a minimal FLT version specific for knn classification

Posted by sh...@apache.org.
LUCENE-7838 - removed dep from sandbox, created a minimal FLT version specific for knn classification


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/92e46038
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/92e46038
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/92e46038

Branch: refs/heads/feature/autoscaling
Commit: 92e460389dc9b0af83c445cb029e3a51799a37dc
Parents: 85069cac
Author: Tommaso Teofili <to...@apache.org>
Authored: Thu Jun 29 10:01:49 2017 +0200
Committer: Tommaso Teofili <to...@apache.org>
Committed: Thu Jun 29 10:01:49 2017 +0200

----------------------------------------------------------------------
 .../lucene/classification/classification.iml    |   1 -
 lucene/classification/build.xml                 |   6 +-
 .../classification/KNearestFuzzyClassifier.java |  29 +-
 .../classification/utils/NearestFuzzyQuery.java | 333 +++++++++++++++++++
 .../KNearestFuzzyClassifierTest.java            |   2 +-
 5 files changed, 348 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92e46038/dev-tools/idea/lucene/classification/classification.iml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/lucene/classification/classification.iml b/dev-tools/idea/lucene/classification/classification.iml
index 44af1e4..25810ed 100644
--- a/dev-tools/idea/lucene/classification/classification.iml
+++ b/dev-tools/idea/lucene/classification/classification.iml
@@ -19,6 +19,5 @@
     <orderEntry type="module" module-name="analysis-common" />
     <orderEntry type="module" module-name="grouping" />
     <orderEntry type="module" module-name="misc" />
-    <orderEntry type="module" module-name="sandbox" />
   </component>
 </module>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92e46038/lucene/classification/build.xml
----------------------------------------------------------------------
diff --git a/lucene/classification/build.xml b/lucene/classification/build.xml
index af7d2b1..43bcb4b 100644
--- a/lucene/classification/build.xml
+++ b/lucene/classification/build.xml
@@ -28,7 +28,6 @@
     <path refid="base.classpath"/>
     <pathelement path="${queries.jar}"/>
     <pathelement path="${grouping.jar}"/>
-    <pathelement path="${sandbox.jar}"/>
     <pathelement path="${analyzers-common.jar}"/>
   </path>
 
@@ -38,18 +37,17 @@
     <path refid="test.base.classpath"/>
   </path>
 
-  <target name="compile-core" depends="jar-sandbox,jar-grouping,jar-queries,jar-analyzers-common,common.compile-core" />
+  <target name="compile-core" depends="jar-grouping,jar-queries,jar-analyzers-common,common.compile-core" />
 
   <target name="jar-core" depends="common.jar-core" />
 
-  <target name="javadocs" depends="javadocs-sandbox,javadocs-grouping,compile-core,check-javadocs-uptodate"
+  <target name="javadocs" depends="javadocs-grouping,compile-core,check-javadocs-uptodate"
           unless="javadocs-uptodate-${name}">
     <invoke-module-javadoc>
       <links>
         <link href="../queries"/>
         <link href="../analyzers-common"/>
         <link href="../grouping"/>
-        <link href="../sandbox"/>
       </links>
     </invoke-module-javadoc>
   </target>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92e46038/lucene/classification/src/java/org/apache/lucene/classification/KNearestFuzzyClassifier.java
----------------------------------------------------------------------
diff --git a/lucene/classification/src/java/org/apache/lucene/classification/KNearestFuzzyClassifier.java b/lucene/classification/src/java/org/apache/lucene/classification/KNearestFuzzyClassifier.java
index 7bbdbab..cbd241b 100644
--- a/lucene/classification/src/java/org/apache/lucene/classification/KNearestFuzzyClassifier.java
+++ b/lucene/classification/src/java/org/apache/lucene/classification/KNearestFuzzyClassifier.java
@@ -25,11 +25,11 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.classification.utils.NearestFuzzyQuery;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.sandbox.queries.FuzzyLikeThisQuery;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.IndexSearcher;
@@ -42,7 +42,7 @@ import org.apache.lucene.search.similarities.Similarity;
 import org.apache.lucene.util.BytesRef;
 
 /**
- * A k-Nearest Neighbor classifier based on {@link FuzzyLikeThisQuery}.
+ * A k-Nearest Neighbor classifier based on {@link NearestFuzzyQuery}.
  *
  * @lucene.experimental
  */
@@ -51,27 +51,27 @@ public class KNearestFuzzyClassifier implements Classifier<BytesRef> {
   /**
    * the name of the fields used as the input text
    */
-  protected final String[] textFieldNames;
+  private final String[] textFieldNames;
 
   /**
    * the name of the field used as the output text
    */
-  protected final String classFieldName;
+  private final String classFieldName;
 
   /**
    * an {@link IndexSearcher} used to perform queries
    */
-  protected final IndexSearcher indexSearcher;
+  private final IndexSearcher indexSearcher;
 
   /**
    * the no. of docs to compare in order to find the nearest neighbor to the input text
    */
-  protected final int k;
+  private final int k;
 
   /**
    * a {@link Query} used to filter the documents that should be used from this classifier's underlying {@link LeafReader}
    */
-  protected final Query query;
+  private final Query query;
   private final Analyzer analyzer;
 
   /**
@@ -145,11 +145,11 @@ public class KNearestFuzzyClassifier implements Classifier<BytesRef> {
 
   private TopDocs knnSearch(String text) throws IOException {
     BooleanQuery.Builder bq = new BooleanQuery.Builder();
-    FuzzyLikeThisQuery fuzzyLikeThisQuery = new FuzzyLikeThisQuery(300, analyzer);
+    NearestFuzzyQuery nearestFuzzyQuery = new NearestFuzzyQuery(analyzer);
     for (String fieldName : textFieldNames) {
-      fuzzyLikeThisQuery.addTerms(text, fieldName, 1f, 2); // TODO: make this parameters configurable
+      nearestFuzzyQuery.addTerms(text, fieldName);
     }
-    bq.add(fuzzyLikeThisQuery, BooleanClause.Occur.MUST);
+    bq.add(nearestFuzzyQuery, BooleanClause.Occur.MUST);
     Query classFieldQuery = new WildcardQuery(new Term(classFieldName, "*"));
     bq.add(new BooleanClause(classFieldQuery, BooleanClause.Occur.MUST));
     if (query != null) {
@@ -165,7 +165,7 @@ public class KNearestFuzzyClassifier implements Classifier<BytesRef> {
    * @return a {@link List} of {@link ClassificationResult}, one for each existing class
    * @throws IOException if it's not possible to get the stored value of class field
    */
-  protected List<ClassificationResult<BytesRef>> buildListFromTopDocs(TopDocs topDocs) throws IOException {
+  private List<ClassificationResult<BytesRef>> buildListFromTopDocs(TopDocs topDocs) throws IOException {
     Map<BytesRef, Integer> classCounts = new HashMap<>();
     Map<BytesRef, Double> classBoosts = new HashMap<>(); // this is a boost based on class ranking positions in topDocs
     float maxScore = topDocs.getMaxScore();
@@ -174,12 +174,7 @@ public class KNearestFuzzyClassifier implements Classifier<BytesRef> {
       if (storableField != null) {
         BytesRef cl = new BytesRef(storableField.stringValue());
         //update count
-        Integer count = classCounts.get(cl);
-        if (count != null) {
-          classCounts.put(cl, count + 1);
-        } else {
-          classCounts.put(cl, 1);
-        }
+        classCounts.merge(cl, 1, (a, b) -> a + b);
         //update boost, the boost is based on the best score
         Double totalBoost = classBoosts.get(cl);
         double singleBoost = scoreDoc.score / maxScore;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92e46038/lucene/classification/src/java/org/apache/lucene/classification/utils/NearestFuzzyQuery.java
----------------------------------------------------------------------
diff --git a/lucene/classification/src/java/org/apache/lucene/classification/utils/NearestFuzzyQuery.java b/lucene/classification/src/java/org/apache/lucene/classification/utils/NearestFuzzyQuery.java
new file mode 100644
index 0000000..d4a2634
--- /dev/null
+++ b/lucene/classification/src/java/org/apache/lucene/classification/utils/NearestFuzzyQuery.java
@@ -0,0 +1,333 @@
+/*
+ * 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.
+ */
+package org.apache.lucene.classification.utils;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Objects;
+
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.LeafReaderContext;
+import org.apache.lucene.index.MultiFields;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.index.TermContext;
+import org.apache.lucene.index.Terms;
+import org.apache.lucene.index.TermsEnum;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.BoostAttribute;
+import org.apache.lucene.search.BoostQuery;
+import org.apache.lucene.search.FuzzyTermsEnum;
+import org.apache.lucene.search.MaxNonCompetitiveBoostAttribute;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.util.AttributeSource;
+import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.PriorityQueue;
+import org.apache.lucene.util.automaton.LevenshteinAutomata;
+
+/**
+ * Simplification of FuzzyLikeThisQuery, to be used in the context of KNN classification.
+ */
+public class NearestFuzzyQuery extends Query {
+
+  private final ArrayList<FieldVals> fieldVals = new ArrayList<>();
+  private final Analyzer analyzer;
+
+  // fixed parameters
+  private static final int MAX_VARIANTS_PER_TERM = 50;
+  private static final float MIN_SIMILARITY = 1f;
+  private static final int PREFIX_LENGTH = 2;
+  private static final int MAX_NUM_TERMS = 300;
+
+  /**
+   * Default constructor
+   *
+   * @param analyzer the analyzer used to proecss the query text
+   */
+  public NearestFuzzyQuery(Analyzer analyzer) {
+    this.analyzer = analyzer;
+  }
+
+  static class FieldVals {
+    final String queryString;
+    final String fieldName;
+    final int maxEdits;
+    final int prefixLength;
+
+    FieldVals(String name, int maxEdits, String queryString) {
+      this.fieldName = name;
+      this.maxEdits = maxEdits;
+      this.queryString = queryString;
+      this.prefixLength = NearestFuzzyQuery.PREFIX_LENGTH;
+    }
+
+    @Override
+    public int hashCode() {
+      final int prime = 31;
+      int result = 1;
+      result = prime * result
+          + ((fieldName == null) ? 0 : fieldName.hashCode());
+      result = prime * result + maxEdits;
+      result = prime * result + prefixLength;
+      result = prime * result
+          + ((queryString == null) ? 0 : queryString.hashCode());
+      return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+      if (this == obj)
+        return true;
+      if (obj == null)
+        return false;
+      if (getClass() != obj.getClass())
+        return false;
+      FieldVals other = (FieldVals) obj;
+      if (fieldName == null) {
+        if (other.fieldName != null)
+          return false;
+      } else if (!fieldName.equals(other.fieldName))
+        return false;
+      if (maxEdits != other.maxEdits) {
+        return false;
+      }
+      if (prefixLength != other.prefixLength)
+        return false;
+      if (queryString == null) {
+        if (other.queryString != null)
+          return false;
+      } else if (!queryString.equals(other.queryString))
+        return false;
+      return true;
+    }
+
+
+  }
+
+  /**
+   * Adds user input for "fuzzification"
+   *
+   * @param queryString The string which will be parsed by the analyzer and for which fuzzy variants will be parsed
+   */
+  public void addTerms(String queryString, String fieldName) {
+    int maxEdits = (int) MIN_SIMILARITY;
+    if (maxEdits != MIN_SIMILARITY) {
+      throw new IllegalArgumentException("MIN_SIMILARITY must integer value between 0 and " + LevenshteinAutomata.MAXIMUM_SUPPORTED_DISTANCE + ", inclusive; got " + MIN_SIMILARITY);
+    }
+    fieldVals.add(new FieldVals(fieldName, maxEdits, queryString));
+  }
+
+
+  private void addTerms(IndexReader reader, FieldVals f, ScoreTermQueue q) throws IOException {
+    if (f.queryString == null) return;
+    final Terms terms = MultiFields.getTerms(reader, f.fieldName);
+    if (terms == null) {
+      return;
+    }
+    try (TokenStream ts = analyzer.tokenStream(f.fieldName, f.queryString)) {
+      CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
+
+      int corpusNumDocs = reader.numDocs();
+      HashSet<String> processedTerms = new HashSet<>();
+      ts.reset();
+      while (ts.incrementToken()) {
+        String term = termAtt.toString();
+        if (!processedTerms.contains(term)) {
+          processedTerms.add(term);
+          ScoreTermQueue variantsQ = new ScoreTermQueue(MAX_VARIANTS_PER_TERM); //maxNum variants considered for any one term
+          float minScore = 0;
+          Term startTerm = new Term(f.fieldName, term);
+          AttributeSource atts = new AttributeSource();
+          MaxNonCompetitiveBoostAttribute maxBoostAtt =
+              atts.addAttribute(MaxNonCompetitiveBoostAttribute.class);
+          FuzzyTermsEnum fe = new FuzzyTermsEnum(terms, atts, startTerm, f.maxEdits, f.prefixLength, true);
+          //store the df so all variants use same idf
+          int df = reader.docFreq(startTerm);
+          int numVariants = 0;
+          int totalVariantDocFreqs = 0;
+          BytesRef possibleMatch;
+          BoostAttribute boostAtt =
+              fe.attributes().addAttribute(BoostAttribute.class);
+          while ((possibleMatch = fe.next()) != null) {
+            numVariants++;
+            totalVariantDocFreqs += fe.docFreq();
+            float score = boostAtt.getBoost();
+            if (variantsQ.size() < MAX_VARIANTS_PER_TERM || score > minScore) {
+              ScoreTerm st = new ScoreTerm(new Term(startTerm.field(), BytesRef.deepCopyOf(possibleMatch)), score, startTerm);
+              variantsQ.insertWithOverflow(st);
+              minScore = variantsQ.top().score; // maintain minScore
+            }
+            maxBoostAtt.setMaxNonCompetitiveBoost(variantsQ.size() >= MAX_VARIANTS_PER_TERM ? minScore : Float.NEGATIVE_INFINITY);
+          }
+
+          if (numVariants > 0) {
+            int avgDf = totalVariantDocFreqs / numVariants;
+            if (df == 0)//no direct match we can use as df for all variants
+            {
+              df = avgDf; //use avg df of all variants
+            }
+
+            // take the top variants (scored by edit distance) and reset the score
+            // to include an IDF factor then add to the global queue for ranking
+            // overall top query terms
+            int size = variantsQ.size();
+            for (int i = 0; i < size; i++) {
+              ScoreTerm st = variantsQ.pop();
+              if (st != null) {
+                st.score = (st.score * st.score) * idf(df, corpusNumDocs);
+                q.insertWithOverflow(st);
+              }
+            }
+          }
+        }
+      }
+      ts.end();
+    }
+  }
+
+  private float idf(int docFreq, int docCount) {
+    return (float)(Math.log((docCount+1)/(double)(docFreq+1)) + 1.0);
+  }
+
+  private Query newTermQuery(IndexReader reader, Term term) throws IOException {
+    // we build an artificial TermContext that will give an overall df and ttf
+    // equal to 1
+    TermContext context = new TermContext(reader.getContext());
+    for (LeafReaderContext leafContext : reader.leaves()) {
+      Terms terms = leafContext.reader().terms(term.field());
+      if (terms != null) {
+        TermsEnum termsEnum = terms.iterator();
+        if (termsEnum.seekExact(term.bytes())) {
+          int freq = 1 - context.docFreq(); // we want the total df and ttf to be 1
+          context.register(termsEnum.termState(), leafContext.ord, freq, freq);
+        }
+      }
+    }
+    return new TermQuery(term, context);
+  }
+
+  @Override
+  public Query rewrite(IndexReader reader) throws IOException {
+    ScoreTermQueue q = new ScoreTermQueue(MAX_NUM_TERMS);
+    //load up the list of possible terms
+    for (FieldVals f : fieldVals) {
+      addTerms(reader, f, q);
+    }
+
+    BooleanQuery.Builder bq = new BooleanQuery.Builder();
+
+    //create BooleanQueries to hold the variants for each token/field pair and ensure it
+    // has no coord factor
+    //Step 1: sort the termqueries by term/field
+    HashMap<Term, ArrayList<ScoreTerm>> variantQueries = new HashMap<>();
+    int size = q.size();
+    for (int i = 0; i < size; i++) {
+      ScoreTerm st = q.pop();
+      if (st != null) {
+        ArrayList<ScoreTerm> l = variantQueries.computeIfAbsent(st.fuzziedSourceTerm, k -> new ArrayList<>());
+        l.add(st);
+      }
+    }
+    //Step 2: Organize the sorted termqueries into zero-coord scoring boolean queries
+    for (ArrayList<ScoreTerm> variants : variantQueries.values()) {
+      if (variants.size() == 1) {
+        //optimize where only one selected variant
+        ScoreTerm st = variants.get(0);
+        Query tq = newTermQuery(reader, st.term);
+        // set the boost to a mix of IDF and score
+        bq.add(new BoostQuery(tq, st.score), BooleanClause.Occur.SHOULD);
+      } else {
+        BooleanQuery.Builder termVariants = new BooleanQuery.Builder();
+        for (ScoreTerm st : variants) {
+          // found a match
+          Query tq = newTermQuery(reader, st.term);
+          // set the boost using the ScoreTerm's score
+          termVariants.add(new BoostQuery(tq, st.score), BooleanClause.Occur.SHOULD);          // add to query
+        }
+        bq.add(termVariants.build(), BooleanClause.Occur.SHOULD);          // add to query
+      }
+    }
+    //TODO possible alternative step 3 - organize above booleans into a new layer of field-based
+    // booleans with a minimum-should-match of NumFields-1?
+    return bq.build();
+  }
+
+  //Holds info for a fuzzy term variant - initially score is set to edit distance (for ranking best
+  // term variants) then is reset with IDF for use in ranking against all other
+  // terms/fields
+  private static class ScoreTerm {
+    public final Term term;
+    public float score;
+    final Term fuzziedSourceTerm;
+
+    ScoreTerm(Term term, float score, Term fuzziedSourceTerm) {
+      this.term = term;
+      this.score = score;
+      this.fuzziedSourceTerm = fuzziedSourceTerm;
+    }
+  }
+
+  private static class ScoreTermQueue extends PriorityQueue<ScoreTerm> {
+    ScoreTermQueue(int size) {
+      super(size);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.lucene.util.PriorityQueue#lessThan(java.lang.Object, java.lang.Object)
+     */
+    @Override
+    protected boolean lessThan(ScoreTerm termA, ScoreTerm termB) {
+      if (termA.score == termB.score)
+        return termA.term.compareTo(termB.term) > 0;
+      else
+        return termA.score < termB.score;
+    }
+
+  }
+
+  @Override
+  public String toString(String field) {
+    return null;
+  }
+
+  @Override
+  public int hashCode() {
+    int prime = 31;
+    int result = classHash();
+    result = prime * result + Objects.hashCode(analyzer);
+    result = prime * result + Objects.hashCode(fieldVals);
+    return result;
+  }
+
+  @Override
+  public boolean equals(Object other) {
+    return sameClassAs(other) &&
+        equalsTo(getClass().cast(other));
+  }
+
+  private boolean equalsTo(NearestFuzzyQuery other) {
+    return Objects.equals(analyzer, other.analyzer) &&
+        Objects.equals(fieldVals, other.fieldVals);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/92e46038/lucene/classification/src/test/org/apache/lucene/classification/KNearestFuzzyClassifierTest.java
----------------------------------------------------------------------
diff --git a/lucene/classification/src/test/org/apache/lucene/classification/KNearestFuzzyClassifierTest.java b/lucene/classification/src/test/org/apache/lucene/classification/KNearestFuzzyClassifierTest.java
index 1f70eb4..5c5122a 100644
--- a/lucene/classification/src/test/org/apache/lucene/classification/KNearestFuzzyClassifierTest.java
+++ b/lucene/classification/src/test/org/apache/lucene/classification/KNearestFuzzyClassifierTest.java
@@ -28,7 +28,7 @@ import org.apache.lucene.util.BytesRef;
 import org.junit.Test;
 
 /**
- * Testcase for {@link KNearestFuzzyClassifier}
+ * Tests for {@link KNearestFuzzyClassifier}
  */
 public class KNearestFuzzyClassifierTest extends ClassificationTestBase<BytesRef> {
 


[19/53] [abbrv] lucene-solr:feature/autoscaling: LUCENE-7887: don't clear BufferedUpdatesStream on abort

Posted by sh...@apache.org.
LUCENE-7887: don't clear BufferedUpdatesStream on abort


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/c9c0121d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/c9c0121d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/c9c0121d

Branch: refs/heads/feature/autoscaling
Commit: c9c0121d9399ff0009c51d6a32632dd0962e8c8f
Parents: cabb1fa
Author: Mike McCandless <mi...@apache.org>
Authored: Thu Jun 29 05:52:19 2017 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Thu Jun 29 05:53:10 2017 -0400

----------------------------------------------------------------------
 .../java/org/apache/lucene/index/BufferedUpdatesStream.java    | 3 +++
 .../java/org/apache/lucene/index/FrozenBufferedUpdates.java    | 6 +-----
 lucene/core/src/java/org/apache/lucene/index/IndexWriter.java  | 2 --
 3 files changed, 4 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c9c0121d/lucene/core/src/java/org/apache/lucene/index/BufferedUpdatesStream.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/BufferedUpdatesStream.java b/lucene/core/src/java/org/apache/lucene/index/BufferedUpdatesStream.java
index 8c0a2be..07d2b66 100644
--- a/lucene/core/src/java/org/apache/lucene/index/BufferedUpdatesStream.java
+++ b/lucene/core/src/java/org/apache/lucene/index/BufferedUpdatesStream.java
@@ -175,11 +175,14 @@ class BufferedUpdatesStream implements Accountable {
     // TODO: would be a bit more memory efficient to track this per-segment, so when each segment writes it writes all packets finished for
     // it, rather than only recording here, across all segments.  But, more complex code, and more CPU, and maybe not so much impact in
     // practice?
+    assert packet.applied.getCount() == 1: "packet=" + packet;
 
     packet.applied.countDown();
 
     updates.remove(packet);
     numTerms.addAndGet(-packet.numTermDeletes);
+    assert numTerms.get() >= 0: "numTerms=" + numTerms + " packet=" + packet;
+    
     bytesUsed.addAndGet(-packet.bytesUsed);
 
     finishedSegment(packet.delGen());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c9c0121d/lucene/core/src/java/org/apache/lucene/index/FrozenBufferedUpdates.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/FrozenBufferedUpdates.java b/lucene/core/src/java/org/apache/lucene/index/FrozenBufferedUpdates.java
index d5d1de0..8248841 100644
--- a/lucene/core/src/java/org/apache/lucene/index/FrozenBufferedUpdates.java
+++ b/lucene/core/src/java/org/apache/lucene/index/FrozenBufferedUpdates.java
@@ -299,7 +299,6 @@ class FrozenBufferedUpdates {
           if (infoStream.isEnabled("BD")) {
             infoStream.message("BD", "packet matches no segments");
           }
-          
           break;
         }
 
@@ -422,10 +421,7 @@ class FrozenBufferedUpdates {
       throw new IllegalArgumentException("gen is not yet set; call BufferedUpdatesStream.push first");
     }
 
-    if (applied.getCount() == 0) {
-      // already done
-      return totalDelCount;
-    }
+    assert applied.getCount() != 0;
 
     if (privateSegment != null) {
       assert segStates.length == 1;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c9c0121d/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
index 4870282..2ef928b 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
@@ -2364,8 +2364,6 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
       // set it to false before calling rollbackInternal
       mergeScheduler.close();
 
-      bufferedUpdatesStream.clear();
-
       docWriter.close(); // mark it as closed first to prevent subsequent indexing actions/flushes 
       docWriter.abort(this); // don't sync on IW here
       synchronized(this) {


[34/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10864: Fixup: Restore the DV vs trie vs points intent of TestRandomDVFaceting

Posted by sh...@apache.org.
SOLR-10864: Fixup: Restore the DV vs trie vs points intent of TestRandomDVFaceting


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/f3c851a0
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/f3c851a0
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/f3c851a0

Branch: refs/heads/feature/autoscaling
Commit: f3c851a015e5d8c775f0fb28ffbd8f5725f2f11b
Parents: 26d2ed7
Author: Chris Hostetter <ho...@apache.org>
Authored: Fri Jun 30 11:23:28 2017 -0700
Committer: Chris Hostetter <ho...@apache.org>
Committed: Fri Jun 30 11:23:28 2017 -0700

----------------------------------------------------------------------
 .../org/apache/solr/TestRandomDVFaceting.java   | 28 +++++++++++++++++---
 1 file changed, 24 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f3c851a0/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java b/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java
index 46762ea..aaeab54 100644
--- a/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java
+++ b/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java
@@ -28,6 +28,8 @@ import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.SchemaField;
+import org.apache.solr.schema.TrieIntField;
+import org.apache.solr.schema.IntPointField;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -39,18 +41,36 @@ import org.slf4j.LoggerFactory;
  * to the indexed facet results as if it were just another faceting method.
  */
 @Slow
+@SolrTestCaseJ4.SuppressPointFields(bugUrl="Test explicitly compares Trie to Points, randomization defeats the point")
 public class TestRandomDVFaceting extends SolrTestCaseJ4 {
 
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   @BeforeClass
   public static void beforeTests() throws Exception {
-    // we need DVs on point fields to compute stats & facets
-    // but test also has hard coded assumptions about these field types *NOT* having DV when *NOT* points
-    // so use docvalue if and only if we are using points...
-    System.setProperty(NUMERIC_DOCVALUES_SYSPROP, System.getProperty(NUMERIC_POINTS_SYSPROP));
+    // This tests explicitly compares Trie DV with non-DV Trie with DV Points
+    // so we don't want randomized DocValues on all Trie fields
+    System.setProperty(NUMERIC_DOCVALUES_SYSPROP, "false");
     
     initCore("solrconfig-basic.xml","schema-docValuesFaceting.xml");
+
+    assertEquals("DocValues: Schema assumptions are broken",
+                 false, h.getCore().getLatestSchema().getField("foo_i").hasDocValues());
+    assertEquals("DocValues: Schema assumptions are broken",
+                 true, h.getCore().getLatestSchema().getField("foo_i_dv").hasDocValues());
+    assertEquals("DocValues: Schema assumptions are broken",
+                 true, h.getCore().getLatestSchema().getField("foo_i_p").hasDocValues());
+    
+    assertEquals("Type: Schema assumptions are broken",
+                 TrieIntField.class,
+                 h.getCore().getLatestSchema().getField("foo_i").getType().getClass());
+    assertEquals("Type: Schema assumptions are broken",
+                 TrieIntField.class,
+                 h.getCore().getLatestSchema().getField("foo_i_dv").getType().getClass());
+    assertEquals("Type: Schema assumptions are broken",
+                 IntPointField.class,
+                 h.getCore().getLatestSchema().getField("foo_i_p").getType().getClass());
+    
   }
 
   int indexSize;


[08/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-6807: fix _stateVer_ param check to not depend on handleSelect setting

Posted by sh...@apache.org.
SOLR-6807: fix _stateVer_ param check to not depend on handleSelect setting


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/811621c6
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/811621c6
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/811621c6

Branch: refs/heads/feature/autoscaling
Commit: 811621c6ea63318fb593a08970e8652b2501af25
Parents: d0c86d0
Author: David Smiley <ds...@apache.org>
Authored: Wed Jun 28 23:44:03 2017 -0400
Committer: David Smiley <ds...@apache.org>
Committed: Wed Jun 28 23:44:03 2017 -0400

----------------------------------------------------------------------
 solr/CHANGES.txt                                       |  3 +++
 .../src/java/org/apache/solr/servlet/HttpSolrCall.java | 13 ++++++-------
 2 files changed, 9 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/811621c6/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 214b82e..39fc14c 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -229,6 +229,9 @@ Bug Fixes
 * SOLR-10506: Fix memory leak (upon collection reload or ZooKeeper session expiry) in ZkIndexSchemaReader.
   (Torsten Bøgh Köster, Christine Poerschke, Jörg Rathlev, Mike Drob)
 
+* SOLR-6807: CloudSolrClient's ZK state version check with the server was ignored when handleSelect=false
+  (David Smiley)
+
 Optimizations
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/811621c6/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
index 5542d4c..a548c05 100644
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@ -327,6 +327,8 @@ public class HttpSolrCall {
           solrReq = parser.parse(core, path, req);
         }
 
+        invalidStates = checkStateVersionsAreValid(solrReq.getParams().get(CloudSolrClient.STATE_VERSION));
+
         if (usingAliases) {
           processAliases(aliases, collectionsList);
         }
@@ -388,8 +390,6 @@ public class HttpSolrCall {
 
   /**
    * Extract handler from the URL path if not set.
-   * This returns true if the action is set.
-   * 
    */
   protected void extractHandlerFromURLPath(SolrRequestParsers parser) throws Exception {
     if (handler == null && path.length() > 1) { // don't match "" or "/" as valid path
@@ -411,14 +411,12 @@ public class HttpSolrCall {
             return;
           }
         }
-
       }
-      // no handler yet but allowed to handle select; let's check
 
+      // no handler yet but <requestDispatcher> allows us to handle /select with a 'qt' param
       if (handler == null && parser.isHandleSelect()) {
         if ("/select".equals(path) || "/select/".equals(path)) {
           solrReq = parser.parse(core, path, req);
-          invalidStates = checkStateIsValid(solrReq.getParams().get(CloudSolrClient.STATE_VERSION));
           String qt = solrReq.getParams().get(CommonParams.QT);
           handler = core.getRequestHandler(qt);
           if (handler == null) {
@@ -438,7 +436,7 @@ public class HttpSolrCall {
     if (core == null && idx > 0) {
       coreUrl = getRemotCoreUrl(corename, origCorename);
       // don't proxy for internal update requests
-      invalidStates = checkStateIsValid(queryParams.get(CloudSolrClient.STATE_VERSION));
+      invalidStates = checkStateVersionsAreValid(queryParams.get(CloudSolrClient.STATE_VERSION));
       if (coreUrl != null
           && queryParams
           .get(DistributingUpdateProcessorFactory.DISTRIB_UPDATE_PARAM) == null) {
@@ -813,7 +811,8 @@ public class HttpSolrCall {
     }
   }
 
-  private Map<String, Integer> checkStateIsValid(String stateVer) {
+  /** Returns null if the state ({@link CloudSolrClient#STATE_VERSION}) is good; otherwise returns state problems. */
+  private Map<String, Integer> checkStateVersionsAreValid(String stateVer) {
     Map<String, Integer> result = null;
     String[] pairs;
     if (stateVer != null && !stateVer.isEmpty() && cores.isZooKeeperAware()) {


[50/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10914: RecoveryStrategy's sendPrepRecoveryCmd can get stuck for 5 minutes if leader is unloaded

Posted by sh...@apache.org.
SOLR-10914: RecoveryStrategy's sendPrepRecoveryCmd can get stuck for 5 minutes if leader is unloaded


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/157ff9a4
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/157ff9a4
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/157ff9a4

Branch: refs/heads/feature/autoscaling
Commit: 157ff9a4e159158f4ecc474d1874da97577e6190
Parents: b978f37
Author: Shalin Shekhar Mangar <sh...@apache.org>
Authored: Mon Jul 3 19:50:33 2017 +0530
Committer: Shalin Shekhar Mangar <sh...@apache.org>
Committed: Mon Jul 3 19:50:33 2017 +0530

----------------------------------------------------------------------
 solr/CHANGES.txt                                |   2 +
 .../org/apache/solr/cloud/RecoveryStrategy.java |  27 +----
 .../org/apache/solr/util/TestInjection.java     |   2 +-
 solr/core/src/test-files/solr/solr.xml          |   1 +
 .../apache/solr/cloud/TestCloudRecovery.java    |   8 --
 .../org/apache/solr/cloud/TestPrepRecovery.java | 109 +++++++++++++++++++
 6 files changed, 117 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/157ff9a4/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index aadc6db..1bc960d 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -501,6 +501,8 @@ when using one of Exact*StatsCache (Mikhail Khludnev)
 * SOLR-10910: Clean up a few details left over from pluggable transient core and untangling
   CoreDescriptor/CoreContainer references (Erick Erickson)
 
+* SOLR-10914: RecoveryStrategy's sendPrepRecoveryCmd can get stuck for 5 minutes if leader is unloaded. (shalin)
+
 Optimizations
 ----------------------
 * SOLR-10634: JSON Facet API: When a field/terms facet will retrieve all buckets (i.e. limit:-1)

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/157ff9a4/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
index 9b0805f..063f794 100644
--- a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
+++ b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
@@ -19,7 +19,6 @@ package org.apache.solr.cloud;
 import java.io.Closeable;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
-import java.net.SocketTimeoutException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -811,29 +810,12 @@ public class RecoveryStrategy implements Runnable, Closeable {
       prepCmd.setOnlyIfLeaderActive(true);
     }
 
-    final int maxTries = 30;
-    for (int numTries = 0; numTries < maxTries; numTries++) {
-      try {
-        sendPrepRecoveryCmd(leaderBaseUrl, prepCmd);
-        break;
-      } catch (ExecutionException e) {
-        if (e.getCause() instanceof SolrServerException) {
-          SolrServerException solrException = (SolrServerException) e.getCause();
-          if (solrException.getRootCause() instanceof SocketTimeoutException && numTries < maxTries) {
-            LOG.warn("Socket timeout on send prep recovery cmd, retrying.. ");
-            continue;
-          }
-        }
-        throw  e;
-      }
-    }
-  }
-
-  final private void sendPrepRecoveryCmd(String leaderBaseUrl, WaitForState prepCmd)
-      throws SolrServerException, IOException, InterruptedException, ExecutionException {
+    int conflictWaitMs = zkController.getLeaderConflictResolveWait();
+    // timeout after 5 seconds more than the max timeout (conflictWait + 3 seconds) on the server side
+    int readTimeout = conflictWaitMs + 8000;
     try (HttpSolrClient client = new HttpSolrClient.Builder(leaderBaseUrl).build()) {
       client.setConnectionTimeout(10000);
-      client.setSoTimeout(10000);
+      client.setSoTimeout(readTimeout);
       HttpUriRequestResponse mrr = client.httpUriRequest(prepCmd);
       prevSendPreRecoveryHttpUriRequest = mrr.httpUriRequest;
 
@@ -842,5 +824,4 @@ public class RecoveryStrategy implements Runnable, Closeable {
       mrr.future.get();
     }
   }
-
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/157ff9a4/solr/core/src/java/org/apache/solr/util/TestInjection.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/TestInjection.java b/solr/core/src/java/org/apache/solr/util/TestInjection.java
index 5b0d047..d7584da 100644
--- a/solr/core/src/java/org/apache/solr/util/TestInjection.java
+++ b/solr/core/src/java/org/apache/solr/util/TestInjection.java
@@ -329,7 +329,7 @@ public class TestInjection {
       boolean enabled = pair.first();
       int chanceIn100 = pair.second();
       // Prevent for continuous pause forever
-      if (enabled && rand.nextInt(100) >= (100 - chanceIn100) && countPrepRecoveryOpPauseForever.get() < 2) {
+      if (enabled && rand.nextInt(100) >= (100 - chanceIn100) && countPrepRecoveryOpPauseForever.get() < 1) {
         countPrepRecoveryOpPauseForever.incrementAndGet();
         log.info("inject pause forever for prep recovery op");
         try {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/157ff9a4/solr/core/src/test-files/solr/solr.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/solr.xml b/solr/core/src/test-files/solr/solr.xml
index 526dffa..ae27fe7 100644
--- a/solr/core/src/test-files/solr/solr.xml
+++ b/solr/core/src/test-files/solr/solr.xml
@@ -43,6 +43,7 @@
     <int name="zkClientTimeout">${solr.zkclienttimeout:30000}</int>
     <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
     <int name="leaderVoteWait">${leaderVoteWait:10000}</int>
+    <int name="leaderConflictResolveWait">${leaderConflictResolveWait:180000}</int>
     <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:45000}</int>
     <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:340000}</int>
     <int name="autoReplicaFailoverWaitAfterExpiration">${autoReplicaFailoverWaitAfterExpiration:10000}</int>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/157ff9a4/solr/core/src/test/org/apache/solr/cloud/TestCloudRecovery.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCloudRecovery.java b/solr/core/src/test/org/apache/solr/cloud/TestCloudRecovery.java
index c7fc0e8..2cf8774 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestCloudRecovery.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestCloudRecovery.java
@@ -43,8 +43,6 @@ import org.apache.solr.core.SolrCore;
 import org.apache.solr.metrics.SolrMetricManager;
 import org.apache.solr.update.DirectUpdateHandler2;
 import org.apache.solr.update.UpdateLog;
-import org.apache.solr.util.TestInjection;
-import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -56,7 +54,6 @@ public class TestCloudRecovery extends SolrCloudTestCase {
 
   @BeforeClass
   public static void setupCluster() throws Exception {
-    TestInjection.prepRecoveryOpPauseForever = "true:30";
     System.setProperty("solr.directoryFactory", "solr.StandardDirectoryFactory");
     System.setProperty("solr.ulog.numRecordsToKeep", "1000");
 
@@ -73,11 +70,6 @@ public class TestCloudRecovery extends SolrCloudTestCase {
         false, true, 30);
   }
 
-  @AfterClass
-  public static void afterClass() {
-    TestInjection.reset();
-  }
-
   @Before
   public void resetCollection() throws IOException, SolrServerException {
     cluster.getSolrClient().deleteByQuery(COLLECTION, "*:*");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/157ff9a4/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java b/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java
new file mode 100644
index 0000000..a80565b
--- /dev/null
+++ b/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java
@@ -0,0 +1,109 @@
+/*
+ * 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.
+ */
+
+package org.apache.solr.cloud;
+
+import org.apache.solr.client.solrj.embedded.JettySolrRunner;
+import org.apache.solr.client.solrj.impl.CloudSolrClient;
+import org.apache.solr.client.solrj.request.CollectionAdminRequest;
+import org.apache.solr.common.cloud.Replica;
+import org.apache.solr.util.TestInjection;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Tests for PREPRECOVERY CoreAdmin API
+ */
+public class TestPrepRecovery extends SolrCloudTestCase {
+
+  @BeforeClass
+  public static void setupCluster() throws Exception {
+    System.setProperty("solr.directoryFactory", "solr.StandardDirectoryFactory");
+    System.setProperty("solr.ulog.numRecordsToKeep", "1000");
+    // the default is 180s and our waitForState times out in 90s
+    // so we lower this to 10s so that we can still test timeouts
+    System.setProperty("leaderConflictResolveWait", "10000");
+
+    configureCluster(2)
+        .addConfig("config", TEST_PATH().resolve("configsets").resolve("cloud-minimal").resolve("conf"))
+        .withSolrXml(TEST_PATH().resolve("solr.xml"))
+        .configure();
+  }
+
+  public static void tearCluster() throws Exception {
+    System.clearProperty("leaderConflictResolveWait");
+  }
+
+  @Test
+  public void testLeaderUnloaded() throws Exception {
+    CloudSolrClient solrClient = cluster.getSolrClient();
+
+    String collectionName = "testLeaderUnloaded";
+    CollectionAdminRequest.createCollection(collectionName, 1, 2)
+        .process(solrClient);
+
+    waitForState("Expected collection: testLeaderUnloaded to be live with 1 shard and 2 replicas",
+        collectionName, clusterShape(1, 2));
+
+    JettySolrRunner newNode = cluster.startJettySolrRunner();
+    String newNodeName = newNode.getNodeName();
+
+    // add a replica to the new node so that it starts watching the collection
+    CollectionAdminRequest.addReplicaToShard(collectionName, "shard1")
+        .setNode(newNodeName)
+        .process(solrClient);
+
+    // now delete the leader
+    Replica leader = solrClient.getZkStateReader().getLeaderRetry(collectionName, "shard1");
+    CollectionAdminRequest.deleteReplica(collectionName, "shard1", leader.getName())
+        .process(solrClient);
+
+    // add another replica to the new node. When it starts recovering, it will likely have stale state
+    // and ask the erstwhile leader to PREPRECOVERY which will hang for about 30 seconds
+    CollectionAdminRequest.addReplicaToShard(collectionName, "shard1")
+        .setNode(newNodeName)
+        .process(solrClient);
+
+    // in the absence of the fixes made in SOLR-10914, this statement will timeout after 90s
+    waitForState("Expected collection: testLeaderUnloaded to be live with 1 shard and 3 replicas",
+        collectionName, clusterShape(1, 3));
+  }
+
+  public void testLeaderNotResponding() throws Exception {
+    CloudSolrClient solrClient = cluster.getSolrClient();
+
+    String collectionName = "testLeaderNotResponding";
+    CollectionAdminRequest.createCollection(collectionName, 1, 1)
+        .process(solrClient);
+
+    waitForState("Expected collection: testLeaderNotResponding to be live with 1 shard and 1 replicas",
+        collectionName, clusterShape(1, 1));
+
+    TestInjection.prepRecoveryOpPauseForever = "true:100";
+    try {
+      CollectionAdminRequest.addReplicaToShard(collectionName, "shard1")
+          .process(solrClient);
+
+      // in the absence of fixes made in SOLR-9716, prep recovery waits forever and the following statement
+      // times out in 90 seconds
+      waitForState("Expected collection: testLeaderNotResponding to be live with 1 shard and 2 replicas",
+          collectionName, clusterShape(1, 2));
+    } finally {
+      TestInjection.reset();
+    }
+  }
+}


[11/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10272: Adding user _default configset to test-files, fixing solr & solr.cmd script bugs

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/managed-schema b/solr/core/src/test-files/solr/configsets/_default/conf/managed-schema
new file mode 100644
index 0000000..a88300a
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/managed-schema
@@ -0,0 +1,1076 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ 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.
+-->
+
+<!--  
+ This is the Solr schema file. This file should be named "schema.xml" and
+ should be in the conf directory under the solr home
+ (i.e. ./solr/conf/schema.xml by default) 
+ or located where the classloader for the Solr webapp can find it.
+
+ This example schema is the recommended starting point for users.
+ It should be kept correct and concise, usable out-of-the-box.
+
+ For more information, on how to customize this file, please see
+ http://wiki.apache.org/solr/SchemaXml
+
+ PERFORMANCE NOTE: this schema includes many optional features and should not
+ be used for benchmarking.  To improve performance one could
+  - set stored="false" for all fields possible (esp large fields) when you
+    only need to search on the field but don't need to return the original
+    value.
+  - set indexed="false" if you don't need to search on the field, but only
+    return the field as a result of searching on other indexed fields.
+  - remove all unneeded copyField statements
+  - for best index size and searching performance, set "index" to false
+    for all general text fields, use copyField to copy them to the
+    catchall "text" field, and use that for searching.
+  - For maximum indexing performance, use the ConcurrentUpdateSolrServer
+    java client.
+  - Remember to run the JVM in server mode, and use a higher logging level
+    that avoids logging every request
+-->
+
+<schema name="default-config" version="1.6">
+    <!-- attribute "name" is the name of this schema and is only used for display purposes.
+       version="x.y" is Solr's version number for the schema syntax and 
+       semantics.  It should not normally be changed by applications.
+
+       1.0: multiValued attribute did not exist, all fields are multiValued 
+            by nature
+       1.1: multiValued attribute introduced, false by default 
+       1.2: omitTermFreqAndPositions attribute introduced, true by default 
+            except for text fields.
+       1.3: removed optional field compress feature
+       1.4: autoGeneratePhraseQueries attribute introduced to drive QueryParser
+            behavior when a single string produces multiple tokens.  Defaults 
+            to off for version >= 1.4
+       1.5: omitNorms defaults to true for primitive field types 
+            (int, float, boolean, string...)
+       1.6: useDocValuesAsStored defaults to true.
+    -->
+
+    <!-- Valid attributes for fields:
+     name: mandatory - the name for the field
+     type: mandatory - the name of a field type from the 
+       fieldTypes section
+     indexed: true if this field should be indexed (searchable or sortable)
+     stored: true if this field should be retrievable
+     docValues: true if this field should have doc values. Doc values are
+       useful (required, if you are using *Point fields) for faceting, 
+       grouping, sorting and function queries. Doc values will make the index 
+       faster to load, more NRT-friendly and more memory-efficient. 
+       They however come with some limitations: they are currently only 
+       supported by StrField, UUIDField, all Trie*Fields and *PointFields,
+       and depending on the field type, they might require the field to be
+       single-valued, be required or have a default value (check the
+       documentation of the field type you're interested in for more information)
+     multiValued: true if this field may contain multiple values per document
+     omitNorms: (expert) set to true to omit the norms associated with
+       this field (this disables length normalization and index-time
+       boosting for the field, and saves some memory).  Only full-text
+       fields or fields that need an index-time boost need norms.
+       Norms are omitted for primitive (non-analyzed) types by default.
+     termVectors: [false] set to true to store the term vector for a
+       given field.
+       When using MoreLikeThis, fields used for similarity should be
+       stored for best performance.
+     termPositions: Store position information with the term vector.  
+       This will increase storage costs.
+     termOffsets: Store offset information with the term vector. This 
+       will increase storage costs.
+     required: The field is required.  It will throw an error if the
+       value does not exist
+     default: a value that should be used if no value is specified
+       when adding a document.
+    -->
+
+    <!-- field names should consist of alphanumeric or underscore characters only and
+      not start with a digit.  This is not currently strictly enforced,
+      but other field names will not have first class support from all components
+      and back compatibility is not guaranteed.  Names with both leading and
+      trailing underscores (e.g. _version_) are reserved.
+    -->
+
+    <!-- In this _default configset, only three fields are pre-declared: 
+         id, _version_, and _text_.  All other fields will be type guessed and added via the
+         "add-unknown-fields-to-the-schema" update request processor chain declared 
+         in solrconfig.xml.
+         
+         Note that many dynamic fields are also defined - you can use them to specify a 
+         field's type via field naming conventions - see below.
+  
+         WARNING: The _text_ catch-all field will significantly increase your index size.
+         If you don't need it, consider removing it and the corresponding copyField directive.
+    -->
+    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
+    <!-- doc values are enabled by default for primitive types such as long so we don't index the version field  -->
+    <field name="_version_" type="long" indexed="false" stored="false"/>
+    <field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
+    <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
+
+    <!-- This can be enabled, in case the client does not know what fields may be searched. It isn't enabled by default
+         because it's very expensive to index everything twice. -->
+    <!-- <copyField source="*" dest="_text_"/> -->
+
+    <!-- Dynamic field definitions allow using convention over configuration
+       for fields via the specification of patterns to match field names. 
+       EXAMPLE:  name="*_i" will match any field ending in _i (like myid_i, z_i)
+       RESTRICTION: the glob-like pattern in the name attribute must have
+       a "*" only at the start or the end.  -->
+   
+    <dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
+    <dynamicField name="*_is" type="ints"    indexed="true"  stored="true"/>
+    <dynamicField name="*_s"  type="string"  indexed="true"  stored="true" />
+    <dynamicField name="*_s_ns"  type="string"  indexed="true"  stored="false" />
+    <dynamicField name="*_ss" type="strings"  indexed="true"  stored="true"/>
+    <dynamicField name="*_l"  type="long"   indexed="true"  stored="true"/>
+    <dynamicField name="*_l_ns"  type="long"   indexed="true"  stored="false"/>
+    <dynamicField name="*_ls" type="longs"   indexed="true"  stored="true"/>
+    <dynamicField name="*_t"   type="text_general" indexed="true" stored="true"/>
+    <dynamicField name="*_txt" type="text_general" indexed="true" stored="true"/>
+    <dynamicField name="*_b"  type="boolean" indexed="true" stored="true"/>
+    <dynamicField name="*_bs" type="booleans" indexed="true" stored="true"/>
+    <dynamicField name="*_f"  type="float"  indexed="true"  stored="true"/>
+    <dynamicField name="*_fs" type="floats"  indexed="true"  stored="true"/>
+    <dynamicField name="*_d"  type="double" indexed="true"  stored="true"/>
+    <dynamicField name="*_ds" type="doubles" indexed="true"  stored="true"/>
+
+    <dynamicField name="*_dt"  type="date"    indexed="true"  stored="true"/>
+    <dynamicField name="*_dts" type="date"    indexed="true"  stored="true" multiValued="true"/>
+    <dynamicField name="*_p"  type="location" indexed="true" stored="true"/>
+    <dynamicField name="*_srpt"  type="location_rpt" indexed="true" stored="true"/>
+    
+    <!-- KD-tree (point) numerics -->
+    <dynamicField name="*_pi" type="pint"    indexed="true"  stored="true"/>
+    <dynamicField name="*_pis" type="pints"    indexed="true"  stored="true"/>
+    <dynamicField name="*_pl" type="plong"   indexed="true"  stored="true"/>
+    <dynamicField name="*_pls" type="plongs"   indexed="true"  stored="true"/>
+    <dynamicField name="*_pf" type="pfloat"  indexed="true"  stored="true"/>
+    <dynamicField name="*_pfs" type="pfloats"  indexed="true"  stored="true"/>
+    <dynamicField name="*_pd" type="pdouble" indexed="true"  stored="true"/>
+    <dynamicField name="*_pds" type="pdoubles" indexed="true"  stored="true"/>
+    <dynamicField name="*_pdt" type="pdate"  indexed="true"  stored="true"/>
+    <dynamicField name="*_pdts" type="pdates"  indexed="true"  stored="true"/>
+
+    <!-- some trie-coded dynamic fields -->
+    <dynamicField name="*_ti" type="tint"    indexed="true"  stored="true"/>
+    <dynamicField name="*_tis" type="tints"    indexed="true"  stored="true"/>
+    <dynamicField name="*_tl" type="tlong"   indexed="true"  stored="true"/>
+    <dynamicField name="*_tls" type="tlongs"   indexed="true"  stored="true"/>
+    <dynamicField name="*_tf" type="tfloat"  indexed="true"  stored="true"/>
+    <dynamicField name="*_tfs" type="tfloats"  indexed="true"  stored="true"/>
+    <dynamicField name="*_td" type="tdouble" indexed="true"  stored="true"/>
+    <dynamicField name="*_tds" type="tdoubles" indexed="true"  stored="true"/>
+    <dynamicField name="*_tdt" type="tdate"  indexed="true"  stored="true"/>
+    <dynamicField name="*_tdts" type="tdates"  indexed="true"  stored="true"/>
+
+    <!-- payloaded dynamic fields -->
+    <dynamicField name="*_dpf" type="delimited_payloads_float" indexed="true"  stored="true"/>
+    <dynamicField name="*_dpi" type="delimited_payloads_int" indexed="true"  stored="true"/>
+    <dynamicField name="*_dps" type="delimited_payloads_string" indexed="true"  stored="true"/>
+
+    <dynamicField name="*_c"   type="currency" indexed="true"  stored="true"/>
+
+    <dynamicField name="ignored_*" type="ignored" multiValued="true"/>
+    <dynamicField name="attr_*" type="text_general" indexed="true" stored="true" multiValued="true"/>
+
+    <dynamicField name="random_*" type="random" />
+
+    <!-- uncomment the following to ignore any fields that don't already match an existing 
+        field name or dynamic field, rather than reporting them as an error. 
+        alternately, change the type="ignored" to some other type e.g. "text" if you want 
+        unknown fields indexed and/or stored by default 
+        
+        NB: use of "*" dynamic fields will disable field type guessing and adding
+        unknown fields to the schema. --> 
+    <!--dynamicField name="*" type="ignored" multiValued="true" /-->
+
+    <!-- Field to use to determine and enforce document uniqueness.
+      Unless this field is marked with required="false", it will be a required field
+    -->
+    <uniqueKey>id</uniqueKey>
+
+    <!-- copyField commands copy one field to another at the time a document
+       is added to the index.  It's used either to index the same field differently,
+       or to add multiple fields to the same field for easier/faster searching.
+
+    <copyField source="sourceFieldName" dest="destinationFieldName"/>
+    -->
+
+    <!-- field type definitions. The "name" attribute is
+       just a label to be used by field definitions.  The "class"
+       attribute and any other attributes determine the real
+       behavior of the fieldType.
+         Class names starting with "solr" refer to java classes in a
+       standard package such as org.apache.solr.analysis
+    -->
+
+    <!-- The StrField type is not analyzed, but indexed/stored verbatim.
+       It supports doc values but in that case the field needs to be
+       single-valued and either required or have a default value.
+      -->
+    <fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true" />
+    <fieldType name="strings" class="solr.StrField" sortMissingLast="true" multiValued="true" docValues="true" />
+
+    <!-- boolean type: "true" or "false" -->
+    <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
+
+    <fieldType name="booleans" class="solr.BoolField" sortMissingLast="true" multiValued="true"/>
+
+    <!-- sortMissingLast and sortMissingFirst attributes are optional attributes are
+         currently supported on types that are sorted internally as strings
+         and on numeric types.
+	     This includes "string","boolean", "int", "float", "long", "date", "double",
+	     including the "Trie" and "Point" variants.
+       - If sortMissingLast="true", then a sort on this field will cause documents
+         without the field to come after documents with the field,
+         regardless of the requested sort order (asc or desc).
+       - If sortMissingFirst="true", then a sort on this field will cause documents
+         without the field to come before documents with the field,
+         regardless of the requested sort order.
+       - If sortMissingLast="false" and sortMissingFirst="false" (the default),
+         then default lucene sorting will be used which places docs without the
+         field first in an ascending sort and last in a descending sort.
+    -->    
+
+    <!--
+      Numeric field types that index values using KD-trees. *Point fields are faster and more efficient than Trie* fields both, at
+      search time and at index time, but some features are still not supported.
+      Point fields don't support FieldCache, so they must have docValues="true" if needed for sorting, faceting, functions, etc.
+    -->
+    <fieldType name="pint" class="solr.IntPointField" docValues="true"/>
+    <fieldType name="pfloat" class="solr.FloatPointField" docValues="true"/>
+    <fieldType name="plong" class="solr.LongPointField" docValues="true"/>
+    <fieldType name="pdouble" class="solr.DoublePointField" docValues="true"/>
+    
+    <fieldType name="pints" class="solr.IntPointField" docValues="true" multiValued="true"/>
+    <fieldType name="pfloats" class="solr.FloatPointField" docValues="true" multiValued="true"/>
+    <fieldType name="plongs" class="solr.LongPointField" docValues="true" multiValued="true"/>
+    <fieldType name="pdoubles" class="solr.DoublePointField" docValues="true" multiValued="true"/>
+
+    <!--
+      Default numeric field types. For faster range queries, consider *PointFields (pint/pfloat/plong/pdouble), or the 
+      tint/tfloat/tlong/tdouble types.
+    -->
+    <fieldType name="int" class="solr.TrieIntField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
+    <fieldType name="float" class="solr.TrieFloatField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
+    <fieldType name="long" class="solr.TrieLongField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
+    <fieldType name="double" class="solr.TrieDoubleField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
+
+    <fieldType name="ints" class="solr.TrieIntField" docValues="true" precisionStep="0" positionIncrementGap="0" multiValued="true"/>
+    <fieldType name="floats" class="solr.TrieFloatField" docValues="true" precisionStep="0" positionIncrementGap="0" multiValued="true"/>
+    <fieldType name="longs" class="solr.TrieLongField" docValues="true" precisionStep="0" positionIncrementGap="0" multiValued="true"/>
+    <fieldType name="doubles" class="solr.TrieDoubleField" docValues="true" precisionStep="0" positionIncrementGap="0" multiValued="true"/>
+
+    <!--
+     Numeric field types that index each value at various levels of precision
+     to accelerate range queries when the number of values between the range
+     endpoints is large. See the javadoc for NumericRangeQuery for internal
+     implementation details.
+
+     Smaller precisionStep values (specified in bits) will lead to more tokens
+     indexed per value, slightly larger index size, and faster range queries.
+     A precisionStep of 0 disables indexing at different precision levels.
+     
+     Consider using pint/pfloat/plong/pdouble instead of Trie* fields if possible
+    -->
+    <fieldType name="tint" class="solr.TrieIntField" docValues="true" precisionStep="8" positionIncrementGap="0"/>
+    <fieldType name="tfloat" class="solr.TrieFloatField" docValues="true" precisionStep="8" positionIncrementGap="0"/>
+    <fieldType name="tlong" class="solr.TrieLongField" docValues="true" precisionStep="8" positionIncrementGap="0"/>
+    <fieldType name="tdouble" class="solr.TrieDoubleField" docValues="true" precisionStep="8" positionIncrementGap="0"/>
+    
+    <fieldType name="tints" class="solr.TrieIntField" docValues="true" precisionStep="8" positionIncrementGap="0" multiValued="true"/>
+    <fieldType name="tfloats" class="solr.TrieFloatField" docValues="true" precisionStep="8" positionIncrementGap="0" multiValued="true"/>
+    <fieldType name="tlongs" class="solr.TrieLongField" docValues="true" precisionStep="8" positionIncrementGap="0" multiValued="true"/>
+    <fieldType name="tdoubles" class="solr.TrieDoubleField" docValues="true" precisionStep="8" positionIncrementGap="0" multiValued="true"/>
+
+    <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
+         is a more restricted form of the canonical representation of dateTime
+         http://www.w3.org/TR/xmlschema-2/#dateTime    
+         The trailing "Z" designates UTC time and is mandatory.
+         Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
+         All other components are mandatory.
+
+         Expressions can also be used to denote calculations that should be
+         performed relative to "NOW" to determine the value, ie...
+
+               NOW/HOUR
+                  ... Round to the start of the current hour
+               NOW-1DAY
+                  ... Exactly 1 day prior to now
+               NOW/DAY+6MONTHS+3DAYS
+                  ... 6 months and 3 days in the future from the start of
+                      the current day
+                      
+         Consult the TrieDateField javadocs for more information.
+      -->
+    <!-- KD-tree versions of date fields -->
+    <fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
+    <fieldType name="pdates" class="solr.DatePointField" docValues="true" multiValued="true"/>
+    
+    <fieldType name="date" class="solr.TrieDateField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
+    <fieldType name="dates" class="solr.TrieDateField" docValues="true" precisionStep="0" positionIncrementGap="0" multiValued="true"/>
+    <fieldType name="tdate" class="solr.TrieDateField" docValues="true" precisionStep="6" positionIncrementGap="0"/>
+    <fieldType name="tdates" class="solr.TrieDateField" docValues="true" precisionStep="6" positionIncrementGap="0" multiValued="true"/>
+
+
+    <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
+    <fieldType name="binary" class="solr.BinaryField"/>
+
+    <!-- The "RandomSortField" is not used to store or search any
+         data.  You can declare fields of this type it in your schema
+         to generate pseudo-random orderings of your docs for sorting 
+         or function purposes.  The ordering is generated based on the field
+         name and the version of the index. As long as the index version
+         remains unchanged, and the same field name is reused,
+         the ordering of the docs will be consistent.  
+         If you want different psuedo-random orderings of documents,
+         for the same version of the index, use a dynamicField and
+         change the field name in the request.
+     -->
+    <fieldType name="random" class="solr.RandomSortField" indexed="true" />
+
+    <!-- solr.TextField allows the specification of custom text analyzers
+         specified as a tokenizer and a list of token filters. Different
+         analyzers may be specified for indexing and querying.
+
+         The optional positionIncrementGap puts space between multiple fields of
+         this type on the same document, with the purpose of preventing false phrase
+         matching across fields.
+
+         For more info on customizing your analyzer chain, please see
+         http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
+     -->
+
+    <!-- One can also specify an existing Analyzer class that has a
+         default constructor via the class attribute on the analyzer element.
+         Example:
+    <fieldType name="text_greek" class="solr.TextField">
+      <analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
+    </fieldType>
+    -->
+
+    <!-- A text field that only splits on whitespace for exact matching of words -->
+    <dynamicField name="*_ws" type="text_ws"  indexed="true"  stored="true"/>
+    <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
+      <analyzer>
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+      </analyzer>
+    </fieldType>
+
+    <!-- A general text field that has reasonable, generic
+         cross-language defaults: it tokenizes with StandardTokenizer,
+	       removes stop words from case-insensitive "stopwords.txt"
+	       (empty by default), and down cases.  At query time only, it
+	       also applies synonyms.
+	  -->
+    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
+      <analyzer type="index">
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
+        <!-- in this example, we will only use synonyms at query time
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
+        -->
+        <filter class="solr.LowerCaseFilterFactory"/>
+      </analyzer>
+      <analyzer type="query">
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+      </analyzer>
+    </fieldType>
+
+    <!-- A text field with defaults appropriate for English: it
+         tokenizes with StandardTokenizer, removes English stop words
+         (lang/stopwords_en.txt), down cases, protects words from protwords.txt, and
+         finally applies Porter's stemming.  The query time analyzer
+         also applies synonyms from synonyms.txt. -->
+    <dynamicField name="*_txt_en" type="text_en"  indexed="true"  stored="true"/>
+    <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
+      <analyzer type="index">
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <!-- in this example, we will only use synonyms at query time
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
+        -->
+        <!-- Case insensitive stop word removal.
+        -->
+        <filter class="solr.StopFilterFactory"
+                ignoreCase="true"
+                words="lang/stopwords_en.txt"
+            />
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.EnglishPossessiveFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+	      -->
+        <filter class="solr.PorterStemFilterFactory"/>
+      </analyzer>
+      <analyzer type="query">
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.StopFilterFactory"
+                ignoreCase="true"
+                words="lang/stopwords_en.txt"
+        />
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.EnglishPossessiveFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+	      -->
+        <filter class="solr.PorterStemFilterFactory"/>
+      </analyzer>
+    </fieldType>
+
+    <!-- A text field with defaults appropriate for English, plus
+         aggressive word-splitting and autophrase features enabled.
+         This field is just like text_en, except it adds
+         WordDelimiterGraphFilter to enable splitting and matching of
+         words on case-change, alpha numeric boundaries, and
+         non-alphanumeric chars.  This means certain compound word
+         cases will work, for example query "wi fi" will match
+         document "WiFi" or "wi-fi".
+    -->
+    <dynamicField name="*_txt_en_split" type="text_en_splitting"  indexed="true"  stored="true"/>
+    <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
+      <analyzer type="index">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <!-- in this example, we will only use synonyms at query time
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        -->
+        <!-- Case insensitive stop word removal.
+        -->
+        <filter class="solr.StopFilterFactory"
+                ignoreCase="true"
+                words="lang/stopwords_en.txt"
+        />
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.PorterStemFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
+      </analyzer>
+      <analyzer type="query">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.StopFilterFactory"
+                ignoreCase="true"
+                words="lang/stopwords_en.txt"
+        />
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.PorterStemFilterFactory"/>
+      </analyzer>
+    </fieldType>
+
+    <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
+         but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
+    <dynamicField name="*_txt_en_split_tight" type="text_en_splitting_tight"  indexed="true"  stored="true"/>
+    <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
+      <analyzer type="index">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
+      </analyzer>
+      <analyzer type="query">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      </analyzer>
+    </fieldType>
+
+    <!-- Just like text_general except it reverses the characters of
+	       each token, to enable more efficient leading wildcard queries.
+    -->
+    <dynamicField name="*_txt_rev" type="text_general_rev"  indexed="true"  stored="true"/>
+    <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
+      <analyzer type="index">
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
+                maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
+      </analyzer>
+      <analyzer type="query">
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
+        <filter class="solr.LowerCaseFilterFactory"/>
+      </analyzer>
+    </fieldType>
+
+    <dynamicField name="*_phon_en" type="phonetic_en"  indexed="true"  stored="true"/>
+    <fieldType name="phonetic_en" stored="false" indexed="true" class="solr.TextField" >
+      <analyzer>
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
+      </analyzer>
+    </fieldType>
+
+    <!-- lowercases the entire field value, keeping it as a single token.  -->
+    <dynamicField name="*_s_lower" type="lowercase"  indexed="true"  stored="true"/>
+    <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
+      <analyzer>
+        <tokenizer class="solr.KeywordTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory" />
+      </analyzer>
+    </fieldType>
+
+    <!-- 
+      Example of using PathHierarchyTokenizerFactory at index time, so
+      queries for paths match documents at that path, or in descendent paths
+    -->
+    <dynamicField name="*_descendent_path" type="descendent_path"  indexed="true"  stored="true"/>
+    <fieldType name="descendent_path" class="solr.TextField">
+      <analyzer type="index">
+        <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
+      </analyzer>
+      <analyzer type="query">
+        <tokenizer class="solr.KeywordTokenizerFactory" />
+      </analyzer>
+    </fieldType>
+
+    <!--
+      Example of using PathHierarchyTokenizerFactory at query time, so
+      queries for paths match documents at that path, or in ancestor paths
+    -->
+    <dynamicField name="*_ancestor_path" type="ancestor_path"  indexed="true"  stored="true"/>
+    <fieldType name="ancestor_path" class="solr.TextField">
+      <analyzer type="index">
+        <tokenizer class="solr.KeywordTokenizerFactory" />
+      </analyzer>
+      <analyzer type="query">
+        <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
+      </analyzer>
+    </fieldType>
+
+    <!-- since fields of this type are by default not stored or indexed,
+         any data added to them will be ignored outright.  --> 
+    <fieldType name="ignored" stored="false" indexed="false" docValues="false" multiValued="true" class="solr.StrField" />
+
+    <!-- This point type indexes the coordinates as separate fields (subFields)
+      If subFieldType is defined, it references a type, and a dynamic field
+      definition is created matching *___<typename>.  Alternately, if 
+      subFieldSuffix is defined, that is used to create the subFields.
+      Example: if subFieldType="double", then the coordinates would be
+        indexed in fields myloc_0___double,myloc_1___double.
+      Example: if subFieldSuffix="_d" then the coordinates would be indexed
+        in fields myloc_0_d,myloc_1_d
+      The subFields are an implementation detail of the fieldType, and end
+      users normally should not need to know about them.
+     -->
+    <dynamicField name="*_point" type="point"  indexed="true"  stored="true"/>
+    <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
+
+    <!-- A specialized field for geospatial search filters and distance sorting. -->
+    <fieldType name="location" class="solr.LatLonPointSpatialField" docValues="true"/>
+
+    <!-- An alternative geospatial field type new to Solr 4.  It supports multiValued and polygon shapes.
+      For more information about this and other Spatial fields new to Solr 4, see:
+      http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
+    -->
+    <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
+               geo="true" distErrPct="0.025" maxDistErr="0.001" distanceUnits="kilometers" />
+
+    <!-- Payloaded field types -->
+    <fieldType name="delimited_payloads_float" stored="false" indexed="true" class="solr.TextField">
+      <analyzer>
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
+      </analyzer>
+    </fieldType>
+    <fieldType name="delimited_payloads_int" stored="false" indexed="true" class="solr.TextField">
+      <analyzer>
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="integer"/>
+      </analyzer>
+    </fieldType>
+    <fieldType name="delimited_payloads_string" stored="false" indexed="true" class="solr.TextField">
+      <analyzer>
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="identity"/>
+      </analyzer>
+    </fieldType>
+
+   <!-- Money/currency field type. See http://wiki.apache.org/solr/MoneyFieldType
+        Parameters:
+          amountLongSuffix: Required. Refers to a dynamic field for the raw amount sub-field. 
+                              The dynamic field must have a field type that extends LongValueFieldType.
+                              Note: If you expect to use Atomic Updates, this dynamic field may not be stored.
+          codeStrSuffix:    Required. Refers to a dynamic field for the currency code sub-field.
+                              The dynamic field must have a field type that extends StrField.
+                              Note: If you expect to use Atomic Updates, this dynamic field may not be stored.
+          defaultCurrency:  Specifies the default currency if none specified. Defaults to "USD"
+          providerClass:    Lets you plug in other exchange provider backend:
+                            solr.FileExchangeRateProvider is the default and takes one parameter:
+                              currencyConfig: name of an xml file holding exchange rates
+                            solr.OpenExchangeRatesOrgProvider uses rates from openexchangerates.org:
+                              ratesFileLocation: URL or path to rates JSON file (default latest.json on the web)
+                              refreshInterval: Number of minutes between each rates fetch (default: 1440, min: 60)
+   -->
+    <fieldType name="currency" class="solr.CurrencyFieldType" amountLongSuffix="_l_ns" codeStrSuffix="_s_ns"
+               defaultCurrency="USD" currencyConfig="currency.xml" />
+
+
+    <!-- some examples for different languages (generally ordered by ISO code) -->
+
+    <!-- Arabic -->
+    <dynamicField name="*_txt_ar" type="text_ar"  indexed="true"  stored="true"/>
+    <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <!-- for any non-arabic -->
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt" />
+        <!-- normalizes ﻯ to ﻱ, etc -->
+        <filter class="solr.ArabicNormalizationFilterFactory"/>
+        <filter class="solr.ArabicStemFilterFactory"/>
+      </analyzer>
+    </fieldType>
+
+    <!-- Bulgarian -->
+    <dynamicField name="*_txt_bg" type="text_bg"  indexed="true"  stored="true"/>
+    <fieldType name="text_bg" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/> 
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_bg.txt" /> 
+        <filter class="solr.BulgarianStemFilterFactory"/>       
+      </analyzer>
+    </fieldType>
+    
+    <!-- Catalan -->
+    <dynamicField name="*_txt_ca" type="text_ca"  indexed="true"  stored="true"/>
+    <fieldType name="text_ca" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <!-- removes l', etc -->
+        <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ca.txt"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ca.txt" />
+        <filter class="solr.SnowballPorterFilterFactory" language="Catalan"/>       
+      </analyzer>
+    </fieldType>
+    
+    <!-- CJK bigram (see text_ja for a Japanese configuration using morphological analysis) -->
+    <dynamicField name="*_txt_cjk" type="text_cjk"  indexed="true"  stored="true"/>
+    <fieldType name="text_cjk" class="solr.TextField" positionIncrementGap="100">
+      <analyzer>
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <!-- normalize width before bigram, as e.g. half-width dakuten combine  -->
+        <filter class="solr.CJKWidthFilterFactory"/>
+        <!-- for any non-CJK -->
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.CJKBigramFilterFactory"/>
+      </analyzer>
+    </fieldType>
+
+    <!-- Czech -->
+    <dynamicField name="*_txt_cz" type="text_cz"  indexed="true"  stored="true"/>
+    <fieldType name="text_cz" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_cz.txt" />
+        <filter class="solr.CzechStemFilterFactory"/>       
+      </analyzer>
+    </fieldType>
+    
+    <!-- Danish -->
+    <dynamicField name="*_txt_da" type="text_da"  indexed="true"  stored="true"/>
+    <fieldType name="text_da" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_da.txt" format="snowball" />
+        <filter class="solr.SnowballPorterFilterFactory" language="Danish"/>       
+      </analyzer>
+    </fieldType>
+    
+    <!-- German -->
+    <dynamicField name="*_txt_de" type="text_de"  indexed="true"  stored="true"/>
+    <fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_de.txt" format="snowball" />
+        <filter class="solr.GermanNormalizationFilterFactory"/>
+        <filter class="solr.GermanLightStemFilterFactory"/>
+        <!-- less aggressive: <filter class="solr.GermanMinimalStemFilterFactory"/> -->
+        <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="German2"/> -->
+      </analyzer>
+    </fieldType>
+    
+    <!-- Greek -->
+    <dynamicField name="*_txt_el" type="text_el"  indexed="true"  stored="true"/>
+    <fieldType name="text_el" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <!-- greek specific lowercase for sigma -->
+        <filter class="solr.GreekLowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_el.txt" />
+        <filter class="solr.GreekStemFilterFactory"/>
+      </analyzer>
+    </fieldType>
+    
+    <!-- Spanish -->
+    <dynamicField name="*_txt_es" type="text_es"  indexed="true"  stored="true"/>
+    <fieldType name="text_es" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_es.txt" format="snowball" />
+        <filter class="solr.SpanishLightStemFilterFactory"/>
+        <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Spanish"/> -->
+      </analyzer>
+    </fieldType>
+    
+    <!-- Basque -->
+    <dynamicField name="*_txt_eu" type="text_eu"  indexed="true"  stored="true"/>
+    <fieldType name="text_eu" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_eu.txt" />
+        <filter class="solr.SnowballPorterFilterFactory" language="Basque"/>
+      </analyzer>
+    </fieldType>
+    
+    <!-- Persian -->
+    <dynamicField name="*_txt_fa" type="text_fa"  indexed="true"  stored="true"/>
+    <fieldType name="text_fa" class="solr.TextField" positionIncrementGap="100">
+      <analyzer>
+        <!-- for ZWNJ -->
+        <charFilter class="solr.PersianCharFilterFactory"/>
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.ArabicNormalizationFilterFactory"/>
+        <filter class="solr.PersianNormalizationFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fa.txt" />
+      </analyzer>
+    </fieldType>
+    
+    <!-- Finnish -->
+    <dynamicField name="*_txt_fi" type="text_fi"  indexed="true"  stored="true"/>
+    <fieldType name="text_fi" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fi.txt" format="snowball" />
+        <filter class="solr.SnowballPorterFilterFactory" language="Finnish"/>
+        <!-- less aggressive: <filter class="solr.FinnishLightStemFilterFactory"/> -->
+      </analyzer>
+    </fieldType>
+    
+    <!-- French -->
+    <dynamicField name="*_txt_fr" type="text_fr"  indexed="true"  stored="true"/>
+    <fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <!-- removes l', etc -->
+        <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_fr.txt"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fr.txt" format="snowball" />
+        <filter class="solr.FrenchLightStemFilterFactory"/>
+        <!-- less aggressive: <filter class="solr.FrenchMinimalStemFilterFactory"/> -->
+        <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="French"/> -->
+      </analyzer>
+    </fieldType>
+    
+    <!-- Irish -->
+    <dynamicField name="*_txt_ga" type="text_ga"  indexed="true"  stored="true"/>
+    <fieldType name="text_ga" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <!-- removes d', etc -->
+        <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ga.txt"/>
+        <!-- removes n-, etc. position increments is intentionally false! -->
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/hyphenations_ga.txt"/>
+        <filter class="solr.IrishLowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ga.txt"/>
+        <filter class="solr.SnowballPorterFilterFactory" language="Irish"/>
+      </analyzer>
+    </fieldType>
+    
+    <!-- Galician -->
+    <dynamicField name="*_txt_gl" type="text_gl"  indexed="true"  stored="true"/>
+    <fieldType name="text_gl" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_gl.txt" />
+        <filter class="solr.GalicianStemFilterFactory"/>
+        <!-- less aggressive: <filter class="solr.GalicianMinimalStemFilterFactory"/> -->
+      </analyzer>
+    </fieldType>
+    
+    <!-- Hindi -->
+    <dynamicField name="*_txt_hi" type="text_hi"  indexed="true"  stored="true"/>
+    <fieldType name="text_hi" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <!-- normalizes unicode representation -->
+        <filter class="solr.IndicNormalizationFilterFactory"/>
+        <!-- normalizes variation in spelling -->
+        <filter class="solr.HindiNormalizationFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hi.txt" />
+        <filter class="solr.HindiStemFilterFactory"/>
+      </analyzer>
+    </fieldType>
+    
+    <!-- Hungarian -->
+    <dynamicField name="*_txt_hu" type="text_hu"  indexed="true"  stored="true"/>
+    <fieldType name="text_hu" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hu.txt" format="snowball" />
+        <filter class="solr.SnowballPorterFilterFactory" language="Hungarian"/>
+        <!-- less aggressive: <filter class="solr.HungarianLightStemFilterFactory"/> -->   
+      </analyzer>
+    </fieldType>
+    
+    <!-- Armenian -->
+    <dynamicField name="*_txt_hy" type="text_hy"  indexed="true"  stored="true"/>
+    <fieldType name="text_hy" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hy.txt" />
+        <filter class="solr.SnowballPorterFilterFactory" language="Armenian"/>
+      </analyzer>
+    </fieldType>
+    
+    <!-- Indonesian -->
+    <dynamicField name="*_txt_id" type="text_id"  indexed="true"  stored="true"/>
+    <fieldType name="text_id" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_id.txt" />
+        <!-- for a less aggressive approach (only inflectional suffixes), set stemDerivational to false -->
+        <filter class="solr.IndonesianStemFilterFactory" stemDerivational="true"/>
+      </analyzer>
+    </fieldType>
+    
+    <!-- Italian -->
+  <dynamicField name="*_txt_it" type="text_it"  indexed="true"  stored="true"/>
+  <fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <!-- removes l', etc -->
+        <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_it.txt"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_it.txt" format="snowball" />
+        <filter class="solr.ItalianLightStemFilterFactory"/>
+        <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Italian"/> -->
+      </analyzer>
+    </fieldType>
+    
+    <!-- Japanese using morphological analysis (see text_cjk for a configuration using bigramming)
+
+         NOTE: If you want to optimize search for precision, use default operator AND in your request
+         handler config (q.op) Use OR if you would like to optimize for recall (default).
+    -->
+    <dynamicField name="*_txt_ja" type="text_ja"  indexed="true"  stored="true"/>
+    <fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false">
+      <analyzer>
+        <!-- Kuromoji Japanese morphological analyzer/tokenizer (JapaneseTokenizer)
+
+           Kuromoji has a search mode (default) that does segmentation useful for search.  A heuristic
+           is used to segment compounds into its parts and the compound itself is kept as synonym.
+
+           Valid values for attribute mode are:
+              normal: regular segmentation
+              search: segmentation useful for search with synonyms compounds (default)
+            extended: same as search mode, but unigrams unknown words (experimental)
+
+           For some applications it might be good to use search mode for indexing and normal mode for
+           queries to reduce recall and prevent parts of compounds from being matched and highlighted.
+           Use <analyzer type="index"> and <analyzer type="query"> for this and mode normal in query.
+
+           Kuromoji also has a convenient user dictionary feature that allows overriding the statistical
+           model with your own entries for segmentation, part-of-speech tags and readings without a need
+           to specify weights.  Notice that user dictionaries have not been subject to extensive testing.
+
+           User dictionary attributes are:
+                     userDictionary: user dictionary filename
+             userDictionaryEncoding: user dictionary encoding (default is UTF-8)
+
+           See lang/userdict_ja.txt for a sample user dictionary file.
+
+           Punctuation characters are discarded by default.  Use discardPunctuation="false" to keep them.
+
+           See http://wiki.apache.org/solr/JapaneseLanguageSupport for more on Japanese language support.
+        -->
+        <tokenizer class="solr.JapaneseTokenizerFactory" mode="search"/>
+        <!--<tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt"/>-->
+        <!-- Reduces inflected verbs and adjectives to their base/dictionary forms (辞書形) -->
+        <filter class="solr.JapaneseBaseFormFilterFactory"/>
+        <!-- Removes tokens with certain part-of-speech tags -->
+        <filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="lang/stoptags_ja.txt" />
+        <!-- Normalizes full-width romaji to half-width and half-width kana to full-width (Unicode NFKC subset) -->
+        <filter class="solr.CJKWidthFilterFactory"/>
+        <!-- Removes common tokens typically not useful for search, but have a negative effect on ranking -->
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ja.txt" />
+        <!-- Normalizes common katakana spelling variations by removing any last long sound character (U+30FC) -->
+        <filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>
+        <!-- Lower-cases romaji characters -->
+        <filter class="solr.LowerCaseFilterFactory"/>
+      </analyzer>
+    </fieldType>
+    
+    <!-- Latvian -->
+    <dynamicField name="*_txt_lv" type="text_lv"  indexed="true"  stored="true"/>
+    <fieldType name="text_lv" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_lv.txt" />
+        <filter class="solr.LatvianStemFilterFactory"/>
+      </analyzer>
+    </fieldType>
+    
+    <!-- Dutch -->
+    <dynamicField name="*_txt_nl" type="text_nl"  indexed="true"  stored="true"/>
+    <fieldType name="text_nl" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_nl.txt" format="snowball" />
+        <filter class="solr.StemmerOverrideFilterFactory" dictionary="lang/stemdict_nl.txt" ignoreCase="false"/>
+        <filter class="solr.SnowballPorterFilterFactory" language="Dutch"/>
+      </analyzer>
+    </fieldType>
+    
+    <!-- Norwegian -->
+    <dynamicField name="*_txt_no" type="text_no"  indexed="true"  stored="true"/>
+    <fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball" />
+        <filter class="solr.SnowballPorterFilterFactory" language="Norwegian"/>
+        <!-- less aggressive: <filter class="solr.NorwegianLightStemFilterFactory"/> -->
+        <!-- singular/plural: <filter class="solr.NorwegianMinimalStemFilterFactory"/> -->
+      </analyzer>
+    </fieldType>
+    
+    <!-- Portuguese -->
+  <dynamicField name="*_txt_pt" type="text_pt"  indexed="true"  stored="true"/>
+  <fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" format="snowball" />
+        <filter class="solr.PortugueseLightStemFilterFactory"/>
+        <!-- less aggressive: <filter class="solr.PortugueseMinimalStemFilterFactory"/> -->
+        <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Portuguese"/> -->
+        <!-- most aggressive: <filter class="solr.PortugueseStemFilterFactory"/> -->
+      </analyzer>
+    </fieldType>
+    
+    <!-- Romanian -->
+    <dynamicField name="*_txt_ro" type="text_ro"  indexed="true"  stored="true"/>
+    <fieldType name="text_ro" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ro.txt" />
+        <filter class="solr.SnowballPorterFilterFactory" language="Romanian"/>
+      </analyzer>
+    </fieldType>
+    
+    <!-- Russian -->
+    <dynamicField name="*_txt_ru" type="text_ru"  indexed="true"  stored="true"/>
+    <fieldType name="text_ru" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ru.txt" format="snowball" />
+        <filter class="solr.SnowballPorterFilterFactory" language="Russian"/>
+        <!-- less aggressive: <filter class="solr.RussianLightStemFilterFactory"/> -->
+      </analyzer>
+    </fieldType>
+    
+    <!-- Swedish -->
+    <dynamicField name="*_txt_sv" type="text_sv"  indexed="true"  stored="true"/>
+    <fieldType name="text_sv" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_sv.txt" format="snowball" />
+        <filter class="solr.SnowballPorterFilterFactory" language="Swedish"/>
+        <!-- less aggressive: <filter class="solr.SwedishLightStemFilterFactory"/> -->
+      </analyzer>
+    </fieldType>
+    
+    <!-- Thai -->
+    <dynamicField name="*_txt_th" type="text_th"  indexed="true"  stored="true"/>
+    <fieldType name="text_th" class="solr.TextField" positionIncrementGap="100">
+      <analyzer>
+        <tokenizer class="solr.ThaiTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_th.txt" />
+      </analyzer>
+    </fieldType>
+    
+    <!-- Turkish -->
+    <dynamicField name="*_txt_tr" type="text_tr"  indexed="true"  stored="true"/>
+    <fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
+      <analyzer> 
+        <tokenizer class="solr.StandardTokenizerFactory"/>
+        <filter class="solr.TurkishLowerCaseFilterFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_tr.txt" />
+        <filter class="solr.SnowballPorterFilterFactory" language="Turkish"/>
+      </analyzer>
+    </fieldType>
+
+    <!-- Similarity is the scoring routine for each document vs. a query.
+       A custom Similarity or SimilarityFactory may be specified here, but 
+       the default is fine for most applications.  
+       For more info: http://wiki.apache.org/solr/SchemaXml#Similarity
+    -->
+    <!--
+     <similarity class="com.example.solr.CustomSimilarityFactory">
+       <str name="paramkey">param value</str>
+     </similarity>
+    -->
+
+</schema>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/params.json
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/params.json b/solr/core/src/test-files/solr/configsets/_default/conf/params.json
new file mode 100644
index 0000000..06114ef
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/params.json
@@ -0,0 +1,20 @@
+{"params":{
+  "query":{
+    "defType":"edismax",
+    "q.alt":"*:*",
+    "rows":"10",
+    "fl":"*,score",
+    "":{"v":0}
+  },
+  "facets":{
+    "facet":"on",
+    "facet.mincount": "1",
+    "":{"v":0}
+  },
+ "velocity":{
+   "wt": "velocity",
+   "v.template":"browse",
+   "v.layout": "layout",
+   "":{"v":0}
+ }
+}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/protwords.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/protwords.txt b/solr/core/src/test-files/solr/configsets/_default/conf/protwords.txt
new file mode 100644
index 0000000..1dfc0ab
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/protwords.txt
@@ -0,0 +1,21 @@
+# 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.
+
+#-----------------------------------------------------------------------
+# Use a protected word file to protect against the stemmer reducing two
+# unrelated words to the same base word.
+
+# Some non-words that normally won't be encountered,
+# just to test that they won't be stemmed.
+dontstems
+zwhacky
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/schema.xml b/solr/core/src/test-files/solr/configsets/_default/conf/schema.xml
deleted file mode 100644
index e94229e..0000000
--- a/solr/core/src/test-files/solr/configsets/_default/conf/schema.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- 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="default-config" version="1.6">
-    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
-    <field name="_version_" type="long" indexed="false" stored="false"/>
-    <field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
-    <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
-
-    <fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true" />
-    <fieldType name="long" class="solr.TrieLongField" docValues="true" precisionStep="0" positionIncrementGap="0"/>
-    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
-      <analyzer type="index">
-        <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.LowerCaseFilterFactory"/>
-      </analyzer>
-      <analyzer type="query">
-        <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.LowerCaseFilterFactory"/>
-      </analyzer>
-    </fieldType>
-</schema>


[45/53] [abbrv] lucene-solr:feature/autoscaling: Remove old unsupported codecs.

Posted by sh...@apache.org.
Remove old unsupported codecs.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/9ca3dd26
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/9ca3dd26
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/9ca3dd26

Branch: refs/heads/feature/autoscaling
Commit: 9ca3dd26e423b396047326cd32b57d3cc6279f01
Parents: 869a48c
Author: Adrien Grand <jp...@gmail.com>
Authored: Mon Jul 3 14:16:18 2017 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Mon Jul 3 14:16:18 2017 +0200

----------------------------------------------------------------------
 .../lucene/codecs/lucene60/Lucene60Codec.java   | 177 -----------------
 .../apache/lucene/codecs/lucene60/package.html  |  25 ---
 .../lucene/codecs/lucene62/Lucene62Codec.java   | 176 -----------------
 .../apache/lucene/codecs/lucene62/package.html  |  25 ---
 .../java/org/apache/lucene/index/package.html   |  27 ---
 .../services/org.apache.lucene.codecs.Codec     |   2 -
 .../org.apache.lucene.codecs.DocValuesFormat    |   1 -
 .../lucene/codecs/lucene60/Lucene60RWCodec.java |  38 ----
 .../lucene/codecs/lucene62/Lucene62RWCodec.java |  44 -----
 .../lucene62/Lucene62RWSegmentInfoFormat.java   | 193 -------------------
 .../lucene62/TestLucene62SegmentInfoFormat.java |  48 -----
 .../index/TestBackwardsCompatibility.java       |  12 +-
 .../lucene/index/TestIndexWriterOnOldIndex.java |   7 +-
 .../lucene/index/TestManyPointsInOldIndex.java  |   1 +
 .../org/apache/lucene/index/dvupdates.6.0.0.zip | Bin 3420 -> 0 bytes
 .../org/apache/lucene/index/empty.6.0.0.zip     | Bin 225 -> 0 bytes
 .../org/apache/lucene/index/manypointsindex.zip | Bin 3739 -> 0 bytes
 .../org/apache/lucene/index/maxposindex.zip     | Bin 1702 -> 0 bytes
 .../org/apache/lucene/index/moreterms.6.0.0.zip | Bin 157215 -> 0 bytes
 .../org/apache/lucene/index/sorted.6.2.0.zip    | Bin 157007 -> 0 bytes
 .../org/apache/lucene/index/sorted.6.2.1.zip    | Bin 100974 -> 0 bytes
 .../org/apache/lucene/index/sorted.6.3.0.zip    | Bin 71090 -> 0 bytes
 .../index/unsupported.630.brokenoffsets.zip     | Bin 3203 -> 0 bytes
 .../index/unsupported.single-empty-doc.630.zip  | Bin 1363 -> 0 bytes
 24 files changed, 13 insertions(+), 763 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/Lucene60Codec.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/Lucene60Codec.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/Lucene60Codec.java
deleted file mode 100644
index f9b8671..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/Lucene60Codec.java
+++ /dev/null
@@ -1,177 +0,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.
- */
-package org.apache.lucene.codecs.lucene60;
-
-import java.util.Objects;
-
-import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.codecs.CompoundFormat;
-import org.apache.lucene.codecs.DocValuesFormat;
-import org.apache.lucene.codecs.FieldInfosFormat;
-import org.apache.lucene.codecs.FilterCodec;
-import org.apache.lucene.codecs.LiveDocsFormat;
-import org.apache.lucene.codecs.NormsFormat;
-import org.apache.lucene.codecs.PointsFormat;
-import org.apache.lucene.codecs.PostingsFormat;
-import org.apache.lucene.codecs.SegmentInfoFormat;
-import org.apache.lucene.codecs.StoredFieldsFormat;
-import org.apache.lucene.codecs.TermVectorsFormat;
-import org.apache.lucene.codecs.lucene50.Lucene50CompoundFormat;
-import org.apache.lucene.codecs.lucene50.Lucene50LiveDocsFormat;
-import org.apache.lucene.codecs.lucene50.Lucene50SegmentInfoFormat;
-import org.apache.lucene.codecs.lucene50.Lucene50StoredFieldsFormat.Mode;
-import org.apache.lucene.codecs.lucene50.Lucene50StoredFieldsFormat;
-import org.apache.lucene.codecs.lucene50.Lucene50TermVectorsFormat;
-import org.apache.lucene.codecs.lucene53.Lucene53NormsFormat;
-import org.apache.lucene.codecs.perfield.PerFieldDocValuesFormat;
-import org.apache.lucene.codecs.perfield.PerFieldPostingsFormat;
-
-/**
- * Implements the Lucene 6.0 index format, with configurable per-field postings
- * and docvalues formats.
- * <p>
- * If you want to reuse functionality of this codec in another codec, extend
- * {@link FilterCodec}.
- *
- * @see org.apache.lucene.codecs.lucene60 package documentation for file format details.
- *
- * @lucene.experimental
- * @deprecated Only for 6.0 back compat
- */
-@Deprecated
-public class Lucene60Codec extends Codec {
-  private final TermVectorsFormat vectorsFormat = new Lucene50TermVectorsFormat();
-  private final FieldInfosFormat fieldInfosFormat = new Lucene60FieldInfosFormat();
-  private final SegmentInfoFormat segmentInfosFormat = new Lucene50SegmentInfoFormat();
-  private final LiveDocsFormat liveDocsFormat = new Lucene50LiveDocsFormat();
-  private final CompoundFormat compoundFormat = new Lucene50CompoundFormat();
-  
-  private final PostingsFormat postingsFormat = new PerFieldPostingsFormat() {
-    @Override
-    public PostingsFormat getPostingsFormatForField(String field) {
-      return Lucene60Codec.this.getPostingsFormatForField(field);
-    }
-  };
-  
-  private final DocValuesFormat docValuesFormat = new PerFieldDocValuesFormat() {
-    @Override
-    public DocValuesFormat getDocValuesFormatForField(String field) {
-      return Lucene60Codec.this.getDocValuesFormatForField(field);
-    }
-  };
-  
-  private final StoredFieldsFormat storedFieldsFormat;
-
-  /** 
-   * Instantiates a new codec.
-   */
-  public Lucene60Codec() {
-    this(Mode.BEST_SPEED);
-  }
-  
-  /** 
-   * Instantiates a new codec, specifying the stored fields compression
-   * mode to use.
-   * @param mode stored fields compression mode to use for newly 
-   *             flushed/merged segments.
-   */
-  public Lucene60Codec(Mode mode) {
-    super("Lucene60");
-    this.storedFieldsFormat = new Lucene50StoredFieldsFormat(Objects.requireNonNull(mode));
-  }
-  
-  @Override
-  public final StoredFieldsFormat storedFieldsFormat() {
-    return storedFieldsFormat;
-  }
-  
-  @Override
-  public final TermVectorsFormat termVectorsFormat() {
-    return vectorsFormat;
-  }
-
-  @Override
-  public final PostingsFormat postingsFormat() {
-    return postingsFormat;
-  }
-  
-  @Override
-  public final FieldInfosFormat fieldInfosFormat() {
-    return fieldInfosFormat;
-  }
-  
-  @Override
-  public SegmentInfoFormat segmentInfoFormat() {
-    return segmentInfosFormat;
-  }
-  
-  @Override
-  public final LiveDocsFormat liveDocsFormat() {
-    return liveDocsFormat;
-  }
-
-  @Override
-  public final CompoundFormat compoundFormat() {
-    return compoundFormat;
-  }
-
-  @Override
-  public final PointsFormat pointsFormat() {
-    return new Lucene60PointsFormat();
-  }
-
-  /** Returns the postings format that should be used for writing 
-   *  new segments of <code>field</code>.
-   *  
-   *  The default implementation always returns "Lucene50".
-   *  <p>
-   *  <b>WARNING:</b> if you subclass, you are responsible for index 
-   *  backwards compatibility: future version of Lucene are only 
-   *  guaranteed to be able to read the default implementation. 
-   */
-  public PostingsFormat getPostingsFormatForField(String field) {
-    return defaultFormat;
-  }
-  
-  /** Returns the docvalues format that should be used for writing 
-   *  new segments of <code>field</code>.
-   *  
-   *  The default implementation always returns "Lucene54".
-   *  <p>
-   *  <b>WARNING:</b> if you subclass, you are responsible for index 
-   *  backwards compatibility: future version of Lucene are only 
-   *  guaranteed to be able to read the default implementation. 
-   */
-  public DocValuesFormat getDocValuesFormatForField(String field) {
-    return defaultDVFormat;
-  }
-  
-  @Override
-  public final DocValuesFormat docValuesFormat() {
-    return docValuesFormat;
-  }
-
-  private final PostingsFormat defaultFormat = PostingsFormat.forName("Lucene50");
-  private final DocValuesFormat defaultDVFormat = DocValuesFormat.forName("Lucene54");
-
-  private final NormsFormat normsFormat = new Lucene53NormsFormat();
-
-  @Override
-  public NormsFormat normsFormat() {
-    return normsFormat;
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/package.html
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/package.html b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/package.html
deleted file mode 100644
index 6b4e234..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<!--
- 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.
--->
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
-<body>
-Lucene 6.0 file format.
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene62/Lucene62Codec.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene62/Lucene62Codec.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene62/Lucene62Codec.java
deleted file mode 100644
index 3dd7daa..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene62/Lucene62Codec.java
+++ /dev/null
@@ -1,176 +0,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.
- */
-package org.apache.lucene.codecs.lucene62;
-
-import java.util.Objects;
-
-import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.codecs.CompoundFormat;
-import org.apache.lucene.codecs.DocValuesFormat;
-import org.apache.lucene.codecs.FieldInfosFormat;
-import org.apache.lucene.codecs.FilterCodec;
-import org.apache.lucene.codecs.LiveDocsFormat;
-import org.apache.lucene.codecs.NormsFormat;
-import org.apache.lucene.codecs.PointsFormat;
-import org.apache.lucene.codecs.PostingsFormat;
-import org.apache.lucene.codecs.SegmentInfoFormat;
-import org.apache.lucene.codecs.StoredFieldsFormat;
-import org.apache.lucene.codecs.TermVectorsFormat;
-import org.apache.lucene.codecs.lucene50.Lucene50CompoundFormat;
-import org.apache.lucene.codecs.lucene50.Lucene50LiveDocsFormat;
-import org.apache.lucene.codecs.lucene50.Lucene50StoredFieldsFormat;
-import org.apache.lucene.codecs.lucene50.Lucene50TermVectorsFormat;
-import org.apache.lucene.codecs.lucene50.Lucene50StoredFieldsFormat.Mode;
-import org.apache.lucene.codecs.lucene53.Lucene53NormsFormat;
-import org.apache.lucene.codecs.lucene60.Lucene60FieldInfosFormat;
-import org.apache.lucene.codecs.lucene60.Lucene60PointsFormat;
-import org.apache.lucene.codecs.perfield.PerFieldDocValuesFormat;
-import org.apache.lucene.codecs.perfield.PerFieldPostingsFormat;
-
-/**
- * Implements the Lucene 6.2 index format, with configurable per-field postings
- * and docvalues formats.
- * <p>
- * If you want to reuse functionality of this codec in another codec, extend
- * {@link FilterCodec}.
- *
- * @see org.apache.lucene.codecs.lucene60 package documentation for file format details.
- *
- * @lucene.experimental
- */
-public class Lucene62Codec extends Codec {
-  private final TermVectorsFormat vectorsFormat = new Lucene50TermVectorsFormat();
-  private final FieldInfosFormat fieldInfosFormat = new Lucene60FieldInfosFormat();
-  private final SegmentInfoFormat segmentInfosFormat = new Lucene62SegmentInfoFormat();
-  private final LiveDocsFormat liveDocsFormat = new Lucene50LiveDocsFormat();
-  private final CompoundFormat compoundFormat = new Lucene50CompoundFormat();
-  
-  private final PostingsFormat postingsFormat = new PerFieldPostingsFormat() {
-    @Override
-    public PostingsFormat getPostingsFormatForField(String field) {
-      return Lucene62Codec.this.getPostingsFormatForField(field);
-    }
-  };
-  
-  private final DocValuesFormat docValuesFormat = new PerFieldDocValuesFormat() {
-    @Override
-    public DocValuesFormat getDocValuesFormatForField(String field) {
-      return Lucene62Codec.this.getDocValuesFormatForField(field);
-    }
-  };
-  
-  private final StoredFieldsFormat storedFieldsFormat;
-
-  /** 
-   * Instantiates a new codec.
-   */
-  public Lucene62Codec() {
-    this(Mode.BEST_SPEED);
-  }
-  
-  /** 
-   * Instantiates a new codec, specifying the stored fields compression
-   * mode to use.
-   * @param mode stored fields compression mode to use for newly 
-   *             flushed/merged segments.
-   */
-  public Lucene62Codec(Mode mode) {
-    super("Lucene62");
-    this.storedFieldsFormat = new Lucene50StoredFieldsFormat(Objects.requireNonNull(mode));
-  }
-  
-  @Override
-  public final StoredFieldsFormat storedFieldsFormat() {
-    return storedFieldsFormat;
-  }
-  
-  @Override
-  public final TermVectorsFormat termVectorsFormat() {
-    return vectorsFormat;
-  }
-
-  @Override
-  public final PostingsFormat postingsFormat() {
-    return postingsFormat;
-  }
-  
-  @Override
-  public final FieldInfosFormat fieldInfosFormat() {
-    return fieldInfosFormat;
-  }
-  
-  @Override
-  public SegmentInfoFormat segmentInfoFormat() {
-    return segmentInfosFormat;
-  }
-  
-  @Override
-  public final LiveDocsFormat liveDocsFormat() {
-    return liveDocsFormat;
-  }
-
-  @Override
-  public final CompoundFormat compoundFormat() {
-    return compoundFormat;
-  }
-
-  @Override
-  public final PointsFormat pointsFormat() {
-    return new Lucene60PointsFormat();
-  }
-
-  /** Returns the postings format that should be used for writing 
-   *  new segments of <code>field</code>.
-   *  
-   *  The default implementation always returns "Lucene50".
-   *  <p>
-   *  <b>WARNING:</b> if you subclass, you are responsible for index 
-   *  backwards compatibility: future version of Lucene are only 
-   *  guaranteed to be able to read the default implementation. 
-   */
-  public PostingsFormat getPostingsFormatForField(String field) {
-    return defaultFormat;
-  }
-  
-  /** Returns the docvalues format that should be used for writing 
-   *  new segments of <code>field</code>.
-   *  
-   *  The default implementation always returns "Lucene54".
-   *  <p>
-   *  <b>WARNING:</b> if you subclass, you are responsible for index 
-   *  backwards compatibility: future version of Lucene are only 
-   *  guaranteed to be able to read the default implementation. 
-   */
-  public DocValuesFormat getDocValuesFormatForField(String field) {
-    return defaultDVFormat;
-  }
-  
-  @Override
-  public final DocValuesFormat docValuesFormat() {
-    return docValuesFormat;
-  }
-
-  private final PostingsFormat defaultFormat = PostingsFormat.forName("Lucene50");
-  private final DocValuesFormat defaultDVFormat = DocValuesFormat.forName("Lucene54");
-
-  private final NormsFormat normsFormat = new Lucene53NormsFormat();
-
-  @Override
-  public NormsFormat normsFormat() {
-    return normsFormat;
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene62/package.html
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene62/package.html b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene62/package.html
deleted file mode 100644
index 74e66d9..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene62/package.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<!--
- 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.
--->
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
-<body>
-Lucene 6.2 file format.
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/java/org/apache/lucene/index/package.html
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/index/package.html b/lucene/backward-codecs/src/java/org/apache/lucene/index/package.html
deleted file mode 100644
index 42ff91a..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/index/package.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<!--
- 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.
--->
-<!-- not a package-info.java, because we already defined this package in core/ -->
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-  <title>Tools for handling backwards compatibility issues with indices.</title>
-</head>
-<body>
-Tools for handling backwards compatibility issues with indices.
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/resources/META-INF/services/org.apache.lucene.codecs.Codec
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/resources/META-INF/services/org.apache.lucene.codecs.Codec b/lucene/backward-codecs/src/resources/META-INF/services/org.apache.lucene.codecs.Codec
index 6954d7a..4a812de 100644
--- a/lucene/backward-codecs/src/resources/META-INF/services/org.apache.lucene.codecs.Codec
+++ b/lucene/backward-codecs/src/resources/META-INF/services/org.apache.lucene.codecs.Codec
@@ -13,5 +13,3 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-org.apache.lucene.codecs.lucene60.Lucene60Codec
-org.apache.lucene.codecs.lucene62.Lucene62Codec

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/resources/META-INF/services/org.apache.lucene.codecs.DocValuesFormat
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/resources/META-INF/services/org.apache.lucene.codecs.DocValuesFormat b/lucene/backward-codecs/src/resources/META-INF/services/org.apache.lucene.codecs.DocValuesFormat
index 26984ef..4a812de 100644
--- a/lucene/backward-codecs/src/resources/META-INF/services/org.apache.lucene.codecs.DocValuesFormat
+++ b/lucene/backward-codecs/src/resources/META-INF/services/org.apache.lucene.codecs.DocValuesFormat
@@ -13,4 +13,3 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-org.apache.lucene.codecs.lucene54.Lucene54DocValuesFormat

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene60/Lucene60RWCodec.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene60/Lucene60RWCodec.java b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene60/Lucene60RWCodec.java
deleted file mode 100644
index eecfe09..0000000
--- a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene60/Lucene60RWCodec.java
+++ /dev/null
@@ -1,38 +0,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.
- */
-package org.apache.lucene.codecs.lucene60;
-
-import org.apache.lucene.codecs.NormsFormat;
-import org.apache.lucene.codecs.SegmentInfoFormat;
-import org.apache.lucene.codecs.lucene50.Lucene50RWSegmentInfoFormat;
-import org.apache.lucene.codecs.lucene53.Lucene53RWNormsFormat;
-
-public class Lucene60RWCodec extends Lucene60Codec {
-
-  private final SegmentInfoFormat segmentInfoFormat = new Lucene50RWSegmentInfoFormat();
-  private final NormsFormat normsFormat = new Lucene53RWNormsFormat();
-
-  @Override
-  public SegmentInfoFormat segmentInfoFormat() {
-    return segmentInfoFormat;
-  }
-
-  @Override
-  public NormsFormat normsFormat() {
-    return normsFormat;
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/Lucene62RWCodec.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/Lucene62RWCodec.java b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/Lucene62RWCodec.java
deleted file mode 100644
index 34d3a7f..0000000
--- a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/Lucene62RWCodec.java
+++ /dev/null
@@ -1,44 +0,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.
- */
-package org.apache.lucene.codecs.lucene62;
-
-import org.apache.lucene.codecs.NormsFormat;
-import org.apache.lucene.codecs.SegmentInfoFormat;
-import org.apache.lucene.codecs.lucene53.Lucene53RWNormsFormat;
-import org.apache.lucene.codecs.lucene62.Lucene62Codec;
-
-/**
- * Read-write version of 6.2 codec for testing
- * @deprecated for test purposes only
- */
-@Deprecated
-public class Lucene62RWCodec extends Lucene62Codec {
-
-  private final SegmentInfoFormat segmentInfoFormat = new Lucene62RWSegmentInfoFormat();
-  private final NormsFormat normsFormat = new Lucene53RWNormsFormat();
-
-  @Override
-  public SegmentInfoFormat segmentInfoFormat() {
-    return segmentInfoFormat;
-  }
-  
-  @Override
-  public NormsFormat normsFormat() {
-    return normsFormat;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/Lucene62RWSegmentInfoFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/Lucene62RWSegmentInfoFormat.java b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/Lucene62RWSegmentInfoFormat.java
deleted file mode 100644
index f2fbe9d..0000000
--- a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/Lucene62RWSegmentInfoFormat.java
+++ /dev/null
@@ -1,193 +0,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.
- */
-package org.apache.lucene.codecs.lucene62;
-
-import java.io.IOException;
-import java.util.Set;
-
-import org.apache.lucene.codecs.CodecUtil;
-import org.apache.lucene.index.IndexFileNames;
-import org.apache.lucene.index.SegmentInfo;
-import org.apache.lucene.search.Sort;
-import org.apache.lucene.search.SortField;
-import org.apache.lucene.search.SortedNumericSelector;
-import org.apache.lucene.search.SortedNumericSortField;
-import org.apache.lucene.search.SortedSetSelector;
-import org.apache.lucene.search.SortedSetSortField;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.IOContext;
-import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.util.Version;
-
-/**
- * Read-write version of 6.2 SegmentInfoFormat for testing
- * @deprecated for test purposes only
- */
-@Deprecated
-public class Lucene62RWSegmentInfoFormat extends Lucene62SegmentInfoFormat {
-
-  @Override
-  public void write(Directory dir, SegmentInfo si, IOContext ioContext) throws IOException {
-    final String fileName = IndexFileNames.segmentFileName(si.name, "", Lucene62SegmentInfoFormat.SI_EXTENSION);
-
-    try (IndexOutput output = dir.createOutput(fileName, ioContext)) {
-      // Only add the file once we've successfully created it, else IFD assert can trip:
-      si.addFile(fileName);
-      CodecUtil.writeIndexHeader(output,
-                                   Lucene62SegmentInfoFormat.CODEC_NAME,
-                                   Lucene62SegmentInfoFormat.VERSION_CURRENT,
-                                   si.getId(),
-                                   "");
-      Version version = si.getVersion();
-      if (version.major < 5) {
-        throw new IllegalArgumentException("invalid major version: should be >= 5 but got: " + version.major + " segment=" + si);
-      }
-      // Write the Lucene version that created this segment, since 3.1
-      output.writeInt(version.major);
-      output.writeInt(version.minor);
-      output.writeInt(version.bugfix);
-      assert version.prerelease == 0;
-      output.writeInt(si.maxDoc());
-
-      output.writeByte((byte) (si.getUseCompoundFile() ? SegmentInfo.YES : SegmentInfo.NO));
-      output.writeMapOfStrings(si.getDiagnostics());
-      Set<String> files = si.files();
-      for (String file : files) {
-        if (!IndexFileNames.parseSegmentName(file).equals(si.name)) {
-          throw new IllegalArgumentException("invalid files: expected segment=" + si.name + ", got=" + files);
-        }
-      }
-      output.writeSetOfStrings(files);
-      output.writeMapOfStrings(si.getAttributes());
-
-      Sort indexSort = si.getIndexSort();
-      int numSortFields = indexSort == null ? 0 : indexSort.getSort().length;
-      output.writeVInt(numSortFields);
-      for (int i = 0; i < numSortFields; ++i) {
-        SortField sortField = indexSort.getSort()[i];
-        SortField.Type sortType = sortField.getType();
-        output.writeString(sortField.getField());
-        int sortTypeID;
-        switch (sortField.getType()) {
-          case STRING:
-            sortTypeID = 0;
-            break;
-          case LONG:
-            sortTypeID = 1;
-            break;
-          case INT:
-            sortTypeID = 2;
-            break;
-          case DOUBLE:
-            sortTypeID = 3;
-            break;
-          case FLOAT:
-            sortTypeID = 4;
-            break;
-          case CUSTOM:
-            if (sortField instanceof SortedSetSortField) {
-              sortTypeID = 5;
-              sortType = SortField.Type.STRING;
-            } else if (sortField instanceof SortedNumericSortField) {
-              sortTypeID = 6;
-              sortType = ((SortedNumericSortField) sortField).getNumericType();
-            } else {
-              throw new IllegalStateException("Unexpected SortedNumericSortField " + sortField);
-            }
-            break;
-          default:
-            throw new IllegalStateException("Unexpected sort type: " + sortField.getType());
-        }
-        output.writeVInt(sortTypeID);
-        if (sortTypeID == 5) {
-          SortedSetSortField ssf = (SortedSetSortField) sortField;
-          if (ssf.getSelector() == SortedSetSelector.Type.MIN) {
-            output.writeByte((byte) 0);
-          } else if (ssf.getSelector() == SortedSetSelector.Type.MAX) {
-            output.writeByte((byte) 1);
-          } else if (ssf.getSelector() == SortedSetSelector.Type.MIDDLE_MIN) {
-            output.writeByte((byte) 2);
-          } else if (ssf.getSelector() == SortedSetSelector.Type.MIDDLE_MAX) {
-            output.writeByte((byte) 3);
-          } else {
-            throw new IllegalStateException("Unexpected SortedSetSelector type: " + ssf.getSelector());
-          }
-        } else if (sortTypeID == 6) {
-          SortedNumericSortField snsf = (SortedNumericSortField) sortField;
-          if (snsf.getNumericType() == SortField.Type.LONG) {
-            output.writeByte((byte) 0);
-          } else if (snsf.getNumericType() == SortField.Type.INT) {
-            output.writeByte((byte) 1);
-          } else if (snsf.getNumericType() == SortField.Type.DOUBLE) {
-            output.writeByte((byte) 2);
-          } else if (snsf.getNumericType() == SortField.Type.FLOAT) {
-            output.writeByte((byte) 3);
-          } else {
-            throw new IllegalStateException("Unexpected SortedNumericSelector type: " + snsf.getNumericType());
-          }
-          if (snsf.getSelector() == SortedNumericSelector.Type.MIN) {
-            output.writeByte((byte) 0);
-          } else if (snsf.getSelector() == SortedNumericSelector.Type.MAX) {
-            output.writeByte((byte) 1);
-          } else {
-            throw new IllegalStateException("Unexpected sorted numeric selector type: " + snsf.getSelector());
-          }
-        }
-        output.writeByte((byte) (sortField.getReverse() ? 0 : 1));
-
-        // write missing value 
-        Object missingValue = sortField.getMissingValue();
-        if (missingValue == null) {
-          output.writeByte((byte) 0);
-        } else {
-          switch(sortType) {
-          case STRING:
-            if (missingValue == SortField.STRING_LAST) {
-              output.writeByte((byte) 1);
-            } else if (missingValue == SortField.STRING_FIRST) {
-              output.writeByte((byte) 2);
-            } else {
-              throw new AssertionError("unrecognized missing value for STRING field \"" + sortField.getField() + "\": " + missingValue);
-            }
-            break;
-          case LONG:
-            output.writeByte((byte) 1);
-            output.writeLong(((Long) missingValue).longValue());
-            break;
-          case INT:
-            output.writeByte((byte) 1);
-            output.writeInt(((Integer) missingValue).intValue());
-            break;
-          case DOUBLE:
-            output.writeByte((byte) 1);
-            output.writeLong(Double.doubleToLongBits(((Double) missingValue).doubleValue()));
-            break;
-          case FLOAT:
-            output.writeByte((byte) 1);
-            output.writeInt(Float.floatToIntBits(((Float) missingValue).floatValue()));
-            break;
-          default:
-            throw new IllegalStateException("Unexpected sort type: " + sortField.getType());
-          }
-        }
-      }
-
-      CodecUtil.writeFooter(output);
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/TestLucene62SegmentInfoFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/TestLucene62SegmentInfoFormat.java b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/TestLucene62SegmentInfoFormat.java
deleted file mode 100644
index e0efa95..0000000
--- a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene62/TestLucene62SegmentInfoFormat.java
+++ /dev/null
@@ -1,48 +0,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.
- */
-
-package org.apache.lucene.codecs.lucene62;
-
-import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.index.BaseSegmentInfoFormatTestCase;
-import org.apache.lucene.util.Version;
-
-/**
- * Tests Lucene62SegmentInfoFormat
- */
-public class TestLucene62SegmentInfoFormat extends BaseSegmentInfoFormatTestCase {
-
-  @Override
-  protected int getCreatedVersionMajor() {
-    return Version.LUCENE_6_2_0.major;
-  }
-
-  @Override
-  protected Version[] getVersions() {
-    return new Version[] { Version.LUCENE_6_2_0 };
-  }
-
-  @Override
-  protected Codec getCodec() {
-    return new Lucene62RWCodec();
-  }
-
-  @Override
-  protected boolean supportsMinVersion() {
-    return false;
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
index ad50382..22b0ab6 100644
--- a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
+++ b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
@@ -1436,9 +1436,10 @@ public class TestBackwardsCompatibility extends LuceneTestCase {
     }
   }
 
-  public static final String emptyIndex = "empty.6.0.0.zip";
+  public static final String emptyIndex = "empty.7.0.0.zip";
 
   public void testUpgradeEmptyOldIndex() throws Exception {
+    assumeTrue("Reenable when 7.0 is released", false);
     Path oldIndexDir = createTempDir("emptyIndex");
     TestUtil.unzip(getDataInputStream(emptyIndex), oldIndexDir);
     Directory dir = newFSDirectory(oldIndexDir);
@@ -1450,9 +1451,10 @@ public class TestBackwardsCompatibility extends LuceneTestCase {
     dir.close();
   }
 
-  public static final String moreTermsIndex = "moreterms.6.0.0.zip";
+  public static final String moreTermsIndex = "moreterms.7.0.0.zip";
 
   public void testMoreTerms() throws Exception {
+    assumeTrue("Reenable when 7.0 is released", false);
     Path oldIndexDir = createTempDir("moreterms");
     TestUtil.unzip(getDataInputStream(moreTermsIndex), oldIndexDir);
     Directory dir = newFSDirectory(oldIndexDir);
@@ -1462,7 +1464,7 @@ public class TestBackwardsCompatibility extends LuceneTestCase {
     dir.close();
   }
 
-  public static final String dvUpdatesIndex = "dvupdates.6.0.0.zip";
+  public static final String dvUpdatesIndex = "dvupdates.7.0.0.zip";
 
   private void assertNumericDocValues(LeafReader r, String f, String cf) throws IOException {
     NumericDocValues ndvf = r.getNumericDocValues(f);
@@ -1497,6 +1499,7 @@ public class TestBackwardsCompatibility extends LuceneTestCase {
   }
 
   public void testDocValuesUpdates() throws Exception {
+    assumeTrue("Reenable when 7.0 is released", false);
     Path oldIndexDir = createTempDir("dvupdates");
     TestUtil.unzip(getDataInputStream(dvUpdatesIndex), oldIndexDir);
     Directory dir = newFSDirectory(oldIndexDir);
@@ -1559,7 +1562,8 @@ public class TestBackwardsCompatibility extends LuceneTestCase {
   }
 
   public void testSortedIndex() throws Exception {
-    String[] versions = new String[] {"6.2.0", "6.2.1", "6.3.0"};
+    assumeTrue("Reenable when 7.0 is released", false);
+    String[] versions = new String[] {};
     for(String version : versions) {
       Path path = createTempDir("sorted");
       InputStream resource = TestBackwardsCompatibility.class.getResourceAsStream("sorted." + version + ".zip");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/TestIndexWriterOnOldIndex.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestIndexWriterOnOldIndex.java b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestIndexWriterOnOldIndex.java
index b48b0fd..db33fb3 100644
--- a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestIndexWriterOnOldIndex.java
+++ b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestIndexWriterOnOldIndex.java
@@ -29,14 +29,15 @@ import org.apache.lucene.util.Version;
 public class TestIndexWriterOnOldIndex extends LuceneTestCase {
 
   public void testOpenModeAndCreatedVersion() throws IOException {
-    InputStream resource = getClass().getResourceAsStream("unsupported.index.single-empty-doc.630.zip");
+    assumeTrue("Reenable when 7.0 is released", false);
+    InputStream resource = getClass().getResourceAsStream("unsupported.index.single-empty-doc.7.0.0.zip");
     assertNotNull(resource);
     Path path = createTempDir();
     TestUtil.unzip(resource, path);
     Directory dir = newFSDirectory(path);
     for (OpenMode openMode : OpenMode.values()) {
       Directory tmpDir = newDirectory(dir);
-      assertEquals(6 /** 6.3.0 */, SegmentInfos.readLatestCommit(tmpDir).getIndexCreatedVersionMajor());
+      assertEquals(7 /** 7.0.0 */, SegmentInfos.readLatestCommit(tmpDir).getIndexCreatedVersionMajor());
       IndexWriter w = new IndexWriter(tmpDir, newIndexWriterConfig().setOpenMode(openMode));
       w.commit();
       w.close();
@@ -45,7 +46,7 @@ public class TestIndexWriterOnOldIndex extends LuceneTestCase {
           assertEquals(Version.LATEST.major, SegmentInfos.readLatestCommit(tmpDir).getIndexCreatedVersionMajor());
           break;
         default:
-          assertEquals(6 /** 6.3.0 */, SegmentInfos.readLatestCommit(tmpDir).getIndexCreatedVersionMajor());
+          assertEquals(7 /** 7.0.0 */, SegmentInfos.readLatestCommit(tmpDir).getIndexCreatedVersionMajor());
       }
       tmpDir.close();
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/TestManyPointsInOldIndex.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestManyPointsInOldIndex.java b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestManyPointsInOldIndex.java
index 043979b..c567bec 100644
--- a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestManyPointsInOldIndex.java
+++ b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestManyPointsInOldIndex.java
@@ -59,6 +59,7 @@ public class TestManyPointsInOldIndex extends LuceneTestCase {
   }
 
   public void testCheckOldIndex() throws IOException {
+    assumeTrue("Reenable when 7.0 is released", false);
     Path path = createTempDir("manypointsindex");
     InputStream resource = getClass().getResourceAsStream("manypointsindex.zip");
     assertNotNull("manypointsindex not found", resource);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/dvupdates.6.0.0.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/dvupdates.6.0.0.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/dvupdates.6.0.0.zip
deleted file mode 100644
index 38ac8e1..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/dvupdates.6.0.0.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/empty.6.0.0.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/empty.6.0.0.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/empty.6.0.0.zip
deleted file mode 100644
index 8ca64d3..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/empty.6.0.0.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/manypointsindex.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/manypointsindex.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/manypointsindex.zip
deleted file mode 100644
index c7c0bf7..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/manypointsindex.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/maxposindex.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/maxposindex.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/maxposindex.zip
deleted file mode 100644
index aaabb56..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/maxposindex.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/moreterms.6.0.0.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/moreterms.6.0.0.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/moreterms.6.0.0.zip
deleted file mode 100644
index 77c448d..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/moreterms.6.0.0.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.2.0.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.2.0.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.2.0.zip
deleted file mode 100644
index b595d9b..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.2.0.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.2.1.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.2.1.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.2.1.zip
deleted file mode 100644
index 40d1ccc..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.2.1.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.3.0.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.3.0.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.3.0.zip
deleted file mode 100644
index 6d89d781..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/sorted.6.3.0.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.630.brokenoffsets.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.630.brokenoffsets.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.630.brokenoffsets.zip
deleted file mode 100644
index 3cf476a..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.630.brokenoffsets.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9ca3dd26/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.single-empty-doc.630.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.single-empty-doc.630.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.single-empty-doc.630.zip
deleted file mode 100644
index 1bf1d08..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.single-empty-doc.630.zip and /dev/null differ


[23/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10979: Randomize PointFields in schema-docValues*.xml and all affected tests

Posted by sh...@apache.org.
SOLR-10979: Randomize PointFields in schema-docValues*.xml and all affected tests


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/0159d494
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/0159d494
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/0159d494

Branch: refs/heads/feature/autoscaling
Commit: 0159d494f562a5a22c8e5ed7ad412fad62b5db55
Parents: b7fb61d
Author: Chris Hostetter <ho...@apache.org>
Authored: Thu Jun 29 15:09:39 2017 -0700
Committer: Chris Hostetter <ho...@apache.org>
Committed: Thu Jun 29 15:09:39 2017 -0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                          |  1 +
 .../test-files/solr/collection1/conf/schema-docValues.xml | 10 +++++-----
 .../solr/collection1/conf/schema-docValuesFaceting.xml    | 10 +++++-----
 .../solr/collection1/conf/schema-docValuesJoin.xml        | 10 +++++-----
 .../solr/collection1/conf/schema-docValuesMissing.xml     | 10 +++++-----
 .../solr/collection1/conf/schema-docValuesMulti.xml       | 10 +++++-----
 .../test/org/apache/solr/schema/DocValuesMultiTest.java   | 10 +++++++---
 7 files changed, 33 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0159d494/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 30d334b..0d2226f 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -363,6 +363,7 @@ Other Changes
   - SOLR-10970: Randomize PointFields in all tests using schema-*sort* files (hossman)
   - SOLR-10971: Randomize PointFields in CdcrBootstrapTest (hossman)
   - SOLR-10977: Randomize the usage of Points based numerics in schema15.xml and all impacted tests (hossman)
+  - SOLR-10979: Randomize PointFields in schema-docValues*.xml and all affected tests (hossman)
 
 * SOLR-6807: Changed requestDispatcher's handleSelect to default to false, thus ignoring "qt".
   Simplified configs to not refer to handleSelect or "qt".  Switch all tests that assumed true to assume false

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0159d494/solr/core/src/test-files/solr/collection1/conf/schema-docValues.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-docValues.xml b/solr/core/src/test-files/solr/collection1/conf/schema-docValues.xml
index 0216791..4a5ab17 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-docValues.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-docValues.xml
@@ -38,14 +38,14 @@
        These are provided more for backward compatability, allowing one
        to create a schema that matches an existing lucene index.
   -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="float" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="double" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
   <!-- format for date is 1995-12-31T23:59:59.999Z and only the fractional
        seconds part (.999) is optional.
     -->
-  <fieldType name="date" class="solr.TrieDateField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="date" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
 
   <fieldType name="boolean" class="solr.BoolField"/>
   <fieldType name="string" class="solr.StrField"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0159d494/solr/core/src/test-files/solr/collection1/conf/schema-docValuesFaceting.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesFaceting.xml b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesFaceting.xml
index f7c6bfc..a8eed08 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesFaceting.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesFaceting.xml
@@ -17,11 +17,11 @@
 -->
 
 <schema name="test" version="1.6">
-  <fieldType name="int" class="${solr.tests.IntegerFieldType}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="float" class="${solr.tests.FloatFieldType}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="long" class="${solr.tests.LongFieldType}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="double" class="${solr.tests.DoubleFieldType}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="date" class="${solr.tests.DateFieldType}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="float" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="double" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="date" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
 
   <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
   <fieldType name="pint" class="solr.IntPointField"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0159d494/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
index d2188fc..844a472 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
@@ -29,11 +29,11 @@
        1.5: omitNorms defaults to true for primitive field types (int, float, boolean, string...)
        1.6: useDocValuesAsStored defaults to true.
      -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="date" class="solr.TrieDateField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="float" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="double" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="date" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
   <fieldtype name="string" class="solr.StrField" sortMissingLast="true" useDocValuesAsStored="false"/>
   <fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
     <analyzer type="index">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0159d494/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMissing.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMissing.xml b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMissing.xml
index ac319e2..d80a426 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMissing.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMissing.xml
@@ -19,11 +19,11 @@
 <!-- schema file for testing sorting/faceting/functions on single-valued DV with missing values -->
 
 <schema name="schema-docValuesMissing" version="1.6">
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="date" class="solr.TrieDateField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="float" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="double" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="date" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
   <fieldType name="string" class="solr.StrField"/>
   <fieldType name="boolean" class="solr.BoolField"/>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0159d494/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMulti.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMulti.xml b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMulti.xml
index 81c7836..eb84189 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMulti.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesMulti.xml
@@ -18,14 +18,14 @@
 
 <schema name="schema-docValuesMulti" version="1.6">
 
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="float" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="double" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
   <!-- format for date is 1995-12-31T23:59:59.999Z and only the fractional
        seconds part (.999) is optional.
     -->
-  <fieldType name="date" class="solr.TrieDateField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="date" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
 
   <fieldType name="boolean" class="solr.BoolField"/>
   <fieldType name="string" class="solr.StrField"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0159d494/solr/core/src/test/org/apache/solr/schema/DocValuesMultiTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/DocValuesMultiTest.java b/solr/core/src/test/org/apache/solr/schema/DocValuesMultiTest.java
index 30dea85..8697b26 100644
--- a/solr/core/src/test/org/apache/solr/schema/DocValuesMultiTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/DocValuesMultiTest.java
@@ -30,7 +30,7 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 
 public class DocValuesMultiTest extends SolrTestCaseJ4 {
-
+  
   @BeforeClass
   public static void beforeTests() throws Exception {
     initCore("solrconfig-basic.xml", "schema-docValuesMulti.xml");
@@ -55,6 +55,10 @@ public class DocValuesMultiTest extends SolrTestCaseJ4 {
 
   @Test
   public void testDocValues() throws IOException {
+
+    final DocValuesType expectedNumericDvType = Boolean.getBoolean(NUMERIC_POINTS_SYSPROP) ?
+      DocValuesType.SORTED_NUMERIC : DocValuesType.SORTED_SET;
+    
     assertU(adoc("id", "1", "floatdv", "4.5", "intdv", "-1", "intdv", "3",
         "stringdv", "value1", "stringdv", "value2",
         "booldv", "false", "booldv", "true"));
@@ -68,8 +72,8 @@ public class DocValuesMultiTest extends SolrTestCaseJ4 {
         final FieldInfos infos = reader.getFieldInfos();
         assertEquals(DocValuesType.SORTED_SET, infos.fieldInfo("stringdv").getDocValuesType());
         assertEquals(DocValuesType.SORTED_SET, infos.fieldInfo("booldv").getDocValuesType());
-        assertEquals(DocValuesType.SORTED_SET, infos.fieldInfo("floatdv").getDocValuesType());
-        assertEquals(DocValuesType.SORTED_SET, infos.fieldInfo("intdv").getDocValuesType());
+        assertEquals(expectedNumericDvType, infos.fieldInfo("floatdv").getDocValuesType());
+        assertEquals(expectedNumericDvType, infos.fieldInfo("intdv").getDocValuesType());
 
         SortedSetDocValues dv = reader.getSortedSetDocValues("stringdv");
         assertEquals(0, dv.nextDoc());


[12/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10272: Adding user _default configset to test-files, fixing solr & solr.cmd script bugs

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_it.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_it.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_it.txt
new file mode 100644
index 0000000..1219cc7
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_it.txt
@@ -0,0 +1,303 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/italian/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+
+ | An Italian stop word list. Comments begin with vertical bar. Each stop
+ | word is at the start of a line.
+
+ad             |  a (to) before vowel
+al             |  a + il
+allo           |  a + lo
+ai             |  a + i
+agli           |  a + gli
+all            |  a + l'
+agl            |  a + gl'
+alla           |  a + la
+alle           |  a + le
+con            |  with
+col            |  con + il
+coi            |  con + i (forms collo, cogli etc are now very rare)
+da             |  from
+dal            |  da + il
+dallo          |  da + lo
+dai            |  da + i
+dagli          |  da + gli
+dall           |  da + l'
+dagl           |  da + gll'
+dalla          |  da + la
+dalle          |  da + le
+di             |  of
+del            |  di + il
+dello          |  di + lo
+dei            |  di + i
+degli          |  di + gli
+dell           |  di + l'
+degl           |  di + gl'
+della          |  di + la
+delle          |  di + le
+in             |  in
+nel            |  in + el
+nello          |  in + lo
+nei            |  in + i
+negli          |  in + gli
+nell           |  in + l'
+negl           |  in + gl'
+nella          |  in + la
+nelle          |  in + le
+su             |  on
+sul            |  su + il
+sullo          |  su + lo
+sui            |  su + i
+sugli          |  su + gli
+sull           |  su + l'
+sugl           |  su + gl'
+sulla          |  su + la
+sulle          |  su + le
+per            |  through, by
+tra            |  among
+contro         |  against
+io             |  I
+tu             |  thou
+lui            |  he
+lei            |  she
+noi            |  we
+voi            |  you
+loro           |  they
+mio            |  my
+mia            |
+miei           |
+mie            |
+tuo            |
+tua            |
+tuoi           |  thy
+tue            |
+suo            |
+sua            |
+suoi           |  his, her
+sue            |
+nostro         |  our
+nostra         |
+nostri         |
+nostre         |
+vostro         |  your
+vostra         |
+vostri         |
+vostre         |
+mi             |  me
+ti             |  thee
+ci             |  us, there
+vi             |  you, there
+lo             |  him, the
+la             |  her, the
+li             |  them
+le             |  them, the
+gli            |  to him, the
+ne             |  from there etc
+il             |  the
+un             |  a
+uno            |  a
+una            |  a
+ma             |  but
+ed             |  and
+se             |  if
+perché         |  why, because
+anche          |  also
+come           |  how
+dov            |  where (as dov')
+dove           |  where
+che            |  who, that
+chi            |  who
+cui            |  whom
+non            |  not
+più            |  more
+quale          |  who, that
+quanto         |  how much
+quanti         |
+quanta         |
+quante         |
+quello         |  that
+quelli         |
+quella         |
+quelle         |
+questo         |  this
+questi         |
+questa         |
+queste         |
+si             |  yes
+tutto          |  all
+tutti          |  all
+
+               |  single letter forms:
+
+a              |  at
+c              |  as c' for ce or ci
+e              |  and
+i              |  the
+l              |  as l'
+o              |  or
+
+               | forms of avere, to have (not including the infinitive):
+
+ho
+hai
+ha
+abbiamo
+avete
+hanno
+abbia
+abbiate
+abbiano
+avrò
+avrai
+avrà
+avremo
+avrete
+avranno
+avrei
+avresti
+avrebbe
+avremmo
+avreste
+avrebbero
+avevo
+avevi
+aveva
+avevamo
+avevate
+avevano
+ebbi
+avesti
+ebbe
+avemmo
+aveste
+ebbero
+avessi
+avesse
+avessimo
+avessero
+avendo
+avuto
+avuta
+avuti
+avute
+
+               | forms of essere, to be (not including the infinitive):
+sono
+sei
+è
+siamo
+siete
+sia
+siate
+siano
+sarò
+sarai
+sarà
+saremo
+sarete
+saranno
+sarei
+saresti
+sarebbe
+saremmo
+sareste
+sarebbero
+ero
+eri
+era
+eravamo
+eravate
+erano
+fui
+fosti
+fu
+fummo
+foste
+furono
+fossi
+fosse
+fossimo
+fossero
+essendo
+
+               | forms of fare, to do (not including the infinitive, fa, fat-):
+faccio
+fai
+facciamo
+fanno
+faccia
+facciate
+facciano
+farò
+farai
+farà
+faremo
+farete
+faranno
+farei
+faresti
+farebbe
+faremmo
+fareste
+farebbero
+facevo
+facevi
+faceva
+facevamo
+facevate
+facevano
+feci
+facesti
+fece
+facemmo
+faceste
+fecero
+facessi
+facesse
+facessimo
+facessero
+facendo
+
+               | forms of stare, to be (not including the infinitive):
+sto
+stai
+sta
+stiamo
+stanno
+stia
+stiate
+stiano
+starò
+starai
+starà
+staremo
+starete
+staranno
+starei
+staresti
+starebbe
+staremmo
+stareste
+starebbero
+stavo
+stavi
+stava
+stavamo
+stavate
+stavano
+stetti
+stesti
+stette
+stemmo
+steste
+stettero
+stessi
+stesse
+stessimo
+stessero
+stando

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ja.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ja.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ja.txt
new file mode 100644
index 0000000..d4321be
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ja.txt
@@ -0,0 +1,127 @@
+#
+# This file defines a stopword set for Japanese.
+#
+# This set is made up of hand-picked frequent terms from segmented Japanese Wikipedia.
+# Punctuation characters and frequent kanji have mostly been left out.  See LUCENE-3745
+# for frequency lists, etc. that can be useful for making your own set (if desired)
+#
+# Note that there is an overlap between these stopwords and the terms stopped when used
+# in combination with the JapanesePartOfSpeechStopFilter.  When editing this file, note
+# that comments are not allowed on the same line as stopwords.
+#
+# Also note that stopping is done in a case-insensitive manner.  Change your StopFilter
+# configuration if you need case-sensitive stopping.  Lastly, note that stopping is done
+# using the same character width as the entries in this file.  Since this StopFilter is
+# normally done after a CJKWidthFilter in your chain, you would usually want your romaji
+# entries to be in half-width and your kana entries to be in full-width.
+#
+の
+に
+は
+を
+た
+が
+で
+て
+と
+し
+れ
+さ
+ある
+いる
+も
+する
+から
+な
+こと
+として
+い
+や
+れる
+など
+なっ
+ない
+この
+ため
+その
+あっ
+よう
+また
+もの
+という
+あり
+まで
+られ
+なる
+へ
+か
+だ
+これ
+によって
+により
+おり
+より
+による
+ず
+なり
+られる
+において
+ば
+なかっ
+なく
+しかし
+について
+せ
+だっ
+その後
+できる
+それ
+う
+ので
+なお
+のみ
+でき
+き
+つ
+における
+および
+いう
+さらに
+でも
+ら
+たり
+その他
+に関する
+たち
+ます
+ん
+なら
+に対して
+特に
+せる
+及び
+これら
+とき
+では
+にて
+ほか
+ながら
+うち
+そして
+とともに
+ただし
+かつて
+それぞれ
+または
+お
+ほど
+ものの
+に対する
+ほとんど
+と共に
+といった
+です
+とも
+ところ
+ここ
+##### End of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_lv.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_lv.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_lv.txt
new file mode 100644
index 0000000..e21a23c
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_lv.txt
@@ -0,0 +1,172 @@
+# Set of Latvian stopwords from A Stemming Algorithm for Latvian, Karlis Kreslins
+# the original list of over 800 forms was refined: 
+#   pronouns, adverbs, interjections were removed
+# 
+# prepositions
+aiz
+ap
+ar
+apakš
+ārpus
+augšpus
+bez
+caur
+dēļ
+gar
+iekš
+iz
+kopš
+labad
+lejpus
+līdz
+no
+otrpus
+pa
+par
+pār
+pēc
+pie
+pirms
+pret
+priekš
+starp
+šaipus
+uz
+viņpus
+virs
+virspus
+zem
+apakšpus
+# Conjunctions
+un
+bet
+jo
+ja
+ka
+lai
+tomēr
+tikko
+turpretī
+arī
+kaut
+gan
+tādēļ
+tā
+ne
+tikvien
+vien
+kā
+ir
+te
+vai
+kamēr
+# Particles
+ar
+diezin
+droši
+diemžēl
+nebūt
+ik
+it
+taču
+nu
+pat
+tiklab
+iekšpus
+nedz
+tik
+nevis
+turpretim
+jeb
+iekam
+iekām
+iekāms
+kolīdz
+līdzko
+tiklīdz
+jebšu
+tālab
+tāpēc
+nekā
+itin
+jā
+jau
+jel
+nē
+nezin
+tad
+tikai
+vis
+tak
+iekams
+vien
+# modal verbs
+būt  
+biju 
+biji
+bija
+bijām
+bijāt
+esmu
+esi
+esam
+esat 
+būšu     
+būsi
+būs
+būsim
+būsiet
+tikt
+tiku
+tiki
+tika
+tikām
+tikāt
+tieku
+tiec
+tiek
+tiekam
+tiekat
+tikšu
+tiks
+tiksim
+tiksiet
+tapt
+tapi
+tapāt
+topat
+tapšu
+tapsi
+taps
+tapsim
+tapsiet
+kļūt
+kļuvu
+kļuvi
+kļuva
+kļuvām
+kļuvāt
+kļūstu
+kļūsti
+kļūst
+kļūstam
+kļūstat
+kļūšu
+kļūsi
+kļūs
+kļūsim
+kļūsiet
+# verbs
+varēt
+varēju
+varējām
+varēšu
+varēsim
+var
+varēji
+varējāt
+varēsi
+varēsiet
+varat
+varēja
+varēs

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_nl.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_nl.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_nl.txt
new file mode 100644
index 0000000..47a2aea
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_nl.txt
@@ -0,0 +1,119 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/dutch/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+
+ | A Dutch stop word list. Comments begin with vertical bar. Each stop
+ | word is at the start of a line.
+
+ | This is a ranked list (commonest to rarest) of stopwords derived from
+ | a large sample of Dutch text.
+
+ | Dutch stop words frequently exhibit homonym clashes. These are indicated
+ | clearly below.
+
+de             |  the
+en             |  and
+van            |  of, from
+ik             |  I, the ego
+te             |  (1) chez, at etc, (2) to, (3) too
+dat            |  that, which
+die            |  that, those, who, which
+in             |  in, inside
+een            |  a, an, one
+hij            |  he
+het            |  the, it
+niet           |  not, nothing, naught
+zijn           |  (1) to be, being, (2) his, one's, its
+is             |  is
+was            |  (1) was, past tense of all persons sing. of 'zijn' (to be) (2) wax, (3) the washing, (4) rise of river
+op             |  on, upon, at, in, up, used up
+aan            |  on, upon, to (as dative)
+met            |  with, by
+als            |  like, such as, when
+voor           |  (1) before, in front of, (2) furrow
+had            |  had, past tense all persons sing. of 'hebben' (have)
+er             |  there
+maar           |  but, only
+om             |  round, about, for etc
+hem            |  him
+dan            |  then
+zou            |  should/would, past tense all persons sing. of 'zullen'
+of             |  or, whether, if
+wat            |  what, something, anything
+mijn           |  possessive and noun 'mine'
+men            |  people, 'one'
+dit            |  this
+zo             |  so, thus, in this way
+door           |  through by
+over           |  over, across
+ze             |  she, her, they, them
+zich           |  oneself
+bij            |  (1) a bee, (2) by, near, at
+ook            |  also, too
+tot            |  till, until
+je             |  you
+mij            |  me
+uit            |  out of, from
+der            |  Old Dutch form of 'van der' still found in surnames
+daar           |  (1) there, (2) because
+haar           |  (1) her, their, them, (2) hair
+naar           |  (1) unpleasant, unwell etc, (2) towards, (3) as
+heb            |  present first person sing. of 'to have'
+hoe            |  how, why
+heeft          |  present third person sing. of 'to have'
+hebben         |  'to have' and various parts thereof
+deze           |  this
+u              |  you
+want           |  (1) for, (2) mitten, (3) rigging
+nog            |  yet, still
+zal            |  'shall', first and third person sing. of verb 'zullen' (will)
+me             |  me
+zij            |  she, they
+nu             |  now
+ge             |  'thou', still used in Belgium and south Netherlands
+geen           |  none
+omdat          |  because
+iets           |  something, somewhat
+worden         |  to become, grow, get
+toch           |  yet, still
+al             |  all, every, each
+waren          |  (1) 'were' (2) to wander, (3) wares, (3)
+veel           |  much, many
+meer           |  (1) more, (2) lake
+doen           |  to do, to make
+toen           |  then, when
+moet           |  noun 'spot/mote' and present form of 'to must'
+ben            |  (1) am, (2) 'are' in interrogative second person singular of 'to be'
+zonder         |  without
+kan            |  noun 'can' and present form of 'to be able'
+hun            |  their, them
+dus            |  so, consequently
+alles          |  all, everything, anything
+onder          |  under, beneath
+ja             |  yes, of course
+eens           |  once, one day
+hier           |  here
+wie            |  who
+werd           |  imperfect third person sing. of 'become'
+altijd         |  always
+doch           |  yet, but etc
+wordt          |  present third person sing. of 'become'
+wezen          |  (1) to be, (2) 'been' as in 'been fishing', (3) orphans
+kunnen         |  to be able
+ons            |  us/our
+zelf           |  self
+tegen          |  against, towards, at
+na             |  after, near
+reeds          |  already
+wil            |  (1) present tense of 'want', (2) 'will', noun, (3) fender
+kon            |  could; past tense of 'to be able'
+niets          |  nothing
+uw             |  your
+iemand         |  somebody
+geweest        |  been; past participle of 'be'
+andere         |  other

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_no.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_no.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_no.txt
new file mode 100644
index 0000000..a7a2c28
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_no.txt
@@ -0,0 +1,194 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/norwegian/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+
+ | A Norwegian stop word list. Comments begin with vertical bar. Each stop
+ | word is at the start of a line.
+
+ | This stop word list is for the dominant bokmål dialect. Words unique
+ | to nynorsk are marked *.
+
+ | Revised by Jan Bruusgaard <Ja...@ssb.no>, Jan 2005
+
+og             | and
+i              | in
+jeg            | I
+det            | it/this/that
+at             | to (w. inf.)
+en             | a/an
+et             | a/an
+den            | it/this/that
+til            | to
+er             | is/am/are
+som            | who/that
+på             | on
+de             | they / you(formal)
+med            | with
+han            | he
+av             | of
+ikke           | not
+ikkje          | not *
+der            | there
+så             | so
+var            | was/were
+meg            | me
+seg            | you
+men            | but
+ett            | one
+har            | have
+om             | about
+vi             | we
+min            | my
+mitt           | my
+ha             | have
+hadde          | had
+hun            | she
+nå             | now
+over           | over
+da             | when/as
+ved            | by/know
+fra            | from
+du             | you
+ut             | out
+sin            | your
+dem            | them
+oss            | us
+opp            | up
+man            | you/one
+kan            | can
+hans           | his
+hvor           | where
+eller          | or
+hva            | what
+skal           | shall/must
+selv           | self (reflective)
+sjøl           | self (reflective)
+her            | here
+alle           | all
+vil            | will
+bli            | become
+ble            | became
+blei           | became *
+blitt          | have become
+kunne          | could
+inn            | in
+når            | when
+være           | be
+kom            | come
+noen           | some
+noe            | some
+ville          | would
+dere           | you
+som            | who/which/that
+deres          | their/theirs
+kun            | only/just
+ja             | yes
+etter          | after
+ned            | down
+skulle         | should
+denne          | this
+for            | for/because
+deg            | you
+si             | hers/his
+sine           | hers/his
+sitt           | hers/his
+mot            | against
+å              | to
+meget          | much
+hvorfor        | why
+dette          | this
+disse          | these/those
+uten           | without
+hvordan        | how
+ingen          | none
+din            | your
+ditt           | your
+blir           | become
+samme          | same
+hvilken        | which
+hvilke         | which (plural)
+sånn           | such a
+inni           | inside/within
+mellom         | between
+vår            | our
+hver           | each
+hvem           | who
+vors           | us/ours
+hvis           | whose
+både           | both
+bare           | only/just
+enn            | than
+fordi          | as/because
+før            | before
+mange          | many
+også           | also
+slik           | just
+vært           | been
+være           | to be
+båe            | both *
+begge          | both
+siden          | since
+dykk           | your *
+dykkar         | yours *
+dei            | they *
+deira          | them *
+deires         | theirs *
+deim           | them *
+di             | your (fem.) *
+då             | as/when *
+eg             | I *
+ein            | a/an *
+eit            | a/an *
+eitt           | a/an *
+elles          | or *
+honom          | he *
+hjå            | at *
+ho             | she *
+hoe            | she *
+henne          | her
+hennar         | her/hers
+hennes         | hers
+hoss           | how *
+hossen         | how *
+ikkje          | not *
+ingi           | noone *
+inkje          | noone *
+korleis        | how *
+korso          | how *
+kva            | what/which *
+kvar           | where *
+kvarhelst      | where *
+kven           | who/whom *
+kvi            | why *
+kvifor         | why *
+me             | we *
+medan          | while *
+mi             | my *
+mine           | my *
+mykje          | much *
+no             | now *
+nokon          | some (masc./neut.) *
+noka           | some (fem.) *
+nokor          | some *
+noko           | some *
+nokre          | some *
+si             | his/hers *
+sia            | since *
+sidan          | since *
+so             | so *
+somt           | some *
+somme          | some *
+um             | about*
+upp            | up *
+vere           | be *
+vore           | was *
+verte          | become *
+vort           | become *
+varte          | became *
+vart           | became *
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_pt.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_pt.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_pt.txt
new file mode 100644
index 0000000..acfeb01
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_pt.txt
@@ -0,0 +1,253 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/portuguese/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+
+ | A Portuguese stop word list. Comments begin with vertical bar. Each stop
+ | word is at the start of a line.
+
+
+ | The following is a ranked list (commonest to rarest) of stopwords
+ | deriving from a large sample of text.
+
+ | Extra words have been added at the end.
+
+de             |  of, from
+a              |  the; to, at; her
+o              |  the; him
+que            |  who, that
+e              |  and
+do             |  de + o
+da             |  de + a
+em             |  in
+um             |  a
+para           |  for
+  | é          from SER
+com            |  with
+não            |  not, no
+uma            |  a
+os             |  the; them
+no             |  em + o
+se             |  himself etc
+na             |  em + a
+por            |  for
+mais           |  more
+as             |  the; them
+dos            |  de + os
+como           |  as, like
+mas            |  but
+  | foi        from SER
+ao             |  a + o
+ele            |  he
+das            |  de + as
+  | tem        from TER
+à              |  a + a
+seu            |  his
+sua            |  her
+ou             |  or
+  | ser        from SER
+quando         |  when
+muito          |  much
+  | há         from HAV
+nos            |  em + os; us
+já             |  already, now
+  | está       from EST
+eu             |  I
+também         |  also
+só             |  only, just
+pelo           |  per + o
+pela           |  per + a
+até            |  up to
+isso           |  that
+ela            |  he
+entre          |  between
+  | era        from SER
+depois         |  after
+sem            |  without
+mesmo          |  same
+aos            |  a + os
+  | ter        from TER
+seus           |  his
+quem           |  whom
+nas            |  em + as
+me             |  me
+esse           |  that
+eles           |  they
+  | estão      from EST
+você           |  you
+  | tinha      from TER
+  | foram      from SER
+essa           |  that
+num            |  em + um
+nem            |  nor
+suas           |  her
+meu            |  my
+às             |  a + as
+minha          |  my
+  | têm        from TER
+numa           |  em + uma
+pelos          |  per + os
+elas           |  they
+  | havia      from HAV
+  | seja       from SER
+qual           |  which
+  | será       from SER
+nós            |  we
+  | tenho      from TER
+lhe            |  to him, her
+deles          |  of them
+essas          |  those
+esses          |  those
+pelas          |  per + as
+este           |  this
+  | fosse      from SER
+dele           |  of him
+
+ | other words. There are many contractions such as naquele = em+aquele,
+ | mo = me+o, but they are rare.
+ | Indefinite article plural forms are also rare.
+
+tu             |  thou
+te             |  thee
+vocês          |  you (plural)
+vos            |  you
+lhes           |  to them
+meus           |  my
+minhas
+teu            |  thy
+tua
+teus
+tuas
+nosso          | our
+nossa
+nossos
+nossas
+
+dela           |  of her
+delas          |  of them
+
+esta           |  this
+estes          |  these
+estas          |  these
+aquele         |  that
+aquela         |  that
+aqueles        |  those
+aquelas        |  those
+isto           |  this
+aquilo         |  that
+
+               | forms of estar, to be (not including the infinitive):
+estou
+está
+estamos
+estão
+estive
+esteve
+estivemos
+estiveram
+estava
+estávamos
+estavam
+estivera
+estivéramos
+esteja
+estejamos
+estejam
+estivesse
+estivéssemos
+estivessem
+estiver
+estivermos
+estiverem
+
+               | forms of haver, to have (not including the infinitive):
+hei
+há
+havemos
+hão
+houve
+houvemos
+houveram
+houvera
+houvéramos
+haja
+hajamos
+hajam
+houvesse
+houvéssemos
+houvessem
+houver
+houvermos
+houverem
+houverei
+houverá
+houveremos
+houverão
+houveria
+houveríamos
+houveriam
+
+               | forms of ser, to be (not including the infinitive):
+sou
+somos
+são
+era
+éramos
+eram
+fui
+foi
+fomos
+foram
+fora
+fôramos
+seja
+sejamos
+sejam
+fosse
+fôssemos
+fossem
+for
+formos
+forem
+serei
+será
+seremos
+serão
+seria
+seríamos
+seriam
+
+               | forms of ter, to have (not including the infinitive):
+tenho
+tem
+temos
+tém
+tinha
+tínhamos
+tinham
+tive
+teve
+tivemos
+tiveram
+tivera
+tivéramos
+tenha
+tenhamos
+tenham
+tivesse
+tivéssemos
+tivessem
+tiver
+tivermos
+tiverem
+terei
+terá
+teremos
+terão
+teria
+teríamos
+teriam

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ro.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ro.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ro.txt
new file mode 100644
index 0000000..4fdee90
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ro.txt
@@ -0,0 +1,233 @@
+# This file was created by Jacques Savoy and is distributed under the BSD license.
+# See http://members.unine.ch/jacques.savoy/clef/index.html.
+# Also see http://www.opensource.org/licenses/bsd-license.html
+acea
+aceasta
+această
+aceea
+acei
+aceia
+acel
+acela
+acele
+acelea
+acest
+acesta
+aceste
+acestea
+aceşti
+aceştia
+acolo
+acum
+ai
+aia
+aibă
+aici
+al
+ăla
+ale
+alea
+ălea
+altceva
+altcineva
+am
+ar
+are
+aş
+aşadar
+asemenea
+asta
+ăsta
+astăzi
+astea
+ăstea
+ăştia
+asupra
+aţi
+au
+avea
+avem
+aveţi
+azi
+bine
+bucur
+bună
+ca
+că
+căci
+când
+care
+cărei
+căror
+cărui
+cât
+câte
+câţi
+către
+câtva
+ce
+cel
+ceva
+chiar
+cînd
+cine
+cineva
+cît
+cîte
+cîţi
+cîtva
+contra
+cu
+cum
+cumva
+curând
+curînd
+da
+dă
+dacă
+dar
+datorită
+de
+deci
+deja
+deoarece
+departe
+deşi
+din
+dinaintea
+dintr
+dintre
+drept
+după
+ea
+ei
+el
+ele
+eram
+este
+eşti
+eu
+face
+fără
+fi
+fie
+fiecare
+fii
+fim
+fiţi
+iar
+ieri
+îi
+îl
+îmi
+împotriva
+în 
+înainte
+înaintea
+încât
+încît
+încotro
+între
+întrucât
+întrucît
+îţi
+la
+lângă
+le
+li
+lîngă
+lor
+lui
+mă
+mâine
+mea
+mei
+mele
+mereu
+meu
+mi
+mine
+mult
+multă
+mulţi
+ne
+nicăieri
+nici
+nimeni
+nişte
+noastră
+noastre
+noi
+noştri
+nostru
+nu
+ori
+oricând
+oricare
+oricât
+orice
+oricînd
+oricine
+oricît
+oricum
+oriunde
+până
+pe
+pentru
+peste
+pînă
+poate
+pot
+prea
+prima
+primul
+prin
+printr
+sa
+să
+săi
+sale
+sau
+său
+se
+şi
+sînt
+sîntem
+sînteţi
+spre
+sub
+sunt
+suntem
+sunteţi
+ta
+tăi
+tale
+tău
+te
+ţi
+ţie
+tine
+toată
+toate
+tot
+toţi
+totuşi
+tu
+un
+una
+unde
+undeva
+unei
+unele
+uneori
+unor
+vă
+vi
+voastră
+voastre
+voi
+voştri
+vostru
+vouă
+vreo
+vreun

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ru.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ru.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ru.txt
new file mode 100644
index 0000000..5527140
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_ru.txt
@@ -0,0 +1,243 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/russian/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+
+ | a russian stop word list. comments begin with vertical bar. each stop
+ | word is at the start of a line.
+
+ | this is a ranked list (commonest to rarest) of stopwords derived from
+ | a large text sample.
+
+ | letter `ё' is translated to `е'.
+
+и              | and
+в              | in/into
+во             | alternative form
+не             | not
+что            | what/that
+он             | he
+на             | on/onto
+я              | i
+с              | from
+со             | alternative form
+как            | how
+а              | milder form of `no' (but)
+то             | conjunction and form of `that'
+все            | all
+она            | she
+так            | so, thus
+его            | him
+но             | but
+да             | yes/and
+ты             | thou
+к              | towards, by
+у              | around, chez
+же             | intensifier particle
+вы             | you
+за             | beyond, behind
+бы             | conditional/subj. particle
+по             | up to, along
+только         | only
+ее             | her
+мне            | to me
+было           | it was
+вот            | here is/are, particle
+от             | away from
+меня           | me
+еще            | still, yet, more
+нет            | no, there isnt/arent
+о              | about
+из             | out of
+ему            | to him
+теперь         | now
+когда          | when
+даже           | even
+ну             | so, well
+вдруг          | suddenly
+ли             | interrogative particle
+если           | if
+уже            | already, but homonym of `narrower'
+или            | or
+ни             | neither
+быть           | to be
+был            | he was
+него           | prepositional form of его
+до             | up to
+вас            | you accusative
+нибудь         | indef. suffix preceded by hyphen
+опять          | again
+уж             | already, but homonym of `adder'
+вам            | to you
+сказал         | he said
+ведь           | particle `after all'
+там            | there
+потом          | then
+себя           | oneself
+ничего         | nothing
+ей             | to her
+может          | usually with `быть' as `maybe'
+они            | they
+тут            | here
+где            | where
+есть           | there is/are
+надо           | got to, must
+ней            | prepositional form of  ей
+для            | for
+мы             | we
+тебя           | thee
+их             | them, their
+чем            | than
+была           | she was
+сам            | self
+чтоб           | in order to
+без            | without
+будто          | as if
+человек        | man, person, one
+чего           | genitive form of `what'
+раз            | once
+тоже           | also
+себе           | to oneself
+под            | beneath
+жизнь          | life
+будет          | will be
+ж              | short form of intensifer particle `же'
+тогда          | then
+кто            | who
+этот           | this
+говорил        | was saying
+того           | genitive form of `that'
+потому         | for that reason
+этого          | genitive form of `this'
+какой          | which
+совсем         | altogether
+ним            | prepositional form of `его', `они'
+здесь          | here
+этом           | prepositional form of `этот'
+один           | one
+почти          | almost
+мой            | my
+тем            | instrumental/dative plural of `тот', `то'
+чтобы          | full form of `in order that'
+нее            | her (acc.)
+кажется        | it seems
+сейчас         | now
+были           | they were
+куда           | where to
+зачем          | why
+сказать        | to say
+всех           | all (acc., gen. preposn. plural)
+никогда        | never
+сегодня        | today
+можно          | possible, one can
+при            | by
+наконец        | finally
+два            | two
+об             | alternative form of `о', about
+другой         | another
+хоть           | even
+после          | after
+над            | above
+больше         | more
+тот            | that one (masc.)
+через          | across, in
+эти            | these
+нас            | us
+про            | about
+всего          | in all, only, of all
+них            | prepositional form of `они' (they)
+какая          | which, feminine
+много          | lots
+разве          | interrogative particle
+сказала        | she said
+три            | three
+эту            | this, acc. fem. sing.
+моя            | my, feminine
+впрочем        | moreover, besides
+хорошо         | good
+свою           | ones own, acc. fem. sing.
+этой           | oblique form of `эта', fem. `this'
+перед          | in front of
+иногда         | sometimes
+лучше          | better
+чуть           | a little
+том            | preposn. form of `that one'
+нельзя         | one must not
+такой          | such a one
+им             | to them
+более          | more
+всегда         | always
+конечно        | of course
+всю            | acc. fem. sing of `all'
+между          | between
+
+
+  | b: some paradigms
+  |
+  | personal pronouns
+  |
+  | я  меня  мне  мной  [мною]
+  | ты  тебя  тебе  тобой  [тобою]
+  | он  его  ему  им  [него, нему, ним]
+  | она  ее  эи  ею  [нее, нэи, нею]
+  | оно  его  ему  им  [него, нему, ним]
+  |
+  | мы  нас  нам  нами
+  | вы  вас  вам  вами
+  | они  их  им  ими  [них, ним, ними]
+  |
+  |   себя  себе  собой   [собою]
+  |
+  | demonstrative pronouns: этот (this), тот (that)
+  |
+  | этот  эта  это  эти
+  | этого  эты  это  эти
+  | этого  этой  этого  этих
+  | этому  этой  этому  этим
+  | этим  этой  этим  [этою]  этими
+  | этом  этой  этом  этих
+  |
+  | тот  та  то  те
+  | того  ту  то  те
+  | того  той  того  тех
+  | тому  той  тому  тем
+  | тем  той  тем  [тою]  теми
+  | том  той  том  тех
+  |
+  | determinative pronouns
+  |
+  | (a) весь (all)
+  |
+  | весь  вся  все  все
+  | всего  всю  все  все
+  | всего  всей  всего  всех
+  | всему  всей  всему  всем
+  | всем  всей  всем  [всею]  всеми
+  | всем  всей  всем  всех
+  |
+  | (b) сам (himself etc)
+  |
+  | сам  сама  само  сами
+  | самого саму  само  самих
+  | самого самой самого  самих
+  | самому самой самому  самим
+  | самим  самой  самим  [самою]  самими
+  | самом самой самом  самих
+  |
+  | stems of verbs `to be', `to have', `to do' and modal
+  |
+  | быть  бы  буд  быв  есть  суть
+  | име
+  | дел
+  | мог   мож  мочь
+  | уме
+  | хоч  хот
+  | долж
+  | можн
+  | нужн
+  | нельзя
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_sv.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_sv.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_sv.txt
new file mode 100644
index 0000000..096f87f
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_sv.txt
@@ -0,0 +1,133 @@
+ | From svn.tartarus.org/snowball/trunk/website/algorithms/swedish/stop.txt
+ | This file is distributed under the BSD License.
+ | See http://snowball.tartarus.org/license.php
+ | Also see http://www.opensource.org/licenses/bsd-license.html
+ |  - Encoding was converted to UTF-8.
+ |  - This notice was added.
+ |
+ | NOTE: To use this file with StopFilterFactory, you must specify format="snowball"
+
+ | A Swedish stop word list. Comments begin with vertical bar. Each stop
+ | word is at the start of a line.
+
+ | This is a ranked list (commonest to rarest) of stopwords derived from
+ | a large text sample.
+
+ | Swedish stop words occasionally exhibit homonym clashes. For example
+ |  så = so, but also seed. These are indicated clearly below.
+
+och            | and
+det            | it, this/that
+att            | to (with infinitive)
+i              | in, at
+en             | a
+jag            | I
+hon            | she
+som            | who, that
+han            | he
+på             | on
+den            | it, this/that
+med            | with
+var            | where, each
+sig            | him(self) etc
+för            | for
+så             | so (also: seed)
+till           | to
+är             | is
+men            | but
+ett            | a
+om             | if; around, about
+hade           | had
+de             | they, these/those
+av             | of
+icke           | not, no
+mig            | me
+du             | you
+henne          | her
+då             | then, when
+sin            | his
+nu             | now
+har            | have
+inte           | inte någon = no one
+hans           | his
+honom          | him
+skulle         | 'sake'
+hennes         | her
+där            | there
+min            | my
+man            | one (pronoun)
+ej             | nor
+vid            | at, by, on (also: vast)
+kunde          | could
+något          | some etc
+från           | from, off
+ut             | out
+när            | when
+efter          | after, behind
+upp            | up
+vi             | we
+dem            | them
+vara           | be
+vad            | what
+över           | over
+än             | than
+dig            | you
+kan            | can
+sina           | his
+här            | here
+ha             | have
+mot            | towards
+alla           | all
+under          | under (also: wonder)
+någon          | some etc
+eller          | or (else)
+allt           | all
+mycket         | much
+sedan          | since
+ju             | why
+denna          | this/that
+själv          | myself, yourself etc
+detta          | this/that
+åt             | to
+utan           | without
+varit          | was
+hur            | how
+ingen          | no
+mitt           | my
+ni             | you
+bli            | to be, become
+blev           | from bli
+oss            | us
+din            | thy
+dessa          | these/those
+några          | some etc
+deras          | their
+blir           | from bli
+mina           | my
+samma          | (the) same
+vilken         | who, that
+er             | you, your
+sådan          | such a
+vår            | our
+blivit         | from bli
+dess           | its
+inom           | within
+mellan         | between
+sådant         | such a
+varför         | why
+varje          | each
+vilka          | who, that
+ditt           | thy
+vem            | who
+vilket         | who, that
+sitta          | his
+sådana         | such a
+vart           | each
+dina           | thy
+vars           | whose
+vårt           | our
+våra           | our
+ert            | your
+era            | your
+vilkas         | whose
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_th.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_th.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_th.txt
new file mode 100644
index 0000000..07f0fab
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_th.txt
@@ -0,0 +1,119 @@
+# Thai stopwords from:
+# "Opinion Detection in Thai Political News Columns
+# Based on Subjectivity Analysis"
+# Khampol Sukhum, Supot Nitsuwat, and Choochart Haruechaiyasak
+ไว้
+ไม่
+ไป
+ได้
+ให้
+ใน
+โดย
+แห่ง
+แล้ว
+และ
+แรก
+แบบ
+แต่
+เอง
+เห็น
+เลย
+เริ่ม
+เรา
+เมื่อ
+เพื่อ
+เพราะ
+เป็นการ
+เป็น
+เปิดเผย
+เปิด
+เนื่องจาก
+เดียวกัน
+เดียว
+เช่น
+เฉพาะ
+เคย
+เข้า
+เขา
+อีก
+อาจ
+อะไร
+ออก
+อย่าง
+อยู่
+อยาก
+หาก
+หลาย
+หลังจาก
+หลัง
+หรือ
+หนึ่ง
+ส่วน
+ส่ง
+สุด
+สําหรับ
+ว่า
+วัน
+ลง
+ร่วม
+ราย
+รับ
+ระหว่าง
+รวม
+ยัง
+มี
+มาก
+มา
+พร้อม
+พบ
+ผ่าน
+ผล
+บาง
+น่า
+นี้
+นํา
+นั้น
+นัก
+นอกจาก
+ทุก
+ที่สุด
+ที่
+ทําให้
+ทํา
+ทาง
+ทั้งนี้
+ทั้ง
+ถ้า
+ถูก
+ถึง
+ต้อง
+ต่างๆ
+ต่าง
+ต่อ
+ตาม
+ตั้งแต่
+ตั้ง
+ด้าน
+ด้วย
+ดัง
+ซึ่ง
+ช่วง
+จึง
+จาก
+จัด
+จะ
+คือ
+ความ
+ครั้ง
+คง
+ขึ้น
+ของ
+ขอ
+ขณะ
+ก่อน
+ก็
+การ
+กับ
+กัน
+กว่า
+กล่าว

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_tr.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_tr.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_tr.txt
new file mode 100644
index 0000000..84d9408
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/stopwords_tr.txt
@@ -0,0 +1,212 @@
+# Turkish stopwords from LUCENE-559
+# merged with the list from "Information Retrieval on Turkish Texts"
+#   (http://www.users.muohio.edu/canf/papers/JASIST2008offPrint.pdf)
+acaba
+altmış
+altı
+ama
+ancak
+arada
+aslında
+ayrıca
+bana
+bazı
+belki
+ben
+benden
+beni
+benim
+beri
+beş
+bile
+bin
+bir
+birçok
+biri
+birkaç
+birkez
+birşey
+birşeyi
+biz
+bize
+bizden
+bizi
+bizim
+böyle
+böylece
+bu
+buna
+bunda
+bundan
+bunlar
+bunları
+bunların
+bunu
+bunun
+burada
+çok
+çünkü
+da
+daha
+dahi
+de
+defa
+değil
+diğer
+diye
+doksan
+dokuz
+dolayı
+dolayısıyla
+dört
+edecek
+eden
+ederek
+edilecek
+ediliyor
+edilmesi
+ediyor
+eğer
+elli
+en
+etmesi
+etti
+ettiği
+ettiğini
+gibi
+göre
+halen
+hangi
+hatta
+hem
+henüz
+hep
+hepsi
+her
+herhangi
+herkesin
+hiç
+hiçbir
+için
+iki
+ile
+ilgili
+ise
+işte
+itibaren
+itibariyle
+kadar
+karşın
+katrilyon
+kendi
+kendilerine
+kendini
+kendisi
+kendisine
+kendisini
+kez
+ki
+kim
+kimden
+kime
+kimi
+kimse
+kırk
+milyar
+milyon
+mu
+mü
+mı
+nasıl
+ne
+neden
+nedenle
+nerde
+nerede
+nereye
+niye
+niçin
+o
+olan
+olarak
+oldu
+olduğu
+olduğunu
+olduklarını
+olmadı
+olmadığı
+olmak
+olması
+olmayan
+olmaz
+olsa
+olsun
+olup
+olur
+olursa
+oluyor
+on
+ona
+ondan
+onlar
+onlardan
+onları
+onların
+onu
+onun
+otuz
+oysa
+öyle
+pek
+rağmen
+sadece
+sanki
+sekiz
+seksen
+sen
+senden
+seni
+senin
+siz
+sizden
+sizi
+sizin
+şey
+şeyden
+şeyi
+şeyler
+şöyle
+şu
+şuna
+şunda
+şundan
+şunları
+şunu
+tarafından
+trilyon
+tüm
+üç
+üzere
+var
+vardı
+ve
+veya
+ya
+yani
+yapacak
+yapılan
+yapılması
+yapıyor
+yapmak
+yaptı
+yaptığı
+yaptığını
+yaptıkları
+yedi
+yerine
+yetmiş
+yine
+yirmi
+yoksa
+yüz
+zaten

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/lang/userdict_ja.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/lang/userdict_ja.txt b/solr/core/src/test-files/solr/configsets/_default/conf/lang/userdict_ja.txt
new file mode 100644
index 0000000..6f0368e
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/lang/userdict_ja.txt
@@ -0,0 +1,29 @@
+#
+# This is a sample user dictionary for Kuromoji (JapaneseTokenizer)
+#
+# Add entries to this file in order to override the statistical model in terms
+# of segmentation, readings and part-of-speech tags.  Notice that entries do
+# not have weights since they are always used when found.  This is by-design
+# in order to maximize ease-of-use.
+#
+# Entries are defined using the following CSV format:
+#  <text>,<token 1> ... <token n>,<reading 1> ... <reading n>,<part-of-speech tag>
+#
+# Notice that a single half-width space separates tokens and readings, and
+# that the number tokens and readings must match exactly.
+#
+# Also notice that multiple entries with the same <text> is undefined.
+#
+# Whitespace only lines are ignored.  Comments are not allowed on entry lines.
+#
+
+# Custom segmentation for kanji compounds
+日本経済新聞,日本 経済 新聞,ニホン ケイザイ シンブン,カスタム名詞
+関西国際空港,関西 国際 空港,カンサイ コクサイ クウコウ,カスタム名詞
+
+# Custom segmentation for compound katakana
+トートバッグ,トート バッグ,トート バッグ,かずカナ名詞
+ショルダーバッグ,ショルダー バッグ,ショルダー バッグ,かずカナ名詞
+
+# Custom reading for former sumo wrestler
+朝青龍,朝青龍,アサショウリュウ,カスタム人名


[26/53] [abbrv] lucene-solr:feature/autoscaling: LUCENE-5822 Add markdown-compatible README.md

Posted by sh...@apache.org.
LUCENE-5822 Add markdown-compatible README.md

Signed-off-by: Mike Drob <md...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/2e1c5063
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/2e1c5063
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/2e1c5063

Branch: refs/heads/feature/autoscaling
Commit: 2e1c5063a5cdd76098730265dc551c43ad8526ae
Parents: 15118d4
Author: Jason Gerlowski <je...@us.ibm.com>
Authored: Tue Jun 27 18:04:15 2017 -0400
Committer: Mike Drob <md...@apache.org>
Committed: Fri Jun 30 10:57:09 2017 -0500

----------------------------------------------------------------------
 README.md          | 103 ++++++++++++++++++++++++++++++++++++++++++++++++
 README.txt         |  13 ------
 lucene/CHANGES.txt |   2 +
 3 files changed, 105 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2e1c5063/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..7181297
--- /dev/null
+++ b/README.md
@@ -0,0 +1,103 @@
+<!--
+    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.
+ -->
+
+# Apache Lucene and Solr
+
+Apache Lucene is a high-performance, full featured text search engine library
+written in Java.
+
+Apache Solr is an enterprise search platform written using Apache Lucene.
+Major features include full-text search, index replication and sharding, and
+result faceting and highlighting.
+
+## Online Documentation
+
+This README file only contains basic setup instructions.  For more
+comprehensive documentation, visit:
+
+- Lucene: <http://lucene.apache.org/core/documentation.html>
+- Solr: <http://lucene.apache.org/solr/guide/>
+
+## Building Lucene/Solr
+
+(You do not need to do this if you downloaded a pre-built package.)
+
+Lucene and Solr are built using [Apache Ant](http://ant.apache.org/).  To build
+Lucene and Solr, run:
+
+`ant compile`
+
+The Solr server can then be packaged and prepared for startup by running the
+following command from the `solr/` directory:
+
+`ant server`
+
+## Running Solr
+
+After [building Solr](#building-lucene-solr), the server can be started using
+the `bin/solr` control scripts.  Solr can be run in either standalone or
+distributed (SolrCloud mode).
+
+To run Solr in standalone mode, run the following command from the `solr/`
+directory:
+
+`bin/solr start`
+
+To run Solr in SolrCloud mode, run the following command from the `solr/`
+directory:
+
+`bin/solr start -c`
+
+The `bin/solr` control script allows heavy modification of the started Solr.
+Common options are described in some detail in solr/README.txt.  For an
+exhaustive treatment of options, run `bin/solr start -h` from the `solr/`
+directory.
+
+## Development/IDEs
+
+Ant can be used to generate project files compatible with most common IDEs.
+Run the ant command corresponding to your IDE of choice before attempting to
+import Lucene/Solr.
+
+- *Eclipse* - `ant eclipse`
+- *IntelliJ* - `ant idea`
+- *Netbeans* - `ant netbeans`
+
+## Running Tests
+
+The standard test suite can be run with the command:
+
+`ant test`
+
+Like Solr itself, the test-running can be customized or tailored in a number or
+ways.  For an exhaustive discussion of the options available, run:
+
+`ant test-help`
+
+## Contributing
+
+Please review the [Contributing to Solr
+Guide](https://wiki.apache.org/solr/HowToContribute) for information on
+contributing.
+
+## Discussion and Support
+
+- [Users Mailing List](http://lucene.apache.org/solr/community.html#solr-user-list-solr-userluceneapacheorg)
+- [Developers Mailing List](http://lucene.apache.org/solr/community.html#developer-list-devluceneapacheorg)
+- [Lucene Issue Tracker](https://issues.apache.org/jira/browse/LUCENE)
+- [Solr Issue Tracker](https://issues.apache.org/jira/browse/SOLR)
+- IRC: `#solr` and `#solr-dev` on freenode.net

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2e1c5063/README.txt
----------------------------------------------------------------------
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 3599b5b..0000000
--- a/README.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Apache Lucene/Solr
-
-lucene/ is a search engine library
-solr/ is a search engine server that uses lucene
-
-To compile the sources run 'ant compile'
-To run all the tests run 'ant test'
-To setup your ide run 'ant idea', 'ant netbeans', or 'ant eclipse'
-For Maven info, see dev-tools/maven/README.maven
-
-For more information on how to contribute see:
-http://wiki.apache.org/lucene-java/HowToContribute
-http://wiki.apache.org/solr/HowToContribute

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2e1c5063/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 69ba53f..909b6ce 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -167,6 +167,8 @@ Other
   resolved against Lucene's class loader by default. Please use another builder
   method to change to a custom classloader.  (Uwe Schindler)
 
+* LUCENE-5822: Convert README to Markdown (Jason Gerlowski via Mike Drob)
+
 ======================= Lucene 6.7.0 =======================
 
 New Features


[07/53] [abbrv] lucene-solr:feature/autoscaling: minor doc change for chroot in CDCR

Posted by sh...@apache.org.
minor doc change for chroot in CDCR


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/d0c86d07
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/d0c86d07
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/d0c86d07

Branch: refs/heads/feature/autoscaling
Commit: d0c86d078e8dab4c4ea8e5b19fa33f4fd648d8c3
Parents: c98e2a5
Author: Erick Erickson <er...@apache.org>
Authored: Wed Jun 28 19:31:37 2017 -0700
Committer: Erick Erickson <er...@apache.org>
Committed: Wed Jun 28 19:31:37 2017 -0700

----------------------------------------------------------------------
 .../solr-ref-guide/src/cross-data-center-replication-cdcr.adoc | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d0c86d07/solr/solr-ref-guide/src/cross-data-center-replication-cdcr.adoc
----------------------------------------------------------------------
diff --git a/solr/solr-ref-guide/src/cross-data-center-replication-cdcr.adoc b/solr/solr-ref-guide/src/cross-data-center-replication-cdcr.adoc
index 6772955..bffa71f 100644
--- a/solr/solr-ref-guide/src/cross-data-center-replication-cdcr.adoc
+++ b/solr/solr-ref-guide/src/cross-data-center-replication-cdcr.adoc
@@ -181,7 +181,11 @@ Here is a sample of a source configuration file, a section in `solrconfig.xml`.
 ----
 <requestHandler name="/cdcr" class="solr.CdcrRequestHandler">
   <lst name="replica">
-    <str name="zkHost">10.240.18.211:2181</str>
+    <str name="zkHost">10.240.18.211:2181,10.240.18.212:2181</str>
+    <!--
+    If you have chrooted your Solr information at the target you must include the chroot, for example:
+    <str name="zkHost">10.240.18.211:2181,10.240.18.212:2181/solr</str>
+    -->
     <str name="source">collection1</str>
     <str name="target">collection1</str>
   </lst>


[25/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-1095: Refactor code to standardize replica assignment

Posted by sh...@apache.org.
SOLR-1095: Refactor code to standardize replica assignment


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/15118d40
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/15118d40
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/15118d40

Branch: refs/heads/feature/autoscaling
Commit: 15118d40c55774df8da6663b38dcc956651cfa04
Parents: 196d84b
Author: Noble Paul <no...@apache.org>
Authored: Fri Jun 30 15:50:23 2017 +0930
Committer: Noble Paul <no...@apache.org>
Committed: Fri Jun 30 15:50:23 2017 +0930

----------------------------------------------------------------------
 .../cloud/OverseerCollectionMessageHandler.java | 90 --------------------
 1 file changed, 90 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/15118d40/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java b/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
index c6051d7..600e6da 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
@@ -19,7 +19,6 @@ package org.apache.solr.cloud;
 import java.io.Closeable;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -37,16 +36,12 @@ import com.google.common.collect.ImmutableMap;
 import org.apache.commons.lang.StringUtils;
 import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.cloud.autoscaling.Policy;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient.RemoteSolrException;
 import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.client.solrj.response.UpdateResponse;
 import org.apache.solr.cloud.overseer.OverseerAction;
-import org.apache.solr.cloud.rule.ReplicaAssigner;
-import org.apache.solr.cloud.rule.ReplicaAssigner.Position;
-import org.apache.solr.cloud.rule.Rule;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.ClusterState;
@@ -93,7 +88,6 @@ import static org.apache.solr.common.cloud.ZkStateReader.PROPERTY_VALUE_PROP;
 import static org.apache.solr.common.cloud.ZkStateReader.REJOIN_AT_HEAD_PROP;
 import static org.apache.solr.common.cloud.ZkStateReader.REPLICA_PROP;
 import static org.apache.solr.common.cloud.ZkStateReader.SHARD_ID_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.SOLR_AUTOSCALING_CONF_PATH;
 import static org.apache.solr.common.params.CollectionParams.CollectionAction.*;
 import static org.apache.solr.common.params.CommonAdminParams.ASYNC;
 import static org.apache.solr.common.params.CommonParams.NAME;
@@ -632,30 +626,6 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler
     }
   }
 
-  static List<String> getLiveOrLiveAndCreateNodeSetList(final Set<String> liveNodes, final ZkNodeProps message, final Random random) {
-    // TODO: add smarter options that look at the current number of cores per
-    // node?
-    // for now we just go random (except when createNodeSet and createNodeSet.shuffle=false are passed in)
-
-    List<String> nodeList;
-
-    final String createNodeSetStr = message.getStr(CREATE_NODE_SET);
-    final List<String> createNodeList = (createNodeSetStr == null)?null:StrUtils.splitSmart((CREATE_NODE_SET_EMPTY.equals(createNodeSetStr)?"":createNodeSetStr), ",", true);
-
-    if (createNodeList != null) {
-      nodeList = new ArrayList<>(createNodeList);
-      nodeList.retainAll(liveNodes);
-      if (message.getBool(CREATE_NODE_SET_SHUFFLE, CREATE_NODE_SET_SHUFFLE_DEFAULT)) {
-        Collections.shuffle(nodeList, random);
-      }
-    } else {
-      nodeList = new ArrayList<>(liveNodes);
-      Collections.shuffle(nodeList, random);
-    }
-
-    return nodeList;
-  }
-
 
   private void modifyCollection(ClusterState clusterState, ZkNodeProps message, NamedList results)
       throws KeeperException, InterruptedException {
@@ -704,66 +674,6 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler
     commandMap.get(DELETE).call(zkStateReader.getClusterState(), new ZkNodeProps(props), results);
   }
 
-  Map<Position, String> identifyNodes(ClusterState clusterState,
-                                      List<String> nodeList,
-                                      String collectionName,
-                                      ZkNodeProps message,
-                                      List<String> shardNames,
-                                      int numNrtReplicas, 
-                                      int numTlogReplicas,
-                                      int numPullReplicas) throws KeeperException, InterruptedException {
-    List<Map> rulesMap = (List) message.get("rule");
-    String policyName = message.getStr(POLICY);
-    Map autoScalingJson = Utils.getJson(zkStateReader.getZkClient(), SOLR_AUTOSCALING_CONF_PATH, true);
-
-    if (rulesMap == null && policyName == null) {
-      int i = 0;
-      Map<Position, String> result = new HashMap<>();
-      for (String aShard : shardNames) {
-        for (int j = 0; j < numNrtReplicas; j++){
-          result.put(new Position(aShard, j, Replica.Type.NRT), nodeList.get(i % nodeList.size()));
-          i++;
-        }
-        for (int j = 0; j < numTlogReplicas; j++){
-          result.put(new Position(aShard, j, Replica.Type.TLOG), nodeList.get(i % nodeList.size()));
-          i++;
-        }
-        for (int j = 0; j < numPullReplicas; j++){
-          result.put(new Position(aShard, j, Replica.Type.PULL), nodeList.get(i % nodeList.size()));
-          i++;
-        }
-      }
-      return result;
-    } else {
-      if (numTlogReplicas + numPullReplicas != 0) {
-        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
-            Replica.Type.TLOG + " or " + Replica.Type.PULL + " replica types not supported with placement rules or cluster policies");
-      }
-    }
-
-    if (policyName != null || autoScalingJson.get(Policy.CLUSTER_POLICY) != null) {
-      return Assign.getPositionsUsingPolicy(collectionName,
-          shardNames, numNrtReplicas, policyName, zkStateReader, nodeList);
-
-    } else {
-      List<Rule> rules = new ArrayList<>();
-      for (Object map : rulesMap) rules.add(new Rule((Map) map));
-
-      Map<String, Integer> sharVsReplicaCount = new HashMap<>();
-
-      for (String shard : shardNames) sharVsReplicaCount.put(shard, numNrtReplicas);
-      ReplicaAssigner replicaAssigner = new ReplicaAssigner(rules,
-          sharVsReplicaCount,
-          (List<Map>) message.get(SNITCH),
-          new HashMap<>(),//this is a new collection. So, there are no nodes in any shard
-          nodeList,
-          overseer.getZkController().getCoreContainer(),
-          clusterState);
-
-      return replicaAssigner.getNodeMappings();
-    }
-  }
-
   Map<String, Replica> waitToSeeReplicasInState(String collectionName, Collection<String> coreNames) throws InterruptedException {
     Map<String, Replica> result = new HashMap<>();
     TimeOut timeout = new TimeOut(30, TimeUnit.SECONDS);


[46/53] [abbrv] lucene-solr:feature/autoscaling: Remove unnecessary backward compatibility.

Posted by sh...@apache.org.
Remove unnecessary backward compatibility.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/bc9c4144
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/bc9c4144
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/bc9c4144

Branch: refs/heads/feature/autoscaling
Commit: bc9c4144dfbe209d8982f786f6265c9f8d0167fb
Parents: 9ca3dd2
Author: Adrien Grand <jp...@gmail.com>
Authored: Mon Jul 3 14:17:09 2017 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Mon Jul 3 14:17:09 2017 +0200

----------------------------------------------------------------------
 .../org/apache/lucene/index/CheckIndex.java     | 47 +++++++++-----------
 .../org/apache/lucene/index/IndexWriter.java    |  6 +--
 .../org/apache/lucene/index/SegmentInfos.java   |  2 +-
 .../search/similarities/BM25Similarity.java     | 38 ++++------------
 .../search/similarities/SimilarityBase.java     | 25 +++--------
 .../search/similarities/TFIDFSimilarity.java    | 25 ++---------
 .../java/org/apache/lucene/util/Version.java    | 13 ------
 .../search/similarities/TestBM25Similarity.java | 16 -------
 .../similarities/TestClassicSimilarity.java     | 33 +-------------
 .../search/similarities/TestSimilarityBase.java | 10 -----
 .../java/org/apache/lucene/util/TestUtil.java   |  4 +-
 .../solr/schema/FieldTypePluginLoader.java      |  6 +--
 .../org/apache/solr/schema/IndexSchema.java     |  4 +-
 .../apache/solr/schema/IndexSchemaFactory.java  |  9 +---
 .../similarities/SchemaSimilarityFactory.java   |  4 +-
 .../configsets/_default/conf/solrconfig.xml     |  2 +-
 .../TestNonDefinedSimilarityFactory.java        | 10 -----
 17 files changed, 54 insertions(+), 200 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
index e448d81..e605e98 100644
--- a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
+++ b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
@@ -744,13 +744,13 @@ public final class CheckIndex implements Closeable {
           segInfoStat.fieldNormStatus = testFieldNorms(reader, infoStream, failFast);
 
           // Test the Term Index
-          segInfoStat.termIndexStatus = testPostings(reader, infoStream, verbose, failFast, version);
+          segInfoStat.termIndexStatus = testPostings(reader, infoStream, verbose, failFast);
 
           // Test Stored Fields
           segInfoStat.storedFieldStatus = testStoredFields(reader, infoStream, failFast);
 
           // Test Term Vectors
-          segInfoStat.termVectorStatus = testTermVectors(reader, infoStream, verbose, crossCheckTermVectors, failFast, version);
+          segInfoStat.termVectorStatus = testTermVectors(reader, infoStream, verbose, crossCheckTermVectors, failFast);
 
           // Test Docvalues
           segInfoStat.docValuesStatus = testDocValues(reader, infoStream, failFast);
@@ -1209,7 +1209,7 @@ public final class CheckIndex implements Closeable {
    * checks Fields api is consistent with itself.
    * searcher is optional, to verify with queries. Can be null.
    */
-  private static Status.TermIndexStatus checkFields(Fields fields, Bits liveDocs, int maxDoc, FieldInfos fieldInfos, boolean doPrint, boolean isVectors, PrintStream infoStream, boolean verbose, Version version) throws IOException {
+  private static Status.TermIndexStatus checkFields(Fields fields, Bits liveDocs, int maxDoc, FieldInfos fieldInfos, boolean doPrint, boolean isVectors, PrintStream infoStream, boolean verbose) throws IOException {
     // TODO: we should probably return our own stats thing...?!
     long startNS;
     if (doPrint) {
@@ -1465,20 +1465,17 @@ public final class CheckIndex implements Closeable {
               if (hasOffsets) {
                 int startOffset = postings.startOffset();
                 int endOffset = postings.endOffset();
-                // In Lucene 7 we fixed IndexWriter to also enforce term vector offsets
-                if (isVectors == false || version.onOrAfter(Version.LUCENE_7_0_0)) {
-                  if (startOffset < 0) {
-                    throw new RuntimeException("term " + term + ": doc " + doc + ": pos " + pos + ": startOffset " + startOffset + " is out of bounds");
-                  }
-                  if (startOffset < lastOffset) {
-                    throw new RuntimeException("term " + term + ": doc " + doc + ": pos " + pos + ": startOffset " + startOffset + " < lastStartOffset " + lastOffset + "; consider using the FixBrokenOffsets tool in Lucene's backward-codecs module to correct your index");
-                  }
-                  if (endOffset < 0) {
-                    throw new RuntimeException("term " + term + ": doc " + doc + ": pos " + pos + ": endOffset " + endOffset + " is out of bounds");
-                  }
-                  if (endOffset < startOffset) {
-                    throw new RuntimeException("term " + term + ": doc " + doc + ": pos " + pos + ": endOffset " + endOffset + " < startOffset " + startOffset);
-                  }
+                if (startOffset < 0) {
+                  throw new RuntimeException("term " + term + ": doc " + doc + ": pos " + pos + ": startOffset " + startOffset + " is out of bounds");
+                }
+                if (startOffset < lastOffset) {
+                  throw new RuntimeException("term " + term + ": doc " + doc + ": pos " + pos + ": startOffset " + startOffset + " < lastStartOffset " + lastOffset + "; consider using the FixBrokenOffsets tool in Lucene's backward-codecs module to correct your index");
+                }
+                if (endOffset < 0) {
+                  throw new RuntimeException("term " + term + ": doc " + doc + ": pos " + pos + ": endOffset " + endOffset + " is out of bounds");
+                }
+                if (endOffset < startOffset) {
+                  throw new RuntimeException("term " + term + ": doc " + doc + ": pos " + pos + ": endOffset " + endOffset + " < startOffset " + startOffset);
                 }
                 lastOffset = startOffset;
               }
@@ -1745,15 +1742,15 @@ public final class CheckIndex implements Closeable {
    * Test the term index.
    * @lucene.experimental
    */
-  public static Status.TermIndexStatus testPostings(CodecReader reader, PrintStream infoStream, Version version) throws IOException {
-    return testPostings(reader, infoStream, false, false, version);
+  public static Status.TermIndexStatus testPostings(CodecReader reader, PrintStream infoStream) throws IOException {
+    return testPostings(reader, infoStream, false, false);
   }
   
   /**
    * Test the term index.
    * @lucene.experimental
    */
-  public static Status.TermIndexStatus testPostings(CodecReader reader, PrintStream infoStream, boolean verbose, boolean failFast, Version version) throws IOException {
+  public static Status.TermIndexStatus testPostings(CodecReader reader, PrintStream infoStream, boolean verbose, boolean failFast) throws IOException {
 
     // TODO: we should go and verify term vectors match, if
     // crossCheckTermVectors is on...
@@ -1768,7 +1765,7 @@ public final class CheckIndex implements Closeable {
 
       final Fields fields = reader.getPostingsReader().getMergeInstance();
       final FieldInfos fieldInfos = reader.getFieldInfos();
-      status = checkFields(fields, reader.getLiveDocs(), maxDoc, fieldInfos, true, false, infoStream, verbose, version);
+      status = checkFields(fields, reader.getLiveDocs(), maxDoc, fieldInfos, true, false, infoStream, verbose);
     } catch (Throwable e) {
       if (failFast) {
         throw IOUtils.rethrowAlways(e);
@@ -2377,15 +2374,15 @@ public final class CheckIndex implements Closeable {
    * Test term vectors.
    * @lucene.experimental
    */
-  public static Status.TermVectorStatus testTermVectors(CodecReader reader, PrintStream infoStream, Version version) throws IOException {
-    return testTermVectors(reader, infoStream, false, false, false, version);
+  public static Status.TermVectorStatus testTermVectors(CodecReader reader, PrintStream infoStream) throws IOException {
+    return testTermVectors(reader, infoStream, false, false, false);
   }
 
   /**
    * Test term vectors.
    * @lucene.experimental
    */
-  public static Status.TermVectorStatus testTermVectors(CodecReader reader, PrintStream infoStream, boolean verbose, boolean crossCheckTermVectors, boolean failFast, Version version) throws IOException {
+  public static Status.TermVectorStatus testTermVectors(CodecReader reader, PrintStream infoStream, boolean verbose, boolean crossCheckTermVectors, boolean failFast) throws IOException {
     long startNS = System.nanoTime();
     final Status.TermVectorStatus status = new Status.TermVectorStatus();
     final FieldInfos fieldInfos = reader.getFieldInfos();
@@ -2425,7 +2422,7 @@ public final class CheckIndex implements Closeable {
           
           if (tfv != null) {
             // First run with no deletions:
-            checkFields(tfv, null, 1, fieldInfos, false, true, infoStream, verbose, version);
+            checkFields(tfv, null, 1, fieldInfos, false, true, infoStream, verbose);
             
             // Only agg stats if the doc is live:
             final boolean doStats = liveDocs == null || liveDocs.get(j);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
index 26a25a5..c2cded7 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
@@ -1170,9 +1170,7 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
     }
   }
 
-  /** Confirms that the incoming index sort (if any) matches the existing index sort (if any).
-   *  This is unfortunately just best effort, because it could be the old index only has unsorted flushed segments built
-   *  before {@link Version#LUCENE_6_5_0} (flushed segments are sorted in Lucene 7.0).  */
+  /** Confirms that the incoming index sort (if any) matches the existing index sort (if any).  */
   private void validateIndexSort() throws CorruptIndexException {
     Sort indexSort = config.getIndexSort();
     if (indexSort != null) {
@@ -1180,7 +1178,7 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
         Sort segmentIndexSort = info.info.getIndexSort();
         if (segmentIndexSort != null && indexSort.equals(segmentIndexSort) == false) {
           throw new IllegalArgumentException("cannot change previous indexSort=" + segmentIndexSort + " (from segment=" + info + ") to new indexSort=" + indexSort);
-        } else if (segmentIndexSort == null && info.info.getVersion().onOrAfter(Version.LUCENE_6_5_0)) {
+        } else if (segmentIndexSort == null) {
           // Flushed segments are not sorted if they were built with a version prior to 6.5.0
           throw new CorruptIndexException("segment not sorted with indexSort=" + segmentIndexSort, info.info.toString());
         }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java b/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java
index e463259..e3761cc 100644
--- a/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java
+++ b/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java
@@ -312,7 +312,7 @@ public final class SegmentInfos implements Cloneable, Iterable<SegmentCommitInfo
     CodecUtil.checkIndexHeaderSuffix(input, Long.toString(generation, Character.MAX_RADIX));
 
     Version luceneVersion = Version.fromBits(input.readVInt(), input.readVInt(), input.readVInt());
-    if (luceneVersion.onOrAfter(Version.LUCENE_6_0_0) == false) {
+    if (luceneVersion.onOrAfter(Version.LUCENE_7_0_0) == false) {
       // TODO: should we check indexCreatedVersion instead?
       throw new IndexFormatTooOldException(input, "this index is too old (version: " + luceneVersion + ")");
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/lucene/core/src/java/org/apache/lucene/search/similarities/BM25Similarity.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/similarities/BM25Similarity.java b/lucene/core/src/java/org/apache/lucene/search/similarities/BM25Similarity.java
index e693b2b..35554e2 100644
--- a/lucene/core/src/java/org/apache/lucene/search/similarities/BM25Similarity.java
+++ b/lucene/core/src/java/org/apache/lucene/search/similarities/BM25Similarity.java
@@ -118,16 +118,9 @@ public class BM25Similarity extends Similarity {
   }
   
   /** Cache of decoded bytes. */
-  private static final float[] OLD_LENGTH_TABLE = new float[256];
   private static final float[] LENGTH_TABLE = new float[256];
 
   static {
-    for (int i = 1; i < 256; i++) {
-      float f = SmallFloat.byte315ToFloat((byte)i);
-      OLD_LENGTH_TABLE[i] = 1.0f / (f*f);
-    }
-    OLD_LENGTH_TABLE[0] = 1.0f / OLD_LENGTH_TABLE[255]; // otherwise inf
-
     for (int i = 0; i < 256; i++) {
       LENGTH_TABLE[i] = SmallFloat.byte4ToInt((byte) i);
     }
@@ -137,12 +130,7 @@ public class BM25Similarity extends Similarity {
   @Override
   public final long computeNorm(FieldInvertState state) {
     final int numTerms = discountOverlaps ? state.getLength() - state.getNumOverlap() : state.getLength();
-    int indexCreatedVersionMajor = state.getIndexCreatedVersionMajor();
-    if (indexCreatedVersionMajor >= 7) {
-      return SmallFloat.intToByte4(numTerms);
-    } else {
-      return SmallFloat.floatToByte315((float) (1 / Math.sqrt(numTerms)));
-    }
+    return SmallFloat.intToByte4(numTerms);
   }
 
   /**
@@ -205,19 +193,17 @@ public class BM25Similarity extends Similarity {
     Explanation idf = termStats.length == 1 ? idfExplain(collectionStats, termStats[0]) : idfExplain(collectionStats, termStats);
     float avgdl = avgFieldLength(collectionStats);
 
-    float[] oldCache = new float[256];
     float[] cache = new float[256];
     for (int i = 0; i < cache.length; i++) {
-      oldCache[i] = k1 * ((1 - b) + b * OLD_LENGTH_TABLE[i] / avgdl);
       cache[i] = k1 * ((1 - b) + b * LENGTH_TABLE[i] / avgdl);
     }
-    return new BM25Stats(collectionStats.field(), boost, idf, avgdl, oldCache, cache);
+    return new BM25Stats(collectionStats.field(), boost, idf, avgdl, cache);
   }
 
   @Override
   public final SimScorer simScorer(SimWeight stats, LeafReaderContext context) throws IOException {
     BM25Stats bm25stats = (BM25Stats) stats;
-    return new BM25DocScorer(bm25stats, context.reader().getMetaData().getCreatedVersionMajor(), context.reader().getNormValues(bm25stats.field));
+    return new BM25DocScorer(bm25stats, context.reader().getNormValues(bm25stats.field));
   }
   
   private class BM25DocScorer extends SimScorer {
@@ -229,17 +215,12 @@ public class BM25Similarity extends Similarity {
     /** precomputed norm[256] with k1 * ((1 - b) + b * dl / avgdl) */
     private final float[] cache;
     
-    BM25DocScorer(BM25Stats stats, int indexCreatedVersionMajor, NumericDocValues norms) throws IOException {
+    BM25DocScorer(BM25Stats stats, NumericDocValues norms) throws IOException {
       this.stats = stats;
       this.weightValue = stats.weight * (k1 + 1);
       this.norms = norms;
-      if (indexCreatedVersionMajor >= 7) {
-        lengthCache = LENGTH_TABLE;
-        cache = stats.cache;
-      } else {
-        lengthCache = OLD_LENGTH_TABLE;
-        cache = stats.oldCache;
-      }
+      lengthCache = LENGTH_TABLE;
+      cache = stats.cache;
     }
     
     @Override
@@ -287,16 +268,15 @@ public class BM25Similarity extends Similarity {
     /** field name, for pulling norms */
     private final String field;
     /** precomputed norm[256] with k1 * ((1 - b) + b * dl / avgdl)
-     *  for both OLD_LENGTH_TABLE and LENGTH_TABLE */
-    private final float[] oldCache, cache;
+     *  for LENGTH_TABLE */
+    private final float[] cache;
 
-    BM25Stats(String field, float boost, Explanation idf, float avgdl, float[] oldCache, float[] cache) {
+    BM25Stats(String field, float boost, Explanation idf, float avgdl, float[] cache) {
       this.field = field;
       this.boost = boost;
       this.idf = idf;
       this.avgdl = avgdl;
       this.weight = idf.getValue() * boost;
-      this.oldCache = oldCache;
       this.cache = cache;
     }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/lucene/core/src/java/org/apache/lucene/search/similarities/SimilarityBase.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/similarities/SimilarityBase.java b/lucene/core/src/java/org/apache/lucene/search/similarities/SimilarityBase.java
index fb34f07..46899a3 100644
--- a/lucene/core/src/java/org/apache/lucene/search/similarities/SimilarityBase.java
+++ b/lucene/core/src/java/org/apache/lucene/search/similarities/SimilarityBase.java
@@ -191,7 +191,6 @@ public abstract class SimilarityBase extends Similarity {
   
   @Override
   public final SimScorer simScorer(SimWeight stats, LeafReaderContext context) throws IOException {
-    int indexCreatedVersionMajor = context.reader().getMetaData().getCreatedVersionMajor();
     if (stats instanceof MultiSimilarity.MultiStats) {
       // a multi term query (e.g. phrase). return the summation, 
       // scoring almost as if it were boolean query
@@ -199,12 +198,12 @@ public abstract class SimilarityBase extends Similarity {
       SimScorer subScorers[] = new SimScorer[subStats.length];
       for (int i = 0; i < subScorers.length; i++) {
         BasicStats basicstats = (BasicStats) subStats[i];
-        subScorers[i] = new BasicSimScorer(basicstats, indexCreatedVersionMajor, context.reader().getNormValues(basicstats.field));
+        subScorers[i] = new BasicSimScorer(basicstats, context.reader().getNormValues(basicstats.field));
       }
       return new MultiSimilarity.MultiSimScorer(subScorers);
     } else {
       BasicStats basicstats = (BasicStats) stats;
-      return new BasicSimScorer(basicstats, indexCreatedVersionMajor, context.reader().getNormValues(basicstats.field));
+      return new BasicSimScorer(basicstats, context.reader().getNormValues(basicstats.field));
     }
   }
   
@@ -218,16 +217,9 @@ public abstract class SimilarityBase extends Similarity {
   // ------------------------------ Norm handling ------------------------------
   
   /** Cache of decoded bytes. */
-  private static final float[] OLD_LENGTH_TABLE = new float[256];
   private static final float[] LENGTH_TABLE = new float[256];
 
   static {
-    for (int i = 1; i < 256; i++) {
-      float f = SmallFloat.byte315ToFloat((byte)i);
-      OLD_LENGTH_TABLE[i] = 1.0f / (f*f);
-    }
-    OLD_LENGTH_TABLE[0] = 1.0f / OLD_LENGTH_TABLE[255]; // otherwise inf
-
     for (int i = 0; i < 256; i++) {
       LENGTH_TABLE[i] = SmallFloat.byte4ToInt((byte) i);
     }
@@ -241,12 +233,7 @@ public abstract class SimilarityBase extends Similarity {
       numTerms = state.getLength() - state.getNumOverlap();
     else
       numTerms = state.getLength();
-    int indexCreatedVersionMajor = state.getIndexCreatedVersionMajor();
-    if (indexCreatedVersionMajor >= 7) {
-      return SmallFloat.intToByte4(numTerms);
-    } else {
-      return SmallFloat.floatToByte315((float) (1 / Math.sqrt(numTerms)));
-    }
+    return SmallFloat.intToByte4(numTerms);
   }
 
   // ----------------------------- Static methods ------------------------------
@@ -268,12 +255,10 @@ public abstract class SimilarityBase extends Similarity {
   final class BasicSimScorer extends SimScorer {
     private final BasicStats stats;
     private final NumericDocValues norms;
-    private final float[] normCache;
     
-    BasicSimScorer(BasicStats stats, int indexCreatedVersionMajor, NumericDocValues norms) throws IOException {
+    BasicSimScorer(BasicStats stats, NumericDocValues norms) throws IOException {
       this.stats = stats;
       this.norms = norms;
-      this.normCache = indexCreatedVersionMajor >= 7 ? LENGTH_TABLE : OLD_LENGTH_TABLE;
     }
 
     float getLengthValue(int doc) throws IOException {
@@ -281,7 +266,7 @@ public abstract class SimilarityBase extends Similarity {
         return 1F;
       }
       if (norms.advanceExact(doc)) {
-        return normCache[Byte.toUnsignedInt((byte) norms.longValue())];
+        return LENGTH_TABLE[Byte.toUnsignedInt((byte) norms.longValue())];
       } else {
         return 0;
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/lucene/core/src/java/org/apache/lucene/search/similarities/TFIDFSimilarity.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/similarities/TFIDFSimilarity.java b/lucene/core/src/java/org/apache/lucene/search/similarities/TFIDFSimilarity.java
index 14b3c3f..dba1c61 100644
--- a/lucene/core/src/java/org/apache/lucene/search/similarities/TFIDFSimilarity.java
+++ b/lucene/core/src/java/org/apache/lucene/search/similarities/TFIDFSimilarity.java
@@ -376,15 +376,6 @@ import org.apache.lucene.util.SmallFloat;
  */
 public abstract class TFIDFSimilarity extends Similarity {
 
-  /** Cache of decoded bytes. */
-  static final float[] OLD_NORM_TABLE = new float[256];
-
-  static {
-    for (int i = 0; i < 256; i++) {
-      OLD_NORM_TABLE[i] = SmallFloat.byte315ToFloat((byte)i);
-    }
-  }
-
   /**
    * Sole constructor. (For invocation by subclass 
    * constructors, typically implicit.)
@@ -516,11 +507,7 @@ public abstract class TFIDFSimilarity extends Similarity {
       numTerms = state.getLength() - state.getNumOverlap();
     else
       numTerms = state.getLength();
-    if (state.getIndexCreatedVersionMajor() >= 7) {
-      return SmallFloat.intToByte4(numTerms);
-    } else {
-      return SmallFloat.floatToByte315(lengthNorm(numTerms));
-    }
+    return SmallFloat.intToByte4(numTerms);
   }
  
   /** Computes the amount of a sloppy phrase match, based on an edit distance.
@@ -569,14 +556,8 @@ public abstract class TFIDFSimilarity extends Similarity {
   @Override
   public final SimScorer simScorer(SimWeight stats, LeafReaderContext context) throws IOException {
     IDFStats idfstats = (IDFStats) stats;
-    final float[] normTable;
-    if (context.reader().getMetaData().getCreatedVersionMajor() >= 7) {
-      // the norms only encode the length, we need a translation table that depends on how lengthNorm is implemented
-      normTable = idfstats.normTable;
-    } else {
-      // the norm is directly encoded in the index
-      normTable = OLD_NORM_TABLE;
-    }
+    // the norms only encode the length, we need a translation table that depends on how lengthNorm is implemented
+    final float[] normTable = idfstats.normTable;
     return new TFIDFSimScorer(idfstats, context.reader().getNormValues(idfstats.field), normTable);
   }
   

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/lucene/core/src/java/org/apache/lucene/util/Version.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/Version.java b/lucene/core/src/java/org/apache/lucene/util/Version.java
index 634caee..81d02f2 100644
--- a/lucene/core/src/java/org/apache/lucene/util/Version.java
+++ b/lucene/core/src/java/org/apache/lucene/util/Version.java
@@ -32,19 +32,6 @@ import java.util.Locale;
  */
 public final class Version {
 
-  /** Match settings and bugs in Lucene's 6.0 release.
-   * @deprecated (7.0.0) Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_0_0 = new Version(6, 0, 0);
-
-  /**
-   * Match settings and bugs in Lucene's 6.5.0 release.
-   * @deprecated Use latest
-   */
-  @Deprecated
-  public static final Version LUCENE_6_5_0 = new Version(6, 5, 0);
-
   /**
    * Match settings and bugs in Lucene's 7.0.0 release.
    * @deprecated (8.0.0) Use latest

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/lucene/core/src/test/org/apache/lucene/search/similarities/TestBM25Similarity.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/similarities/TestBM25Similarity.java b/lucene/core/src/test/org/apache/lucene/search/similarities/TestBM25Similarity.java
index 7c11d6b..4c6382b 100644
--- a/lucene/core/src/test/org/apache/lucene/search/similarities/TestBM25Similarity.java
+++ b/lucene/core/src/test/org/apache/lucene/search/similarities/TestBM25Similarity.java
@@ -17,24 +17,8 @@
 package org.apache.lucene.search.similarities;
 
 
-import java.io.IOException;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field.Store;
-import org.apache.lucene.document.TextField;
-import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.SegmentInfos;
-import org.apache.lucene.index.Term;
 import org.apache.lucene.search.Explanation;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.Version;
 
 public class TestBM25Similarity extends LuceneTestCase {
   

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/lucene/core/src/test/org/apache/lucene/search/similarities/TestClassicSimilarity.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/similarities/TestClassicSimilarity.java b/lucene/core/src/test/org/apache/lucene/search/similarities/TestClassicSimilarity.java
index 2b36ed2..e7a5606 100644
--- a/lucene/core/src/test/org/apache/lucene/search/similarities/TestClassicSimilarity.java
+++ b/lucene/core/src/test/org/apache/lucene/search/similarities/TestClassicSimilarity.java
@@ -19,29 +19,24 @@ package org.apache.lucene.search.similarities;
 
 import java.io.IOException;
 import java.util.Arrays;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
 
 import org.apache.lucene.document.Document;
-import org.apache.lucene.document.StringField;
-import org.apache.lucene.document.TextField;
 import org.apache.lucene.document.Field.Store;
+import org.apache.lucene.document.StringField;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.FieldInvertState;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.MultiReader;
-import org.apache.lucene.index.SegmentInfos;
 import org.apache.lucene.index.Term;
+import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.DisjunctionMaxQuery;
-import org.apache.lucene.search.Explanation;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.search.similarities.TFIDFSimilarity.IDFStats;
-import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
@@ -163,16 +158,6 @@ public class TestClassicSimilarity extends LuceneTestCase {
   
   public void testSaneNormValues() throws IOException {
     ClassicSimilarity sim = new ClassicSimilarity();
-    for (int i = 0; i < 256; i++) {
-      float boost = TFIDFSimilarity.OLD_NORM_TABLE[i];
-      assertFalse("negative boost: " + boost + ", byte=" + i, boost < 0.0f);
-      assertFalse("inf bost: " + boost + ", byte=" + i, Float.isInfinite(boost));
-      assertFalse("nan boost for byte=" + i, Float.isNaN(boost));
-      if (i > 0) {
-        assertTrue("boost is not increasing: " + boost + ",byte=" + i, boost > TFIDFSimilarity.OLD_NORM_TABLE[i-1]);
-      }
-    }
-
     TFIDFSimilarity.IDFStats stats = (IDFStats) sim.computeWeight(1f, new IndexSearcher(new MultiReader()).collectionStatistics("foo"));
     for (int i = 0; i < 256; i++) {
       float boost = stats.normTable[i];
@@ -185,20 +170,6 @@ public class TestClassicSimilarity extends LuceneTestCase {
     }
   }
 
-  private static Explanation findExplanation(Explanation expl, String text) {
-    if (expl.getDescription().startsWith(text)) {
-      return expl;
-    } else {
-      for (Explanation sub : expl.getDetails()) {
-        Explanation match = findExplanation(sub, text);
-        if (match != null) {
-          return match;
-        }
-      }
-    }
-    return null;
-  }
-
   public void testSameNormsAsBM25() {
     ClassicSimilarity sim1 = new ClassicSimilarity();
     BM25Similarity sim2 = new BM25Similarity();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java b/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java
index c5472fa..8fbd69d 100644
--- a/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java
+++ b/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java
@@ -20,23 +20,16 @@ package org.apache.lucene.search.similarities;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
 import org.apache.lucene.document.TextField;
-import org.apache.lucene.document.Field.Store;
-import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.FieldInvertState;
 import org.apache.lucene.index.IndexOptions;
 import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.RandomIndexWriter;
-import org.apache.lucene.index.SegmentInfos;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.index.TermContext;
 import org.apache.lucene.search.CollectionStatistics;
 import org.apache.lucene.search.Explanation;
 import org.apache.lucene.search.IndexSearcher;
@@ -44,14 +37,11 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.TermStatistics;
 import org.apache.lucene.search.TopDocs;
-import org.apache.lucene.search.similarities.Similarity.SimWeight;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.Version;
 
-import com.carrotsearch.randomizedtesting.generators.RandomPicks;
-
 /**
  * Tests the {@link SimilarityBase}-based Similarities. Contains unit tests and 
  * integration tests for all Similarities and correctness tests for a select

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java b/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java
index 0ea90fc..d3351ab 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java
@@ -334,9 +334,9 @@ public final class TestUtil {
     CheckIndex.testLiveDocs(codecReader, infoStream, true);
     CheckIndex.testFieldInfos(codecReader, infoStream, true);
     CheckIndex.testFieldNorms(codecReader, infoStream, true);
-    CheckIndex.testPostings(codecReader, infoStream, false, true, Version.LUCENE_7_0_0);
+    CheckIndex.testPostings(codecReader, infoStream, false, true);
     CheckIndex.testStoredFields(codecReader, infoStream, true);
-    CheckIndex.testTermVectors(codecReader, infoStream, false, crossCheckTermVectors, true, Version.LUCENE_7_0_0);
+    CheckIndex.testTermVectors(codecReader, infoStream, false, crossCheckTermVectors, true);
     CheckIndex.testDocValues(codecReader, infoStream, true);
     CheckIndex.testPoints(codecReader, infoStream, true);
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java b/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
index f332934..2cddb8f 100644
--- a/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
+++ b/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
@@ -421,10 +421,10 @@ public final class FieldTypePluginLoader
     Version version = (configuredVersion != null) ?
             Config.parseLuceneVersionString(configuredVersion) : schema.getDefaultLuceneMatchVersion();
 
-    if (!version.onOrAfter(Version.LUCENE_6_0_0)) {
+    if (!version.onOrAfter(Version.LUCENE_7_0_0)) {
       log.warn(pluginClassName + " is using deprecated " + version +
-        " emulation. You should at some point declare and reindex to at least 6.0, because " +
-        "5.x emulation is deprecated and will be removed in 7.0");
+        " emulation. You should at some point declare and reindex to at least 7.0, because " +
+        "6.x emulation is deprecated and will be removed in 8.0");
     }
     return version;
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/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 36efbcf..94884a2 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -68,7 +68,6 @@ import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.response.SchemaXmlWriter;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.search.similarities.ClassicSimilarityFactory;
 import org.apache.solr.search.similarities.SchemaSimilarityFactory;
 import org.apache.solr.util.DOMUtil;
 import org.apache.solr.util.plugin.SolrCoreAware;
@@ -475,8 +474,7 @@ public class IndexSchema {
       Node node = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);
       similarityFactory = readSimilarity(loader, node);
       if (similarityFactory == null) {
-        final boolean modernSim = getDefaultLuceneMatchVersion().onOrAfter(Version.LUCENE_6_0_0);
-        final Class simClass = modernSim ? SchemaSimilarityFactory.class : ClassicSimilarityFactory.class;
+        final Class<?> simClass = SchemaSimilarityFactory.class;
         // use the loader to ensure proper SolrCoreAware handling
         similarityFactory = loader.newInstance(simClass.getName(), SimilarityFactory.class);
         similarityFactory.init(new ModifiableSolrParams());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/solr/core/src/java/org/apache/solr/schema/IndexSchemaFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchemaFactory.java b/solr/core/src/java/org/apache/solr/schema/IndexSchemaFactory.java
index 83750c3..fda4868 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchemaFactory.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchemaFactory.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 package org.apache.solr.schema;
-import org.apache.lucene.util.Version;
+
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.core.PluginInfo;
@@ -65,12 +65,7 @@ public abstract class IndexSchemaFactory implements NamedListInitializedPlugin {
       factory = config.getResourceLoader().newInstance(info.className, IndexSchemaFactory.class);
       factory.init(info.initArgs);
     } else {
-      if (config.luceneMatchVersion.onOrAfter(Version.LUCENE_6_0_0)) {
-        // ManagedIndexSchemaFactory is SolrCoreAware so we must create using the resource loader
-        factory = config.getResourceLoader().newInstance(ManagedIndexSchemaFactory.class.getName(), IndexSchemaFactory.class);
-      } else {
-        factory = new ClassicIndexSchemaFactory();
-      }
+      factory = config.getResourceLoader().newInstance(ManagedIndexSchemaFactory.class.getName(), IndexSchemaFactory.class);
     }
     IndexSchema schema = factory.create(resourceName, config);
     return schema;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java
index 3c942d2..0aea8ed 100644
--- a/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java
+++ b/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java
@@ -114,9 +114,7 @@ public class SchemaSimilarityFactory extends SimilarityFactory implements SolrCo
       Similarity defaultSim = null;
       if (null == defaultSimFromFieldType) {
         // nothing configured, choose a sensible implicit default...
-        defaultSim = this.core.getSolrConfig().luceneMatchVersion.onOrAfter(Version.LUCENE_6_0_0)
-          ? new BM25Similarity()
-          : new ClassicSimilarity();
+        defaultSim = new BM25Similarity();
       } else {
         FieldType defSimFT = core.getLatestSchema().getFieldTypeByName(defaultSimFromFieldType);
         if (null == defSimFT) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml b/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml
index f75303f..c885f06 100644
--- a/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml
@@ -35,7 +35,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
   -->
-  <luceneMatchVersion>7.0.0</luceneMatchVersion>
+  <luceneMatchVersion>8.0.0</luceneMatchVersion>
 
   <!-- <lib/> directives can be used to instruct Solr to load any Jars
        identified and use them to resolve any "plugins" specified in

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bc9c4144/solr/core/src/test/org/apache/solr/search/similarities/TestNonDefinedSimilarityFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/similarities/TestNonDefinedSimilarityFactory.java b/solr/core/src/test/org/apache/solr/search/similarities/TestNonDefinedSimilarityFactory.java
index 1560c18..7460652 100644
--- a/solr/core/src/test/org/apache/solr/search/similarities/TestNonDefinedSimilarityFactory.java
+++ b/solr/core/src/test/org/apache/solr/search/similarities/TestNonDefinedSimilarityFactory.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.search.similarities;
 
-import org.apache.lucene.search.similarities.ClassicSimilarity;
 import org.apache.lucene.search.similarities.BM25Similarity;
 import org.junit.After;
 
@@ -40,13 +39,4 @@ public class TestNonDefinedSimilarityFactory extends BaseSimilarityTestCase {
     BM25Similarity sim = getSimilarity("text", BM25Similarity.class);
     assertEquals(0.75F, sim.getB(), 0.0F);
   }
-  
-  public void testClassic() throws Exception {
-    // any value below 6.0 should have this behavior
-    System.setProperty("tests.luceneMatchVersion", "5.3");
-    initCore("solrconfig-basic.xml","schema-tiny.xml");
-    ClassicSimilarity sim = getSimilarity("text", ClassicSimilarity.class);
-    assertEquals(true, sim.getDiscountOverlaps());
-    System.clearProperty("tests.luceneMatchVersion");
-  }
 }


[03/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-6807: requestDispatcher/@handleSelect now defaults to false; stop using it. Deprecated StandardRequestHandler; stop using it.

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-hash.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-hash.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-hash.xml
index 94cceb61..cad70d8 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-hash.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-hash.xml
@@ -46,11 +46,11 @@
     </lst>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
   </requestDispatcher>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
   <!-- config for the admin interface -->
   <admin>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-headers.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-headers.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-headers.xml
index f7b4940..328fc9b 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-headers.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-headers.xml
@@ -24,7 +24,7 @@
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
   <searchComponent name="componentThatAddsHeader" class="org.apache.solr.servlet.ResponseHeaderTest$ComponentThatAddsHeader"/>
-  <requestHandler name="/withHeaders" class="solr.StandardRequestHandler">
+  <requestHandler name="/withHeaders" class="solr.SearchHandler">
     <arr name="first-components">
       <str>componentThatAddsHeader</str>
     </arr>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-highlight.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-highlight.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-highlight.xml
index 577f182..c714a41 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-highlight.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-highlight.xml
@@ -31,7 +31,7 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"/>
+  <requestHandler name="/select" class="solr.SearchHandler"/>
 
   <searchComponent class="solr.HighlightComponent" name="highlight">
     <highlighting class="org.apache.solr.highlight.DummyHighlighter">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-implicitproperties.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-implicitproperties.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-implicitproperties.xml
index d87d364..5ef9d72 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-implicitproperties.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-implicitproperties.xml
@@ -49,7 +49,7 @@
 
   </query>
 
-  <requestDispatcher handleSelect="false">
+  <requestDispatcher>
     <httpCaching never304="true"/>
   </requestDispatcher>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-infixsuggesters.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-infixsuggesters.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-infixsuggesters.xml
index 8fc42ff..a30186d 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-infixsuggesters.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-infixsuggesters.xml
@@ -25,7 +25,7 @@
 
   <updateHandler class="solr.DirectUpdateHandler2"/>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
   <searchComponent class="solr.SuggestComponent" name="analyzing_infix_suggester_random_short_dictionary">
     <lst name="suggester">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-logmergepolicyfactory.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-logmergepolicyfactory.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-logmergepolicyfactory.xml
index 27a1867..539fd5c 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-logmergepolicyfactory.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-logmergepolicyfactory.xml
@@ -32,6 +32,6 @@
     </mergePolicyFactory>
   </indexConfig>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
 
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-managed-schema-test.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-managed-schema-test.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-managed-schema-test.xml
index 22aeeda..666132f 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-managed-schema-test.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-managed-schema-test.xml
@@ -23,5 +23,5 @@
   <dataDir>${solr.data.dir:}</dataDir>
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-managed-schema.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-managed-schema.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-managed-schema.xml
index 146b154..739ad22 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-managed-schema.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-managed-schema.xml
@@ -60,7 +60,7 @@
     </updateLog> 
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
@@ -72,7 +72,7 @@
     </lst>
   </requestHandler>
 
-  <initParams path="standard">
+  <initParams path="/select">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-master-throttled.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master-throttled.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master-throttled.xml
index 516d504..4a53776 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master-throttled.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master-throttled.xml
@@ -28,7 +28,7 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
@@ -39,7 +39,7 @@
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
+  <requestHandler name="/defaults" class="solr.SearchHandler">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -48,7 +48,7 @@
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
+  <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -56,7 +56,7 @@
     </lst>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1"/>
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-master.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master.xml
index b1345ac..e501af2 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master.xml
@@ -28,7 +28,7 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
@@ -43,7 +43,7 @@
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
+  <requestHandler name="/defaults" class="solr.SearchHandler">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -52,7 +52,7 @@
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
+  <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -60,7 +60,7 @@
     </lst>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1"/>
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-master1-keepOneBackup.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master1-keepOneBackup.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master1-keepOneBackup.xml
index 69f7659..bcd7874 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master1-keepOneBackup.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master1-keepOneBackup.xml
@@ -27,7 +27,7 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
   <requestHandler name="/replication" class="solr.ReplicationHandler">
     <lst name="master">
@@ -39,7 +39,7 @@
   </requestHandler>
   
 
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1"/>
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-master1.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master1.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master1.xml
index db39b1f..9271686 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master1.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master1.xml
@@ -28,7 +28,7 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
@@ -41,7 +41,7 @@
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
+  <requestHandler name="/defaults" class="solr.SearchHandler">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -50,7 +50,7 @@
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
+  <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -58,7 +58,7 @@
     </lst>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1"/>
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-master2.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master2.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master2.xml
index 91923c9..55301c2 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master2.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master2.xml
@@ -27,7 +27,7 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
@@ -39,7 +39,7 @@
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
+  <requestHandler name="/defaults" class="solr.SearchHandler">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -48,7 +48,7 @@
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
+  <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -56,7 +56,7 @@
     </lst>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1"/>
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-master3.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master3.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master3.xml
index b03aef4..1c1dd40 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-master3.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-master3.xml
@@ -27,7 +27,7 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
@@ -40,7 +40,7 @@
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
+  <requestHandler name="/defaults" class="solr.SearchHandler">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -49,7 +49,7 @@
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
+  <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -57,7 +57,7 @@
     </lst>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1"/>
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicy-defaults.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicy-defaults.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicy-defaults.xml
index aaf8593..3e0cf19 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicy-defaults.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicy-defaults.xml
@@ -28,6 +28,6 @@
     -->
   </indexConfig>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
 
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicy-legacy.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicy-legacy.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicy-legacy.xml
index a7361cc..b67d664 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicy-legacy.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicy-legacy.xml
@@ -26,6 +26,6 @@
     <useCompoundFile>${useCompoundFile:false}</useCompoundFile>
   </indexConfig>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
 
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicyfactory-nocfs.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicyfactory-nocfs.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicyfactory-nocfs.xml
index 4dd82d7..b93fabd 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicyfactory-nocfs.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicyfactory-nocfs.xml
@@ -29,6 +29,6 @@
     </mergePolicyFactory>
   </indexConfig>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
 
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-nocache.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-nocache.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-nocache.xml
index 15e58af..137c519 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-nocache.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-nocache.xml
@@ -31,15 +31,15 @@
 
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
-  
-  <requestHandler name="standard" class="solr.StandardRequestHandler"/>
 
-  <requestDispatcher handleSelect="true" >
+  <requestHandler name="/select" class="solr.SearchHandler" />
+
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     <httpCaching never304="true" />
   </requestDispatcher>
 
-  <initParams path="standard">
+  <initParams path="/select">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-nomergepolicyfactory.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-nomergepolicyfactory.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-nomergepolicyfactory.xml
index a9e3801..62fb05b 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-nomergepolicyfactory.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-nomergepolicyfactory.xml
@@ -27,6 +27,6 @@
     <mergePolicyFactory class="org.apache.solr.index.NoMergePolicyFactory" />
   </indexConfig>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
 
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-noopregen.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-noopregen.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-noopregen.xml
index 1f54630..a3cd7b6 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-noopregen.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-noopregen.xml
@@ -24,7 +24,7 @@
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
   <query>
     <cache name="myPerSegmentCache" 
            class="solr.LRUCache"

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-paramset.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-paramset.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-paramset.xml
index c006ce7..7eefc9d 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-paramset.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-paramset.xml
@@ -25,7 +25,7 @@
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"/>
+  <requestHandler name="/select" class="solr.SearchHandler"/>
   <initParams name="a" path="/dump3,/dump6,/root/*,/root1/**">
     <lst name="defaults">
       <str name="a">A</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-parsing-update-processor-chains.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-parsing-update-processor-chains.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-parsing-update-processor-chains.xml
index f83df6c..5930d37 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-parsing-update-processor-chains.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-parsing-update-processor-chains.xml
@@ -23,7 +23,7 @@
   -->
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-phrasesuggest.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-phrasesuggest.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-phrasesuggest.xml
index 4507666..0f79d7c 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-phrasesuggest.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-phrasesuggest.xml
@@ -24,7 +24,7 @@
   <dataDir>${solr.data.dir:}</dataDir>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   
   <!-- WFSTLookup suggest component -->
   <searchComponent class="solr.SpellCheckComponent" name="suggest_wfst">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-plugcollector.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-plugcollector.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-plugcollector.xml
index 09f0974..431447c 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-plugcollector.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-plugcollector.xml
@@ -190,12 +190,12 @@ based HashBitset. -->
       The "standard" request handler is the default and will be used if qt
      is not specified in the request.
   -->
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
 
-  <requestHandler name="dismax" class="solr.SearchHandler" >
+  <requestHandler name="/dismax" class="solr.SearchHandler" >
     <lst name="defaults">
       <str name="defType">dismax</str>
       <str name="q.alt">*:*</str>
@@ -216,10 +216,10 @@ based HashBitset. -->
     </lst>
   </requestHandler>
 
-  <requestHandler name="mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler"/>
+  <requestHandler name="/mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler"/>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
+  <requestHandler name="/defaults" class="solr.SearchHandler">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -228,7 +228,7 @@ based HashBitset. -->
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
+  <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -322,7 +322,7 @@ based HashBitset. -->
    -->
   <queryConverter name="queryConverter" class="org.apache.solr.spelling.SpellingQueryConverter"/>
 
-  <requestHandler name="spellCheckCompRH" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckCompRH" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <!-- omp = Only More Popular -->
       <str name="spellcheck.onlyMorePopular">false</str>
@@ -335,7 +335,7 @@ based HashBitset. -->
       <str>spellcheck</str>
     </arr>
   </requestHandler>
-  <requestHandler name="spellCheckCompRH_Direct" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckCompRH_Direct" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <str name="spellcheck.dictionary">direct</str>
       <str name="spellcheck.onlyMorePopular">false</str>
@@ -346,7 +346,7 @@ based HashBitset. -->
       <str>spellcheck</str>
     </arr>
   </requestHandler>
-  <requestHandler name="spellCheckWithWordbreak" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckWithWordbreak" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <str name="spellcheck.dictionary">default</str>
       <str name="spellcheck.dictionary">wordbreak</str>
@@ -356,7 +356,7 @@ based HashBitset. -->
       <str>spellcheck</str>
     </arr>
   </requestHandler>
-  <requestHandler name="spellCheckWithWordbreak_Direct" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckWithWordbreak_Direct" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <str name="spellcheck.dictionary">direct</str>
       <str name="spellcheck.dictionary">wordbreak</str>
@@ -366,7 +366,7 @@ based HashBitset. -->
       <str>spellcheck</str>
     </arr>
   </requestHandler>
-  <requestHandler name="spellCheckCompRH1" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckCompRH1" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <str name="defType">dismax</str>
       <str name="qf">lowerfilt1^1</str>
@@ -376,13 +376,13 @@ based HashBitset. -->
     </arr>
   </requestHandler>
 
-  <requestHandler name="mltrh" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/mltrh" class="org.apache.solr.handler.component.SearchHandler">
 
   </requestHandler>
 
   <searchComponent name="tvComponent" class="org.apache.solr.handler.component.TermVectorComponent"/>
 
-  <requestHandler name="tvrh" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/tvrh" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
 
     </lst>
@@ -458,7 +458,7 @@ based HashBitset. -->
     </highlighting>
   </searchComponent>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>
@@ -549,7 +549,7 @@ based HashBitset. -->
     <processor class="solr.RunUpdateProcessorFactory" />
   </updateRequestProcessorChain>
 
-  <initParams path="standard,dismax,defaults,lazy,spellCheckCompRH,spellCheckWithWordbreak,spellCheckCompRH_Direct,spellCheckCompRH1,mltrh,tvrh,/terms">
+  <initParams path="/select,/dismax,/defaults,/lazy,/spellCheckCompRH,/spellCheckWithWordbreak,/spellCheckCompRH_Direct,/spellCheckCompRH1,/mltrh,/tvrh,/terms">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-postingshighlight.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-postingshighlight.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-postingshighlight.xml
index 9db6205..a578563 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-postingshighlight.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-postingshighlight.xml
@@ -24,7 +24,7 @@
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <lst name="defaults">
       <bool name="hl.defaultSummary">false</bool>
       <str name="df">text</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-query-parser-init.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-query-parser-init.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-query-parser-init.xml
index 24c2ea8..eb538fa 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-query-parser-init.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-query-parser-init.xml
@@ -23,7 +23,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
   <!-- query parser without final NAME field lead to NPE during query parser initialization-->

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-querysender-noquery.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-querysender-noquery.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-querysender-noquery.xml
index 0945be2..9d4f83d 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-querysender-noquery.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-querysender-noquery.xml
@@ -68,7 +68,7 @@
 
   
   </query>
-  <requestHandler name="mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler" default="true">
+  <requestHandler name="/mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler" default="true">
     <!-- default values for query parameters -->
 
   </requestHandler>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-querysender.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-querysender.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-querysender.xml
index 7f7bf18..1404f8a 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-querysender.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-querysender.xml
@@ -42,8 +42,8 @@
          local query request for each NamedList in sequence. -->
     <listener event="newSearcher" class="solr.QuerySenderListener">
       <arr name="queries">
-        <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> <str name="qt">mock</str></lst>
-        <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> <str name="qt">mock</str></lst>
+        <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> <str name="qt">/mock</str></lst>
+        <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> <str name="qt">/mock</str></lst>
       </arr>
     </listener>
     <listener event="newSearcher"
@@ -55,7 +55,7 @@
     <listener event="firstSearcher" class="solr.QuerySenderListener">
       <arr name="queries">
         <lst> <str name="q">fast_warm</str> <str name="start">0</str> <str name="rows">10</str>
-          <str name="qt">mock</str>
+          <str name="qt">/mock</str>
         </lst>
       </arr>
     </listener>
@@ -64,7 +64,7 @@
 
   
   </query>
-  <requestHandler name="mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler" default="true">
+  <requestHandler name="/mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler" default="true">
     <!-- default values for query parameters -->
 
   </requestHandler>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-repeater.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-repeater.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-repeater.xml
index 76c379c..761d45d 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-repeater.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-repeater.xml
@@ -28,17 +28,17 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
+  <requestHandler name="/defaults" class="solr.SearchHandler">
 
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
+  <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy">
   </requestHandler>
 
   <requestHandler name="/replication" class="solr.ReplicationHandler">
@@ -51,7 +51,7 @@
     </lst>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1"/>
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-reqHandler.incl
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-reqHandler.incl b/solr/core/src/test-files/solr/collection1/conf/solrconfig-reqHandler.incl
index 03f236f..cc97504 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-reqHandler.incl
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-reqHandler.incl
@@ -1,5 +1,5 @@
 
-  <requestHandler name="includedHandler"
+  <requestHandler name="/includedHandler"
                   class="solr.SearchHandler" >
   </requestHandler>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-response-log-component.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-response-log-component.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-response-log-component.xml
index f89b187..643d9a6 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-response-log-component.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-response-log-component.xml
@@ -20,8 +20,8 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-  <requestHandler name="standard"
-     class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select"
+     class="solr.SearchHandler"></requestHandler>
 
   <!-- Used to specify an alternate directory to hold all index data.
        It defaults to "index" if not present, and should probably
@@ -37,22 +37,22 @@
   <searchComponent name="responselog" class="org.apache.solr.handler.component.ResponseLogComponent" />
 
   <!-- Log retrievedDocs -->
-  <requestHandler name="withlog" class="org.apache.solr.handler.component.SearchHandler">
-  <lst name="defaults">
-    <str name="defType">dismax</str>
-  </lst>
+  <requestHandler name="/withlog" class="org.apache.solr.handler.component.SearchHandler">
+    <lst name="defaults">
+      <str name="defType">dismax</str>
+    </lst>
     <arr name="last-components">
       <str>responselog</str>
     </arr>
   </requestHandler>
   
-  <requestHandler name="nolog" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/nolog" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <str name="defType">dismax</str>
     </lst>
   </requestHandler>
 
-  <initParams path="withlog,nolog">
+  <initParams path="/withlog,/nolog">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-schemaless.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-schemaless.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-schemaless.xml
index ac8321b..04ba1f2 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-schemaless.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-schemaless.xml
@@ -35,7 +35,7 @@
     </updateLog>
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-script-updateprocessor.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-script-updateprocessor.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-script-updateprocessor.xml
index 8fa8dcf..f87385e 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-script-updateprocessor.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-script-updateprocessor.xml
@@ -24,7 +24,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-searcher-listeners1.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-searcher-listeners1.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-searcher-listeners1.xml
index 73fb42a..c71f8ba 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-searcher-listeners1.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-searcher-listeners1.xml
@@ -41,7 +41,7 @@
   <queryResponseWriter name="xml" default="true"
                        class="solr.XMLResponseWriter" />
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"/>
+  <requestHandler name="/select" class="solr.SearchHandler"/>
   
   <searchComponent name="mock" class="org.apache.solr.search.TestIndexSearcher$MockSearchComponent"/>
   

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml
index 5ca7184..39a7870 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml
@@ -28,17 +28,17 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
+  <requestHandler name="/defaults" class="solr.SearchHandler">
 
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
+  <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy">
   </requestHandler>
 
   <requestHandler name="/replication" class="solr.ReplicationHandler">
@@ -49,7 +49,7 @@
     </lst>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1"/>
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave1.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave1.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave1.xml
index aa2f8a4..26821b4 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave1.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave1.xml
@@ -28,21 +28,21 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
+  <requestHandler name="/defaults" class="solr.SearchHandler">
 
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
+  <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy">
   </requestHandler>
 
 
-  <requestDispatcher handleSelect="true">
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1"/>
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-solcoreproperties.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-solcoreproperties.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-solcoreproperties.xml
index 4278d67..fc707d4 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-solcoreproperties.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-solcoreproperties.xml
@@ -26,7 +26,7 @@
 
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
 
-  <requestHandler name="/select" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="p1">${foo.foo1}</str>
       <str name="p2">${foo.foo2}</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-sortingmergepolicyfactory.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-sortingmergepolicyfactory.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-sortingmergepolicyfactory.xml
index a7a8358..17e6f4c 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-sortingmergepolicyfactory.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-sortingmergepolicyfactory.xml
@@ -31,7 +31,7 @@
     <lockType>${solr.tests.lockType:single}</lockType>
   </indexConfig>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
   <updateHandler class="solr.DirectUpdateHandler2">
     <updateLog>
@@ -47,7 +47,7 @@
       <maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime>
     </autoSoftCommit>
   </updateHandler>
-  <initParams path="standard">
+  <initParams path="/select">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-sortingresponse.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-sortingresponse.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-sortingresponse.xml
index 35ad58b..efb9eea 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-sortingresponse.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-sortingresponse.xml
@@ -25,7 +25,7 @@
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
   <query>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-spatial.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-spatial.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-spatial.xml
index 243eb5e..646a9eb 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-spatial.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-spatial.xml
@@ -24,7 +24,7 @@
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
   <query>
     <cache name="perSegSpatialFieldCache_srptgeom"
            class="solr.LRUCache"

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-spellcheckcomponent.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-spellcheckcomponent.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-spellcheckcomponent.xml
index cf923c4..7760eb2 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-spellcheckcomponent.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-spellcheckcomponent.xml
@@ -33,8 +33,8 @@
       <maxWarmingSearchers>1</maxWarmingSearchers>
     </query>
   </indexConfig>
-  <requestHandler name="standard"
-     class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select"
+     class="solr.SearchHandler"></requestHandler>
 
   <!-- Used to specify an alternate directory to hold all index data.
        It defaults to "index" if not present, and should probably
@@ -156,7 +156,7 @@
    -->
   <queryConverter name="queryConverter" class="org.apache.solr.spelling.SpellingQueryConverter"/>
 
-  <requestHandler name="spellCheckCompRH" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckCompRH" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <!-- omp = Only More Popular -->
       <str name="spellcheck.onlyMorePopular">false</str>
@@ -169,7 +169,7 @@
       <str>spellcheck</str>
     </arr>
   </requestHandler>
-  <requestHandler name="spellCheckCompRH1" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckCompRH1" class="org.apache.solr.handler.component.SearchHandler">
       <lst name="defaults">
         <str name="defType">dismax</str>
         <str name="qf">lowerfilt1^1</str>
@@ -178,7 +178,7 @@
         <str>spellcheck</str>
       </arr>
  </requestHandler>
- <requestHandler name="spellCheckWithWordbreak" class="org.apache.solr.handler.component.SearchHandler">
+ <requestHandler name="/spellCheckWithWordbreak" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <str name="spellcheck.dictionary">default</str>
       <str name="spellcheck.dictionary">wordbreak</str>
@@ -188,7 +188,7 @@
       <str>spellcheck</str>
     </arr>
   </requestHandler>
-  <initParams path="spellCheckCompRH,spellCheckCompRH1,spellCheckWithWordbreak">
+  <initParams path="/spellCheckCompRH,/spellCheckCompRH1,/spellCheckWithWordbreak">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-spellchecker.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-spellchecker.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-spellchecker.xml
index 3b0aff6..a876fb6 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-spellchecker.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-spellchecker.xml
@@ -29,7 +29,7 @@
   <updateHandler class="solr.DirectUpdateHandler2">
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
   <!-- Suggest component -->
   <searchComponent class="solr.SpellCheckComponent" name="suggest_jaspell">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-sql.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-sql.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-sql.xml
index 6a0c5b5..8ec6489 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-sql.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-sql.xml
@@ -44,13 +44,13 @@
     </lst>
   </requestHandler>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
   </requestDispatcher>
 
   <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
   <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
 
   <requestHandler name="/admin/ping" class="solr.PingRequestHandler">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-suggestercomponent-context-filter-query.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-suggestercomponent-context-filter-query.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-suggestercomponent-context-filter-query.xml
index 394b25e..36b6755 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-suggestercomponent-context-filter-query.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-suggestercomponent-context-filter-query.xml
@@ -27,7 +27,7 @@
 
   <updateHandler class="solr.DirectUpdateHandler2"/>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
   <searchComponent class="solr.SuggestComponent" name="suggest">
     <!--Suggest Component for context filtering test -->

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-suggestercomponent.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-suggestercomponent.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-suggestercomponent.xml
index 661913c..857fb11 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-suggestercomponent.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-suggestercomponent.xml
@@ -28,7 +28,7 @@
 
   <updateHandler class="solr.DirectUpdateHandler2"/>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
   <searchComponent class="solr.SuggestComponent" name="suggest">
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-test-misc.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-test-misc.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-test-misc.xml
index 3dba272..dc7bb66 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-test-misc.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-test-misc.xml
@@ -45,8 +45,8 @@
             attr2="${non.existent.sys.prop:default-from-config}">prefix-${solr.test.sys.prop2}-suffix</propTest>
 
   <!-- see TestConfig.testDisableRequetsHandler -->
-  <requestHandler name="disabled" class="solr.StandardRequestHandler" enable="false"/>
-  <requestHandler name="enabled" class="solr.StandardRequestHandler" enable="true"/>
+  <requestHandler name="/disabled" class="solr.SearchHandler" enable="false"/>
+  <requestHandler name="/enabled" class="solr.SearchHandler" enable="true"/>
 
 
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-testxmlparser.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-testxmlparser.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-testxmlparser.xml
index 40c39a1..401710e 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-testxmlparser.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-testxmlparser.xml
@@ -24,7 +24,7 @@
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
+  <requestHandler name="/select" class="solr.SearchHandler" />
   <queryParser name="testxmlparser" class="XmlQParserPlugin">
     <str name="HandyQuery">org.apache.solr.search.HandyQueryBuilder</str>
     <str name="HelloQuery">org.apache.solr.search.HelloQueryBuilder</str>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-tieredmergepolicyfactory.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-tieredmergepolicyfactory.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-tieredmergepolicyfactory.xml
index af5d208..4a58100 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-tieredmergepolicyfactory.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-tieredmergepolicyfactory.xml
@@ -36,6 +36,6 @@
     </mergeScheduler>
   </indexConfig>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
 
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml
index cf12c4a..12e5089 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml
@@ -44,8 +44,7 @@
    <processor class="solr.RunUpdateProcessorFactory" />
  </updateRequestProcessorChain>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
-  </requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler" />
   
   <peerSync>
     <useRangeVersions>${solr.peerSync.useRangeVersions:true}</useRangeVersions>
@@ -158,7 +157,7 @@
 
   </query>
 
-  <initParams path="standard">
+  <initParams path="/select">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-uninvertdocvaluesmergepolicyfactory.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-uninvertdocvaluesmergepolicyfactory.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-uninvertdocvaluesmergepolicyfactory.xml
index 613357b..5f15430 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-uninvertdocvaluesmergepolicyfactory.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-uninvertdocvaluesmergepolicyfactory.xml
@@ -33,6 +33,6 @@
     <mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler"/>
   </indexConfig>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
 
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-update-processor-chains.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-update-processor-chains.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-update-processor-chains.xml
index 426f3c0..4113bd1 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-update-processor-chains.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-update-processor-chains.xml
@@ -25,7 +25,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig-warmer-randommergepolicyfactory.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-warmer-randommergepolicyfactory.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-warmer-randommergepolicyfactory.xml
index 1e1936b..21101b1 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig-warmer-randommergepolicyfactory.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-warmer-randommergepolicyfactory.xml
@@ -24,7 +24,7 @@
   <dataDir>${solr.data.dir:}</dataDir>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   
   <indexConfig>
     <!-- we don't use solrconfig.snippet.randomindexconfig.xml here

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml
index 7466d01..41726ce 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml
@@ -200,17 +200,13 @@
        If the set cardinality <= maxSize elements, then HashDocSet will be used instead of the bitset
        based HashBitset. -->
 
-  <!-- requestHandler plugins... incoming queries will be dispatched to the
-     correct handler based on the 'qt' param matching the
-     name of registered handlers.
-      The "standard" request handler is the default and will be used if qt
-     is not specified in the request.
+  <!-- requestHandler plugins
   -->
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
     <bool name="httpCaching">true</bool>
   </requestHandler>
 
-  <requestHandler name="dismax" class="solr.SearchHandler" >
+  <requestHandler name="/dismax" class="solr.SearchHandler" >
     <lst name="defaults">
      <str name="defType">dismax</str>
      <str name="q.alt">*:*</str>
@@ -231,10 +227,10 @@
     </lst>
   </requestHandler>
 
-  <requestHandler name="mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler"/>
+  <requestHandler name="/mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler"/>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="defaults" class="solr.StandardRequestHandler">
+  <requestHandler name="/defaults" class="solr.SearchHandler">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -243,7 +239,7 @@
   </requestHandler>
 
   <!-- test query parameter defaults -->
-  <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
+  <requestHandler name="/lazy" class="solr.SearchHandler" startup="lazy">
     <lst name="defaults">
       <int name="rows">4</int>
       <bool name="hl">true</bool>
@@ -341,7 +337,7 @@
    -->
   <queryConverter name="queryConverter" class="org.apache.solr.spelling.SpellingQueryConverter"/>
 
-  <requestHandler name="spellCheckCompRH" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckCompRH" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <!-- omp = Only More Popular -->
       <str name="spellcheck.onlyMorePopular">false</str>
@@ -354,7 +350,7 @@
       <str>spellcheck</str>
     </arr>
   </requestHandler>
-    <requestHandler name="spellCheckCompRH_Direct" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckCompRH_Direct" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <str name="spellcheck.dictionary">direct</str>
       <str name="spellcheck.onlyMorePopular">false</str>
@@ -365,7 +361,7 @@
       <str>spellcheck</str>
     </arr>
   </requestHandler>
-  <requestHandler name="spellCheckWithWordbreak" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckWithWordbreak" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <str name="spellcheck.dictionary">default</str>
       <str name="spellcheck.dictionary">wordbreak</str>
@@ -375,7 +371,7 @@
       <str>spellcheck</str>
     </arr>
   </requestHandler>
-  <requestHandler name="spellCheckWithWordbreak_Direct" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckWithWordbreak_Direct" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
       <str name="spellcheck.dictionary">direct</str>
       <str name="spellcheck.dictionary">wordbreak</str>
@@ -385,7 +381,7 @@
       <str>spellcheck</str>
     </arr>
   </requestHandler>
-  <requestHandler name="spellCheckCompRH1" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/spellCheckCompRH1" class="org.apache.solr.handler.component.SearchHandler">
       <lst name="defaults">
         <str name="defType">dismax</str>
         <str name="qf">lowerfilt1^1</str>
@@ -395,13 +391,13 @@
       </arr>
  </requestHandler>
  
-  <requestHandler name="mltrh" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/mltrh" class="org.apache.solr.handler.component.SearchHandler">
 
   </requestHandler>
 
   <searchComponent name="tvComponent" class="org.apache.solr.handler.component.TermVectorComponent"/>
 
-  <requestHandler name="tvrh" class="org.apache.solr.handler.component.SearchHandler">
+  <requestHandler name="/tvrh" class="org.apache.solr.handler.component.SearchHandler">
     <lst name="defaults">
 
     </lst>
@@ -460,7 +456,7 @@
   </highlighting>
   </searchComponent>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="-1" />
     <httpCaching lastModifiedFrom="openTime" etagSeed="Solr" never304="false">
       <cacheControl>max-age=30, public</cacheControl>
@@ -578,7 +574,8 @@
     <str name="storageIO">org.apache.solr.rest.ManagedResourceStorage$InMemoryStorageIO</str>
   </restManager>
 
-  <initParams path="standard,dismax,defaults,lazy,spellCheckCompRH,spellCheckWithWordbreak,spellCheckCompRH_Direct,spellCheckCompRH1,mltrh,tvrh,/search-facet-def,/search-facet-invariants,/terms">
+  <!-- warning: not a best practice; requests generally ought to be explicit to thus not require this -->
+  <initParams path="/select,/dismax,/defaults,/lazy,/spellCheckCompRH,/spellCheckWithWordbreak,/spellCheckCompRH_Direct,/spellCheckCompRH1,/mltrh,/tvrh,/search-facet-def,/search-facet-invariants,/terms">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig_SimpleTextCodec.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig_SimpleTextCodec.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig_SimpleTextCodec.xml
index f3abf9b..7b0c3e3 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig_SimpleTextCodec.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig_SimpleTextCodec.xml
@@ -21,6 +21,6 @@
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"/>
+  <requestHandler name="/select" class="solr.SearchHandler"/>
   <codecFactory class="solr.SimpleTextCodecFactory"/>
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig_codec.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig_codec.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig_codec.xml
index 0c3e81e..ad08096 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig_codec.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig_codec.xml
@@ -21,7 +21,7 @@
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <codecFactory class="solr.SchemaCodecFactory">
     <str name="compressionMode">${tests.COMPRESSION_MODE:BEST_COMPRESSION}</str>
   </codecFactory>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig_codec2.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig_codec2.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig_codec2.xml
index d3790a4..c4a8ae7 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig_codec2.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig_codec2.xml
@@ -20,7 +20,7 @@
   <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
   <xi:include href="solrconfig.snippet.randomindexconfig.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
   <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
   <codecFactory class="solr.SchemaCodecFactory"/>
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/collection1/conf/solrconfig_perf.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig_perf.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig_perf.xml
index cc6f97b..6f35efa 100644
--- a/solr/core/src/test-files/solr/collection1/conf/solrconfig_perf.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig_perf.xml
@@ -60,7 +60,7 @@
 
   </query>
 
-  <requestDispatcher handleSelect="true" >
+  <requestDispatcher>
     <!--Make sure your system has some authentication before enabling remote streaming!  -->
     <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="-1" />
     <httpCaching lastModifiedFrom="openTime"
@@ -68,7 +68,6 @@
     </httpCaching>
   </requestDispatcher>
 
-  <requestHandler name="standard" class="solr.SearchHandler" default="true">
-  </requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/solrconfig.xml b/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/solrconfig.xml
index 49bbf58..3ef080d 100644
--- a/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/solrconfig.xml
+++ b/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/solrconfig.xml
@@ -31,6 +31,6 @@
 
   <updateHandler class="solr.DirectUpdateHandler2"/>
   <schemaFactory class="ClassicIndexSchemaFactory"/>
-  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler"></requestHandler>
 
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/configsets/cdcr-source/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/cdcr-source/conf/solrconfig.xml b/solr/core/src/test-files/solr/configsets/cdcr-source/conf/solrconfig.xml
index f2528c3..6469038 100644
--- a/solr/core/src/test-files/solr/configsets/cdcr-source/conf/solrconfig.xml
+++ b/solr/core/src/test-files/solr/configsets/cdcr-source/conf/solrconfig.xml
@@ -64,8 +64,7 @@
     </updateLog>
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
-  </requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
   <requestHandler name="/update" class="solr.UpdateRequestHandler">
     <lst name="defaults">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/configsets/cdcr-target/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/cdcr-target/conf/solrconfig.xml b/solr/core/src/test-files/solr/configsets/cdcr-target/conf/solrconfig.xml
index ef24fa4..bb4a774 100644
--- a/solr/core/src/test-files/solr/configsets/cdcr-target/conf/solrconfig.xml
+++ b/solr/core/src/test-files/solr/configsets/cdcr-target/conf/solrconfig.xml
@@ -51,8 +51,7 @@
     </updateLog>
   </updateHandler>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
-  </requestHandler>
+  <requestHandler name="/select" class="solr.SearchHandler" />
 
   <requestHandler name="/update" class="solr.UpdateRequestHandler">
     <lst name="defaults">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/configsets/exitable-directory/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/exitable-directory/conf/solrconfig.xml b/solr/core/src/test-files/solr/configsets/exitable-directory/conf/solrconfig.xml
index 31c374c..af1036f 100644
--- a/solr/core/src/test-files/solr/configsets/exitable-directory/conf/solrconfig.xml
+++ b/solr/core/src/test-files/solr/configsets/exitable-directory/conf/solrconfig.xml
@@ -42,7 +42,7 @@
     <processor class="solr.RunUpdateProcessorFactory" />
   </updateRequestProcessorChain>
 
-  <requestHandler name="standard" class="solr.StandardRequestHandler">
+  <requestHandler name="/select" class="solr.SearchHandler">
   </requestHandler>
 
   <updateHandler class="solr.DirectUpdateHandler2">

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test-files/solr/crazy-path-to-config.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/crazy-path-to-config.xml b/solr/core/src/test-files/solr/crazy-path-to-config.xml
index c6dc859..00781a9 100644
--- a/solr/core/src/test-files/solr/crazy-path-to-config.xml
+++ b/solr/core/src/test-files/solr/crazy-path-to-config.xml
@@ -37,9 +37,11 @@
     <HashDocSet maxSize="3000" loadFactor="0.75"/>
     <boolTofilterOptimizer enabled="true" cacheSize="32" threshold=".05"/>
   </query>
-  
-  <requestHandler name="standard" class="solr.StandardRequestHandler" />
-  <requestHandler name="crazy_custom_qt" class="solr.StandardRequestHandler">
+
+  <requestDispatcher/>
+
+  <requestHandler name="/select" class="solr.SearchHandler" />
+  <requestHandler name="/crazy_custom_qt" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="fl">implicit</str>
       <str name="df">subject</str>
@@ -55,7 +57,7 @@
     <gettableFiles>solrconfig.xml schema.xml</gettableFiles>
   </admin>
 
-  <initParams path="standard,crazy_custom_qt">
+  <initParams path="/select,/crazy_custom_qt">
     <lst name="defaults">
       <str name="df">subject</str>
     </lst>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java b/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
index 2122c90..52e2e78 100644
--- a/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
+++ b/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
@@ -122,7 +122,7 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
     SolrCore core = h.getCore();
 
     // test that we got the expected config, not just hardcoded defaults
-    assertNotNull(core.getRequestHandler("mock"));
+    assertNotNull(core.getRequestHandler("/mock"));
 
     // test stats call
     SolrMetricManager manager = core.getCoreContainer().getMetricManager();
@@ -756,12 +756,12 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
             );
 
     assertQ("defaults handler returns fewer matches",
-            req("q", "id:[42 TO 47]",   "qt","defaults"),
+            req("q", "id:[42 TO 47]",   "qt","/defaults"),
             "*[count(//doc)=4]"
             );
 
     assertQ("defaults handler includes highlighting",
-            req("q", "name:Zapp OR title:General",   "qt","defaults"),
+            req("q", "name:Zapp OR title:General",   "qt","/defaults"),
             "//lst[@name='highlighting']"
             );
 


[30/53] [abbrv] lucene-solr:feature/autoscaling: Trying to fix failing tests after bumping up version to 8.0

Posted by sh...@apache.org.
Trying to fix failing tests after bumping up version to 8.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/93fbfc2e
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/93fbfc2e
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/93fbfc2e

Branch: refs/heads/feature/autoscaling
Commit: 93fbfc2e56e88a68715dd5b57b39ee9b801be84f
Parents: 774e3d8
Author: Anshum Gupta <an...@apple.com>
Authored: Fri Jun 30 10:59:05 2017 -0700
Committer: Anshum Gupta <an...@apple.com>
Committed: Fri Jun 30 10:59:05 2017 -0700

----------------------------------------------------------------------
 .../apache/lucene/index/TestSegmentInfos.java   | 14 +++++-----
 .../search/similarities/TestBM25Similarity.java | 26 ------------------
 .../similarities/TestClassicSimilarity.java     | 26 ------------------
 .../search/similarities/TestSimilarityBase.java | 29 --------------------
 4 files changed, 7 insertions(+), 88 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/93fbfc2e/lucene/core/src/test/org/apache/lucene/index/TestSegmentInfos.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestSegmentInfos.java b/lucene/core/src/test/org/apache/lucene/index/TestSegmentInfos.java
index 128601e..e9edf4e 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestSegmentInfos.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestSegmentInfos.java
@@ -32,8 +32,8 @@ public class TestSegmentInfos extends LuceneTestCase {
   public void testIllegalCreatedVersion() {
     IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> new SegmentInfos(5));
     assertEquals("indexCreatedVersionMajor must be >= 6, got: 5", e.getMessage());
-    e = expectThrows(IllegalArgumentException.class, () -> new SegmentInfos(8));
-    assertEquals("indexCreatedVersionMajor is in the future: 8", e.getMessage());
+    e = expectThrows(IllegalArgumentException.class, () -> new SegmentInfos(Version.LATEST.major + 1));
+    assertEquals("indexCreatedVersionMajor is in the future: " + (Version.LATEST.major + 1), e.getMessage());
   }
 
   // LUCENE-5954
@@ -56,7 +56,7 @@ public class TestSegmentInfos extends LuceneTestCase {
     Codec codec = Codec.getDefault();
 
     SegmentInfos sis = new SegmentInfos(Version.LATEST.major);
-    SegmentInfo info = new SegmentInfo(dir, Version.LUCENE_7_0_0, Version.LUCENE_7_0_0, "_0", 1, false, Codec.getDefault(), 
+    SegmentInfo info = new SegmentInfo(dir, Version.LUCENE_8_0_0, Version.LUCENE_8_0_0, "_0", 1, false, Codec.getDefault(),
                                        Collections.<String,String>emptyMap(), id, Collections.<String,String>emptyMap(), null);
     info.setFiles(Collections.<String>emptySet());
     codec.segmentInfoFormat().write(dir, info, IOContext.DEFAULT);
@@ -65,7 +65,7 @@ public class TestSegmentInfos extends LuceneTestCase {
     sis.add(commitInfo);
     sis.commit(dir);
     sis = SegmentInfos.readLatestCommit(dir);
-    assertEquals(Version.LUCENE_7_0_0, sis.getMinSegmentLuceneVersion());
+    assertEquals(Version.LUCENE_8_0_0, sis.getMinSegmentLuceneVersion());
     assertEquals(Version.LATEST, sis.getCommitLuceneVersion());
     dir.close();
   }
@@ -78,14 +78,14 @@ public class TestSegmentInfos extends LuceneTestCase {
     Codec codec = Codec.getDefault();
 
     SegmentInfos sis = new SegmentInfos(Version.LATEST.major);
-    SegmentInfo info = new SegmentInfo(dir, Version.LUCENE_7_0_0, Version.LUCENE_7_0_0, "_0", 1, false, Codec.getDefault(), 
+    SegmentInfo info = new SegmentInfo(dir, Version.LUCENE_8_0_0, Version.LUCENE_8_0_0, "_0", 1, false, Codec.getDefault(),
                                        Collections.<String,String>emptyMap(), id, Collections.<String,String>emptyMap(), null);
     info.setFiles(Collections.<String>emptySet());
     codec.segmentInfoFormat().write(dir, info, IOContext.DEFAULT);
     SegmentCommitInfo commitInfo = new SegmentCommitInfo(info, 0, -1, -1, -1);
     sis.add(commitInfo);
 
-    info = new SegmentInfo(dir, Version.LUCENE_7_0_0, Version.LUCENE_7_0_0, "_1", 1, false, Codec.getDefault(), 
+    info = new SegmentInfo(dir, Version.LUCENE_8_0_0, Version.LUCENE_8_0_0, "_1", 1, false, Codec.getDefault(),
                            Collections.<String,String>emptyMap(), id, Collections.<String,String>emptyMap(), null);
     info.setFiles(Collections.<String>emptySet());
     codec.segmentInfoFormat().write(dir, info, IOContext.DEFAULT);
@@ -94,7 +94,7 @@ public class TestSegmentInfos extends LuceneTestCase {
 
     sis.commit(dir);
     sis = SegmentInfos.readLatestCommit(dir);
-    assertEquals(Version.LUCENE_7_0_0, sis.getMinSegmentLuceneVersion());
+    assertEquals(Version.LUCENE_8_0_0, sis.getMinSegmentLuceneVersion());
     assertEquals(Version.LATEST, sis.getCommitLuceneVersion());
     dir.close();
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/93fbfc2e/lucene/core/src/test/org/apache/lucene/search/similarities/TestBM25Similarity.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/similarities/TestBM25Similarity.java b/lucene/core/src/test/org/apache/lucene/search/similarities/TestBM25Similarity.java
index e54ce25..7c11d6b 100644
--- a/lucene/core/src/test/org/apache/lucene/search/similarities/TestBM25Similarity.java
+++ b/lucene/core/src/test/org/apache/lucene/search/similarities/TestBM25Similarity.java
@@ -77,32 +77,6 @@ public class TestBM25Similarity extends LuceneTestCase {
     assertTrue(expected.getMessage().contains("illegal b value"));
   }
 
-  public void testLengthEncodingBackwardCompatibility() throws IOException {
-    Similarity similarity = new BM25Similarity();
-    for (int indexCreatedVersionMajor : new int[] { Version.LUCENE_6_0_0.major, Version.LATEST.major}) {
-      for (int length : new int[] {1, 2, 4}) { // these length values are encoded accurately on both cases
-        Directory dir = newDirectory();
-        // set the version on the directory
-        new SegmentInfos(indexCreatedVersionMajor).commit(dir);
-        IndexWriter w = new IndexWriter(dir, newIndexWriterConfig().setSimilarity(similarity));
-        Document doc = new Document();
-        String value = IntStream.range(0, length).mapToObj(i -> "b").collect(Collectors.joining(" "));
-        doc.add(new TextField("foo", value, Store.NO));
-        w.addDocument(doc);
-        IndexReader reader = DirectoryReader.open(w);
-        IndexSearcher searcher = newSearcher(reader);
-        searcher.setSimilarity(similarity);
-        Explanation expl = searcher.explain(new TermQuery(new Term("foo", "b")), 0);
-        Explanation docLen = findExplanation(expl, "fieldLength");
-        assertNotNull(docLen);
-        assertEquals(docLen.toString(), length, (int) docLen.getValue());
-        w.close();
-        reader.close();
-        dir.close();
-      }
-    }
-  }
-
   private static Explanation findExplanation(Explanation expl, String text) {
     if (expl.getDescription().equals(text)) {
       return expl;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/93fbfc2e/lucene/core/src/test/org/apache/lucene/search/similarities/TestClassicSimilarity.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/similarities/TestClassicSimilarity.java b/lucene/core/src/test/org/apache/lucene/search/similarities/TestClassicSimilarity.java
index c7f0453..2b36ed2 100644
--- a/lucene/core/src/test/org/apache/lucene/search/similarities/TestClassicSimilarity.java
+++ b/lucene/core/src/test/org/apache/lucene/search/similarities/TestClassicSimilarity.java
@@ -185,32 +185,6 @@ public class TestClassicSimilarity extends LuceneTestCase {
     }
   }
 
-  public void testNormEncodingBackwardCompatibility() throws IOException {
-    Similarity similarity = new ClassicSimilarity();
-    for (int indexCreatedVersionMajor : new int[] { Version.LUCENE_6_0_0.major, Version.LATEST.major}) {
-      for (int length : new int[] {1, 4, 16 }) { // these length values are encoded accurately on both cases
-        Directory dir = newDirectory();
-        // set the version on the directory
-        new SegmentInfos(indexCreatedVersionMajor).commit(dir);
-        IndexWriter w = new IndexWriter(dir, newIndexWriterConfig().setSimilarity(similarity));
-        Document doc = new Document();
-        String value = IntStream.range(0, length).mapToObj(i -> "b").collect(Collectors.joining(" "));
-        doc.add(new TextField("foo", value, Store.NO));
-        w.addDocument(doc);
-        IndexReader reader = DirectoryReader.open(w);
-        IndexSearcher searcher = newSearcher(reader);
-        searcher.setSimilarity(similarity);
-        Explanation expl = searcher.explain(new TermQuery(new Term("foo", "b")), 0);
-        Explanation fieldNorm = findExplanation(expl, "fieldNorm");
-        assertNotNull(fieldNorm);
-        assertEquals(fieldNorm.toString(), 1/Math.sqrt(length), fieldNorm.getValue(), 0f);
-        w.close();
-        reader.close();
-        dir.close();
-      }
-    }
-  }
-
   private static Explanation findExplanation(Explanation expl, String text) {
     if (expl.getDescription().startsWith(text)) {
       return expl;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/93fbfc2e/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java b/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java
index 59be73a..c5472fa 100644
--- a/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java
+++ b/lucene/core/src/test/org/apache/lucene/search/similarities/TestSimilarityBase.java
@@ -609,33 +609,4 @@ public class TestSimilarityBase extends LuceneTestCase {
     actual.setDiscountOverlaps(true);
     assertEquals(expected.computeNorm(state), actual.computeNorm(state));
   }
-
-  public void testLengthEncodingBackwardCompatibility() throws IOException {
-    Similarity similarity = RandomPicks.randomFrom(random(), sims);
-    for (int indexCreatedVersionMajor : new int[] { Version.LUCENE_6_0_0.major, Version.LATEST.major}) {
-      for (int length : new int[] {1, 2, 4}) { // these length values are encoded accurately on both cases
-        Directory dir = newDirectory();
-        // set the version on the directory
-        new SegmentInfos(indexCreatedVersionMajor).commit(dir);
-        IndexWriter w = new IndexWriter(dir, newIndexWriterConfig().setSimilarity(similarity));
-        Document doc = new Document();
-        String value = IntStream.range(0, length).mapToObj(i -> "b").collect(Collectors.joining(" "));
-        doc.add(new TextField("foo", value, Store.NO));
-        w.addDocument(doc);
-        IndexReader reader = DirectoryReader.open(w);
-        IndexSearcher searcher = newSearcher(reader);
-        searcher.setSimilarity(similarity);
-        Term term = new Term("foo", "b");
-        TermContext context = TermContext.build(reader.getContext(), term);
-        SimWeight simWeight = similarity.computeWeight(1f, searcher.collectionStatistics("foo"), searcher.termStatistics(term, context));
-        SimilarityBase.BasicSimScorer simScorer = (SimilarityBase.BasicSimScorer) similarity.simScorer(simWeight, reader.leaves().get(0));
-        float docLength = simScorer.getLengthValue(0);
-        assertEquals(length, (int) docLength);
-        
-        w.close();
-        reader.close();
-        dir.close();
-      }
-    }
-  }
 }


[09/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10910: Clean up a few details left over from pluggable transient core and untangling CoreDescriptor/CoreContainer references

Posted by sh...@apache.org.
SOLR-10910: Clean up a few details left over from pluggable transient core and untangling CoreDescriptor/CoreContainer references


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/8f71bb40
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/8f71bb40
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/8f71bb40

Branch: refs/heads/feature/autoscaling
Commit: 8f71bb40a55f6e7906e596938d0bf13900f77a94
Parents: 811621c
Author: Erick Erickson <er...@apache.org>
Authored: Wed Jun 28 21:02:14 2017 -0700
Committer: Erick Erickson <er...@apache.org>
Committed: Wed Jun 28 21:02:14 2017 -0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  3 +
 .../org/apache/solr/core/CoreContainer.java     | 56 ++++++------
 .../src/java/org/apache/solr/core/SolrCore.java |  2 +-
 .../java/org/apache/solr/core/SolrCores.java    | 91 +++++++++++---------
 .../apache/solr/core/SolrResourceLoader.java    |  1 -
 .../solr/cloud/BasicDistributedZkTest.java      | 29 +++----
 .../solr/cloud/UnloadDistributedZkTest.java     | 12 ++-
 .../org/apache/solr/cloud/ZkControllerTest.java | 19 ++--
 .../org/apache/solr/core/TestCoreDiscovery.java |  3 +-
 .../org/apache/solr/core/TestLazyCores.java     | 44 ++++++----
 10 files changed, 138 insertions(+), 122 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8f71bb40/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 39fc14c..62204cd 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -495,6 +495,9 @@ when using one of Exact*StatsCache (Mikhail Khludnev)
 * SOLR-10963: Fix example json in MultipleAdditiveTreesModel javadocs.
   (Stefan Langenmaier via Christine Poerschke)
 
+* SOLR-10910: Clean up a few details left over from pluggable transient core and untangling
+  CoreDescriptor/CoreContainer references (Erick Erickson)
+
 Optimizations
 ----------------------
 * SOLR-10634: JSON Facet API: When a field/terms facet will retrieve all buckets (i.e. limit:-1)

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8f71bb40/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index 90bbf5d..322952b 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -135,7 +135,7 @@ public class CoreContainer {
 
   protected CoreAdminHandler coreAdminHandler = null;
   protected CollectionsHandler collectionsHandler = null;
-  protected TransientSolrCoreCache transientSolrCoreCache = null;
+
   private InfoHandler infoHandler;
   protected ConfigSetsHandler configSetsHandler = null;
 
@@ -150,8 +150,6 @@ public class CoreContainer {
 
   private UpdateShardHandler updateShardHandler;
 
-  private TransientSolrCoreCacheFactory transientCoreCache;
-
   private ExecutorService coreContainerWorkExecutor = ExecutorUtil.newMDCAwareCachedThreadPool(
       new DefaultSolrThreadFactory("coreContainerWorkExecutor") );
 
@@ -507,7 +505,8 @@ public class CoreContainer {
     updateShardHandler = new UpdateShardHandler(cfg.getUpdateShardHandlerConfig());
     updateShardHandler.initializeMetrics(metricManager, SolrInfoBean.Group.node.toString(), "updateShardHandler");
 
-    transientCoreCache = TransientSolrCoreCacheFactory.newInstance(loader, this);
+    solrCores.load(loader);
+
 
     logging = LogWatcher.newRegisteredLogWatcher(cfg.getLogWatcherConfig(), loader);
 
@@ -596,7 +595,7 @@ public class CoreContainer {
 
       for (final CoreDescriptor cd : cds) {
         if (cd.isTransient() || !cd.isLoadOnStartup()) {
-          getTransientCacheHandler().addTransientDescriptor(cd.getName(), cd);
+          solrCores.getTransientCacheHandler().addTransientDescriptor(cd.getName(), cd);
         } else if (asyncSolrCoreLoad) {
           solrCores.markCoreAsLoading(cd);
         }
@@ -660,16 +659,6 @@ public class CoreContainer {
   }
 
 
-  public TransientSolrCoreCache getTransientCacheHandler() {
-
-    if (transientCoreCache == null) {
-      log.error("No transient handler has been defined. Check solr.xml to see if an attempt to provide a custom " +
-          "TransientSolrCoreCacheFactory was done incorrectly since the default should have been used otherwise.");
-      return null;
-    }
-    return transientCoreCache.getTransientSolrCoreCache();
-  }
-
   public void securityNodeChanged() {
     log.info("Security node changed, reloading security.json");
     reloadSecurityProperties();
@@ -843,13 +832,13 @@ public class CoreContainer {
       core.close();
       throw new IllegalStateException("This CoreContainer has been closed");
     }
+    solrCores.addCoreDescriptor(cd);
     SolrCore old = solrCores.putCore(cd, core);
       /*
       * set both the name of the descriptor and the name of the
       * core, since the descriptors name is used for persisting.
       */
 
-    solrCores.addCoreDescriptor(new CoreDescriptor(cd.getName(), cd));
     core.setName(cd.getName());
 
     coreInitFailures.remove(cd.getName());
@@ -893,7 +882,8 @@ public class CoreContainer {
     CoreDescriptor cd = new CoreDescriptor(coreName, instancePath, parameters, getContainerProperties(), isZooKeeperAware());
 
     // TODO: There's a race here, isn't there?
-    if (getLoadedCoreNames().contains(coreName)) {
+    // Since the core descriptor is removed when a core is unloaded, it should never be anywhere when a core is created.
+    if (getAllCoreNames().contains(coreName)) {
       log.warn("Creating a core with existing name is not allowed");
       // TODO: Shouldn't this be a BAD_REQUEST?
       throw new SolrException(ErrorCode.SERVER_ERROR, "Core with name '" + coreName + "' already exists.");
@@ -991,6 +981,7 @@ public class CoreContainer {
       return core;
     } catch (Exception e) {
       coreInitFailures.put(dcore.getName(), new CoreLoadFailure(dcore, e));
+      solrCores.removeCoreDescriptor(dcore);
       final SolrException solrException = new SolrException(ErrorCode.SERVER_ERROR, "Unable to create core [" + dcore.getName() + "]", e);
       if(core != null && !core.isClosed())
         IOUtils.closeQuietly(core);
@@ -998,6 +989,7 @@ public class CoreContainer {
     } catch (Throwable t) {
       SolrException e = new SolrException(ErrorCode.SERVER_ERROR, "JVM Error creating core [" + dcore.getName() + "]: " + t.getMessage(), t);
       coreInitFailures.put(dcore.getName(), new CoreLoadFailure(dcore, e));
+      solrCores.removeCoreDescriptor(dcore);
       if(core != null && !core.isClosed())
         IOUtils.closeQuietly(core);
       throw t;
@@ -1104,24 +1096,30 @@ public class CoreContainer {
   }
 
   /**
-   * @return a Collection of the names that loaded cores are mapped to
+   * Gets the cores that are currently loaded, i.e. cores that have
+   * 1: loadOnStartup=true and are either not-transient or, if transient, have been loaded and have not been aged out
+   * 2: loadOnStartup=false and have been loaded but are either non-transient or have not been aged out.
+   *
+   * Put another way, this will not return any names of cores that are lazily loaded but have not been called for yet
+   * or are transient and either not loaded or have been swapped out.
+   *
    */
   public Collection<String> getLoadedCoreNames() {
     return solrCores.getLoadedCoreNames();
   }
 
   /** This method is currently experimental.
-   * @return a Collection of the names that a specific core is mapped to.
+   *
+   * @return a Collection of the names that a specific core object is mapped to, there are more than one.
    */
-  public Collection<String> getCoreNames(SolrCore core) {
-    return solrCores.getCoreNames(core);
+  public Collection<String> getNamesForCore(SolrCore core) {
+    return solrCores.getNamesForCore(core);
   }
 
   /**
-   * get a list of all the cores that are currently loaded
-   * @return a list of al lthe available core names in either permanent or transient core lists.
+   * get a list of all the cores that are currently known, whether currently loaded or not
+   * @return a list of all the available core names in either permanent or transient cores
    *
-   * Note: this implies that the core is loaded
    */
   public Collection<String> getAllCoreNames() {
     return solrCores.getAllCoreNames();
@@ -1266,6 +1264,8 @@ public class CoreContainer {
    */
   public void unload(String name, boolean deleteIndexDir, boolean deleteDataDir, boolean deleteInstanceDir) {
 
+    CoreDescriptor cd = solrCores.getCoreDescriptor(name);
+    
     if (name != null) {
       // check for core-init errors first
       CoreLoadFailure loadFailure = coreInitFailures.remove(name);
@@ -1274,11 +1274,15 @@ public class CoreContainer {
         // which we may not be able to do because of the init error.  So we just go with what we
         // can glean from the CoreDescriptor - datadir and instancedir
         SolrCore.deleteUnloadedCore(loadFailure.cd, deleteDataDir, deleteInstanceDir);
+        // If last time around we didn't successfully load, make sure that all traces of the coreDescriptor are gone.
+        if (cd != null) {
+          solrCores.removeCoreDescriptor(cd);
+          coresLocator.delete(this, cd);
+        }
         return;
       }
     }
-
-    CoreDescriptor cd = solrCores.getCoreDescriptor(name);
+      
     if (cd == null) {
       throw new SolrException(ErrorCode.BAD_REQUEST, "Cannot unload non-existent core [" + name + "]");
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8f71bb40/solr/core/src/java/org/apache/solr/core/SolrCore.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index 76e2cad..5319881 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -1137,7 +1137,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
     manager.registerGauge(this, registry, () -> getIndexSize(), true, "sizeInBytes", Category.INDEX.toString());
     manager.registerGauge(this, registry, () -> NumberUtils.readableSize(getIndexSize()), true, "size", Category.INDEX.toString());
     if (coreContainer != null) {
-      manager.registerGauge(this, registry, () -> coreContainer.getCoreNames(this), true, "aliases", Category.CORE.toString());
+      manager.registerGauge(this, registry, () -> coreContainer.getNamesForCore(this), true, "aliases", Category.CORE.toString());
       final CloudDescriptor cd = getCoreDescriptor().getCloudDescriptor();
       if (cd != null) {
         manager.registerGauge(this, registry, () -> {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8f71bb40/solr/core/src/java/org/apache/solr/core/SolrCores.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCores.java b/solr/core/src/java/org/apache/solr/core/SolrCores.java
index 87ffac3..7f4b9a0 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCores.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCores.java
@@ -64,6 +64,10 @@ class SolrCores implements Observer {
   // to essentially queue them up to be handled via pendingCoreOps.
   private static final List<SolrCore> pendingCloses = new ArrayList<>();
 
+  private TransientSolrCoreCacheFactory transientCoreCache;
+
+  private TransientSolrCoreCache transientSolrCoreCache = null;
+  
   SolrCores(CoreContainer container) {
     this.container = container;
   }
@@ -71,8 +75,10 @@ class SolrCores implements Observer {
   protected void addCoreDescriptor(CoreDescriptor p) {
     synchronized (modifyLock) {
       if (p.isTransient()) {
-        if (container.getTransientCacheHandler() != null) {
-          container.getTransientCacheHandler().addTransientDescriptor(p.getName(), p);
+        if (getTransientCacheHandler() != null) {
+          getTransientCacheHandler().addTransientDescriptor(p.getName(), p);
+        } else {
+          log.warn("We encountered a core marked as transient, but there is no transient handler defined. This core will be inaccessible");
         }
       } else {
         residentDesciptors.put(p.getName(), p);
@@ -83,8 +89,8 @@ class SolrCores implements Observer {
   protected void removeCoreDescriptor(CoreDescriptor p) {
     synchronized (modifyLock) {
       if (p.isTransient()) {
-        if (container.getTransientCacheHandler() != null) {
-          container.getTransientCacheHandler().removeTransientDescriptor(p.getName());
+        if (getTransientCacheHandler() != null) {
+          getTransientCacheHandler().removeTransientDescriptor(p.getName());
         }
       } else {
         residentDesciptors.remove(p.getName());
@@ -92,6 +98,9 @@ class SolrCores implements Observer {
     }
   }
 
+  public void load(SolrResourceLoader loader) {
+    transientCoreCache = TransientSolrCoreCacheFactory.newInstance(loader, container);
+  }
   // We are shutting down. You can't hold the lock on the various lists of cores while they shut down, so we need to
   // make a temporary copy of the names and shut them down outside the lock.
   protected void close() {
@@ -99,7 +108,7 @@ class SolrCores implements Observer {
     Collection<SolrCore> coreList = new ArrayList<>();
 
     
-    TransientSolrCoreCache transientSolrCoreCache = container.getTransientCacheHandler();
+    TransientSolrCoreCache transientSolrCoreCache = getTransientCacheHandler();
     // Release observer
     if (transientSolrCoreCache != null) {
       transientSolrCoreCache.close();
@@ -147,25 +156,14 @@ class SolrCores implements Observer {
 
     } while (coreList.size() > 0);
   }
-
-  //WARNING! This should be the _only_ place you put anything into the list of transient cores!
-  protected SolrCore putTransientCore(NodeConfig cfg, String name, SolrCore core, SolrResourceLoader loader) {
-    SolrCore retCore = null;
-    log.info("Opening transient core {}", name);
-    synchronized (modifyLock) {
-      if (container.getTransientCacheHandler() != null) {
-        retCore = container.getTransientCacheHandler().addCore(name, core);
-      }
-    }
-    return retCore;
-  }
-
+  
   // Returns the old core if there was a core of the same name.
+  //WARNING! This should be the _only_ place you put anything into the list of transient cores!
   protected SolrCore putCore(CoreDescriptor cd, SolrCore core) {
     synchronized (modifyLock) {
       if (cd.isTransient()) {
-        if (container.getTransientCacheHandler() != null) {
-          return container.getTransientCacheHandler().addCore(cd.getName(), core);
+        if (getTransientCacheHandler() != null) {
+          return getTransientCacheHandler().addCore(cd.getName(), core);
         }
       } else {
         return cores.put(cd.getName(), core);
@@ -196,8 +194,8 @@ class SolrCores implements Observer {
 
   /**
    * Gets the cores that are currently loaded, i.e. cores that have
-   * 1> loadOnStartup=true and are either not-transient or, if transient, have been loaded and have not been swapped out
-   * 2> loadOnStartup=false and have been loaded but either non-transient or have not been swapped out.
+   * 1> loadOnStartup=true and are either not-transient or, if transient, have been loaded and have not been aged out
+   * 2> loadOnStartup=false and have been loaded but either non-transient or have not been aged out.
    * 
    * Put another way, this will not return any names of cores that are lazily loaded but have not been called for yet
    * or are transient and either not loaded or have been swapped out.
@@ -209,20 +207,19 @@ class SolrCores implements Observer {
 
     synchronized (modifyLock) {
       set.addAll(cores.keySet());
-      if (container.getTransientCacheHandler() != null) {
-        set.addAll(container.getTransientCacheHandler().getLoadedCoreNames());
+      if (getTransientCacheHandler() != null) {
+        set.addAll(getTransientCacheHandler().getLoadedCoreNames());
       }
     }
     return set;
   }
 
   /** This method is currently experimental.
-   * @return a Collection of the names that a specific core is mapped to.
-   * 
-   * Note: this implies that the core is loaded
+   *
+   * @return a Collection of the names that a specific core object is mapped to, there are more than one.
    */
   @Experimental
-  List<String> getCoreNames(SolrCore core) {
+  List<String> getNamesForCore(SolrCore core) {
     List<String> lst = new ArrayList<>();
 
     synchronized (modifyLock) {
@@ -231,8 +228,8 @@ class SolrCores implements Observer {
           lst.add(entry.getKey());
         }
       }
-      if (container.getTransientCacheHandler() != null) {
-        lst.addAll(container.getTransientCacheHandler().getNamesForCore(core));
+      if (getTransientCacheHandler() != null) {
+        lst.addAll(getTransientCacheHandler().getNamesForCore(core));
       }
     }
     return lst;
@@ -241,14 +238,14 @@ class SolrCores implements Observer {
   /**
    * Gets a list of all cores, loaded and unloaded 
    *
-   * @return all cores names, whether loaded or unloaded, transient or permenent.
+   * @return all cores names, whether loaded or unloaded, transient or permanent.
    */
   public Collection<String> getAllCoreNames() {
     Set<String> set = new TreeSet<>();
     synchronized (modifyLock) {
       set.addAll(cores.keySet());
-      if (container.getTransientCacheHandler() != null) {
-        set.addAll(container.getTransientCacheHandler().getAllCoreNames());
+      if (getTransientCacheHandler() != null) {
+        set.addAll(getTransientCacheHandler().getAllCoreNames());
       }
       set.addAll(residentDesciptors.keySet());
     }
@@ -302,7 +299,7 @@ class SolrCores implements Observer {
       SolrCore ret = cores.remove(name);
       // It could have been a newly-created core. It could have been a transient core. The newly-created cores
       // in particular should be checked. It could have been a dynamic core.
-      TransientSolrCoreCache transientHandler = container.getTransientCacheHandler();
+      TransientSolrCoreCache transientHandler = getTransientCacheHandler();
       if (ret == null && transientHandler != null) {
         ret = transientHandler.removeCore(name);
       }
@@ -315,8 +312,8 @@ class SolrCores implements Observer {
     synchronized (modifyLock) {
       SolrCore core = cores.get(name);
 
-      if (core == null && container.getTransientCacheHandler() != null) {
-        core = container.getTransientCacheHandler().getCore(name);
+      if (core == null && getTransientCacheHandler() != null) {
+        core = getTransientCacheHandler().getCore(name);
       }
 
       if (core != null && incRefCount) {
@@ -336,7 +333,7 @@ class SolrCores implements Observer {
       if (cores.containsKey(name)) {
         return true;
       }
-      if (container.getTransientCacheHandler() != null && container.getTransientCacheHandler().containsCore(name)) {
+      if (getTransientCacheHandler() != null && getTransientCacheHandler().containsCore(name)) {
         // Check pending
         for (SolrCore core : pendingCloses) {
           if (core.getName().equals(name)) {
@@ -355,7 +352,7 @@ class SolrCores implements Observer {
       if (cores.containsKey(name)) {
         return true;
       }
-      if (container.getTransientCacheHandler() != null && container.getTransientCacheHandler().containsCore(name)) {
+      if (getTransientCacheHandler() != null && getTransientCacheHandler().containsCore(name)) {
         return true;
       }
     }
@@ -367,8 +364,8 @@ class SolrCores implements Observer {
     synchronized (modifyLock) {
       CoreDescriptor desc = residentDesciptors.get(cname);
       if (desc == null) {
-        if (container.getTransientCacheHandler() == null) return null;
-        desc = container.getTransientCacheHandler().getTransientDescriptor(cname);
+        if (getTransientCacheHandler() == null) return null;
+        desc = getTransientCacheHandler().getTransientDescriptor(cname);
         if (desc == null) {
           return null;
         }
@@ -456,7 +453,7 @@ class SolrCores implements Observer {
     synchronized (modifyLock) {
       if (residentDesciptors.containsKey(coreName))
         return residentDesciptors.get(coreName);
-      return container.getTransientCacheHandler().getTransientDescriptor(coreName);
+      return getTransientCacheHandler().getTransientDescriptor(coreName);
     }
   }
 
@@ -545,4 +542,16 @@ class SolrCores implements Observer {
       modifyLock.notifyAll(); // Wakes up closer thread too
     }
   }
+
+  public TransientSolrCoreCache getTransientCacheHandler() {
+
+    if (transientCoreCache == null) {
+      log.error("No transient handler has been defined. Check solr.xml to see if an attempt to provide a custom " +
+          "TransientSolrCoreCacheFactory was done incorrectly since the default should have been used otherwise.");
+      return null;
+    }
+    return transientCoreCache.getTransientSolrCoreCache();
+  }
+
+
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8f71bb40/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index ef79875..22753dd 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -105,7 +105,6 @@ public class SolrResourceLoader implements ResourceLoader,Closeable
   private final List<ResourceLoaderAware> waitingForResources = Collections.synchronizedList(new ArrayList<ResourceLoaderAware>());
   private static final Charset UTF_8 = StandardCharsets.UTF_8;
 
-  //TODO: Solr5. Remove this completely when you obsolete putting <core> tags in solr.xml (See Solr-4196)
   private final Properties coreProperties;
 
   private volatile boolean live;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8f71bb40/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
index fcc51ac..518142a 100644
--- a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
@@ -535,9 +535,8 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
   }
 
   private void testStopAndStartCoresInOneInstance() throws Exception {
-    SolrClient client = clients.get(0);
-    String url3 = getBaseUrl(client);
-    try (final HttpSolrClient httpSolrClient = getHttpSolrClient(url3)) {
+    JettySolrRunner jetty = jettys.get(0);
+    try (final HttpSolrClient httpSolrClient = (HttpSolrClient) jetty.newClient()) {
       httpSolrClient.setConnectionTimeout(15000);
       httpSolrClient.setSoTimeout(60000);
       ThreadPoolExecutor executor = null;
@@ -548,7 +547,7 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
         int cnt = 3;
 
         // create the cores
-        createCores(httpSolrClient, executor, "multiunload2", 1, cnt);
+        createCollectionInOneInstance(httpSolrClient, jetty.getNodeName(), executor, "multiunload2", 1, cnt);
       } finally {
         if (executor != null) {
           ExecutorUtil.shutdownAndAwaitTermination(executor);
@@ -573,8 +572,13 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
 
   }
 
-  protected void createCores(final HttpSolrClient client,
-      ThreadPoolExecutor executor, final String collection, final int numShards, int cnt) {
+  /**
+   * Create a collection in single node
+   */
+  protected void createCollectionInOneInstance(final SolrClient client, String nodeName,
+                                               ThreadPoolExecutor executor, final String collection,
+                                               final int numShards, int numReplicas) {
+    assertNotNull(nodeName);
     try {
       assertEquals(0, CollectionAdminRequest.createCollection(collection, "conf1", numShards, 1)
           .setCreateNodeSet("")
@@ -582,22 +586,13 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
     } catch (SolrServerException | IOException e) {
       throw new RuntimeException(e);
     }
-    String nodeName = null;
-    for (JettySolrRunner jetty : jettys) {
-      if (client.getBaseURL().contains(":"+jetty.getLocalPort())) {
-        nodeName = jetty.getNodeName();
-        break;
-      }
-    }
-    assertNotNull(nodeName);
-    for (int i = 0; i < cnt; i++) {
+    for (int i = 0; i < numReplicas; i++) {
       final int freezeI = i;
-      final String freezeNodename = nodeName;
       executor.execute(() -> {
         try {
           assertTrue(CollectionAdminRequest.addReplicaToShard(collection, "shard"+((freezeI%numShards)+1))
               .setCoreName(collection + freezeI)
-              .setNode(freezeNodename).process(client).isSuccess());
+              .setNode(nodeName).process(client).isSuccess());
         } catch (SolrServerException | IOException e) {
           throw new RuntimeException(e);
         }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8f71bb40/solr/core/src/test/org/apache/solr/cloud/UnloadDistributedZkTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/UnloadDistributedZkTest.java b/solr/core/src/test/org/apache/solr/cloud/UnloadDistributedZkTest.java
index 19dd998..daa73cf 100644
--- a/solr/core/src/test/org/apache/solr/cloud/UnloadDistributedZkTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/UnloadDistributedZkTest.java
@@ -18,7 +18,6 @@ package org.apache.solr.cloud;
 
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
@@ -348,18 +347,17 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
   }
   
   private void testUnloadLotsOfCores() throws Exception {
-    SolrClient client = clients.get(2);
-    String url3 = getBaseUrl(client);
-    try (final HttpSolrClient adminClient = getHttpSolrClient(url3)) {
+    JettySolrRunner jetty = jettys.get(0);
+    try (final HttpSolrClient adminClient = (HttpSolrClient) jetty.newClient()) {
       adminClient.setConnectionTimeout(15000);
       adminClient.setSoTimeout(60000);
-      int cnt = atLeast(3);
+      int numReplicas = atLeast(3);
       ThreadPoolExecutor executor = new ExecutorUtil.MDCAwareThreadPoolExecutor(0, Integer.MAX_VALUE,
           5, TimeUnit.SECONDS, new SynchronousQueue<Runnable>(),
           new DefaultSolrThreadFactory("testExecutor"));
       try {
         // create the cores
-        createCores(adminClient, executor, "multiunload", 2, cnt);
+        createCollectionInOneInstance(adminClient, jetty.getNodeName(), executor, "multiunload", 2, numReplicas);
       } finally {
         ExecutorUtil.shutdownAndAwaitTermination(executor);
       }
@@ -368,7 +366,7 @@ public class UnloadDistributedZkTest extends BasicDistributedZkTest {
           TimeUnit.SECONDS, new SynchronousQueue<Runnable>(),
           new DefaultSolrThreadFactory("testExecutor"));
       try {
-        for (int j = 0; j < cnt; j++) {
+        for (int j = 0; j < numReplicas; j++) {
           final int freezeJ = j;
           executor.execute(() -> {
             Unload unloadCmd = new Unload(true);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8f71bb40/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java b/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
index d05cec9..d17d779 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
@@ -30,7 +30,6 @@ import org.apache.solr.core.CloudConfig;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.CoreDescriptor;
 import org.apache.solr.core.SolrXmlConfig;
-import org.apache.solr.core.TransientSolrCoreCache;
 import org.apache.solr.handler.admin.CoreAdminHandler;
 import org.apache.solr.handler.component.HttpShardHandlerFactory;
 import org.apache.solr.update.UpdateShardHandler;
@@ -328,30 +327,26 @@ public class ZkControllerTest extends SolrTestCaseJ4 {
 
   private static class MockCoreContainer extends CoreContainer {
     UpdateShardHandler updateShardHandler = new UpdateShardHandler(UpdateShardHandlerConfig.DEFAULT);
+
     public MockCoreContainer() {
       super(SolrXmlConfig.fromString(null, "<solr/>"));
       this.shardHandlerFactory = new HttpShardHandlerFactory();
       this.coreAdminHandler = new CoreAdminHandler();
     }
-    
+
     @Override
-    public void load() {}
-    
+    public void load() {
+    }
+
     @Override
     public UpdateShardHandler getUpdateShardHandler() {
       return updateShardHandler;
     }
-    
+
     @Override
     public void shutdown() {
       updateShardHandler.close();
       super.shutdown();
     }
-    
-    @Override
-    public TransientSolrCoreCache getTransientCacheHandler() {
-      return transientSolrCoreCache;
-    }
-
-  }
+  }    
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8f71bb40/solr/core/src/test/org/apache/solr/core/TestCoreDiscovery.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestCoreDiscovery.java b/solr/core/src/test/org/apache/solr/core/TestCoreDiscovery.java
index 95c8cb9..bf0568f 100644
--- a/solr/core/src/test/org/apache/solr/core/TestCoreDiscovery.java
+++ b/solr/core/src/test/org/apache/solr/core/TestCoreDiscovery.java
@@ -22,6 +22,7 @@ import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Paths;
+import java.util.Arrays;
 import java.util.Properties;
 
 import com.google.common.collect.ImmutableMap;
@@ -152,7 +153,7 @@ public class TestCoreDiscovery extends SolrTestCaseJ4 {
     try {
 
       TestLazyCores.checkInCores(cc, "core1");
-      TestLazyCores.checkNotInCores(cc, "lazy1", "core2");
+      TestLazyCores.checkNotInCores(cc, Arrays.asList("lazy1", "core2"));
 
       // force loading of core2 and lazy1 by getting them from the CoreContainer
       try (SolrCore core1 = cc.getCore("core1");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8f71bb40/solr/core/src/test/org/apache/solr/core/TestLazyCores.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestLazyCores.java b/solr/core/src/test/org/apache/solr/core/TestLazyCores.java
index 7c41470..4c50480 100644
--- a/solr/core/src/test/org/apache/solr/core/TestLazyCores.java
+++ b/solr/core/src/test/org/apache/solr/core/TestLazyCores.java
@@ -22,6 +22,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -100,8 +101,8 @@ public class TestLazyCores extends SolrTestCaseJ4 {
 
       // NOTE: This checks the initial state for loading, no need to do this elsewhere.
       checkInCores(cc, "collection1", "collection2", "collection5");
-      checkNotInCores(cc, "collection3", "collection4", "collection6", "collection7",
-          "collection8", "collection9");
+      checkNotInCores(cc, Arrays.asList("collection3", "collection4", "collection6", "collection7",
+          "collection8", "collection9"));
 
       SolrCore core1 = cc.getCore("collection1");
       assertFalse("core1 should not be transient", core1.getCoreDescriptor().isTransient());
@@ -176,7 +177,7 @@ public class TestLazyCores extends SolrTestCaseJ4 {
     CoreContainer cc = init();
     try {
       // Make sure Lazy4 isn't loaded. Should be loaded on the get
-      checkNotInCores(cc, "collection4");
+      checkNotInCores(cc, Arrays.asList("collection4"));
       SolrCore core4 = cc.getCore("collection4");
 
       checkSearch(core4);
@@ -205,7 +206,7 @@ public class TestLazyCores extends SolrTestCaseJ4 {
       // First check that all the cores that should be loaded at startup actually are.
 
       checkInCores(cc, "collection1", "collection2", "collection5");
-      checkNotInCores(cc, "collection3", "collection4", "collection6", "collection7", "collection8", "collection9");
+      checkNotInCores(cc, Arrays.asList("collection3", "collection4", "collection6", "collection7", "collection8", "collection9"));
 
       // By putting these in non-alpha order, we're also checking that we're  not just seeing an artifact.
       SolrCore core1 = cc.getCore("collection1");
@@ -215,28 +216,28 @@ public class TestLazyCores extends SolrTestCaseJ4 {
       SolrCore core5 = cc.getCore("collection5");
 
       checkInCores(cc, "collection1", "collection2", "collection3", "collection4", "collection5");
-      checkNotInCores(cc, "collection6", "collection7", "collection8", "collection9");
+      checkNotInCores(cc, Arrays.asList("collection6", "collection7", "collection8", "collection9"));
 
       // map should be full up, add one more and verify
       SolrCore core6 = cc.getCore("collection6");
       checkInCores(cc, "collection1", "collection2", "collection3", "collection4", "collection5",
           "collection6");
-      checkNotInCores(cc, "collection7", "collection8", "collection9");
+      checkNotInCores(cc, Arrays.asList("collection7", "collection8", "collection9"));
 
       SolrCore core7 = cc.getCore("collection7");
       checkInCores(cc, "collection1", "collection2", "collection3", "collection4", "collection5",
           "collection6", "collection7");
-      checkNotInCores(cc, "collection8", "collection9");
+      checkNotInCores(cc, Arrays.asList("collection8", "collection9"));
 
       SolrCore core8 = cc.getCore("collection8");
       checkInCores(cc, "collection1", "collection2", "collection4", "collection5", "collection6",
           "collection7", "collection8");
-      checkNotInCores(cc, "collection3", "collection9");
+      checkNotInCores(cc, Arrays.asList("collection3", "collection9"));
 
       SolrCore core9 = cc.getCore("collection9");
       checkInCores(cc, "collection1", "collection4", "collection5", "collection6", "collection7",
           "collection8", "collection9");
-      checkNotInCores(cc, "collection2", "collection3");
+      checkNotInCores(cc, Arrays.asList("collection2", "collection3"));
 
 
       // Note decrementing the count when the core is removed from the lazyCores list is appropriate, since the
@@ -396,8 +397,8 @@ public class TestLazyCores extends SolrTestCaseJ4 {
       final SolrCore c4 = cc.getCore("core4");
       final SolrCore c5 = cc.getCore("core5");
 
-      checkNotInCores(cc, "core1", "collection2", "collection3", "collection4", "collection6"
-          , "collection7", "collection8", "collection9");
+      checkNotInCores(cc, Arrays.asList("core1", "collection2", "collection3", "collection4", "collection6"
+          , "collection7", "collection8", "collection9"));
 
       checkInCores(cc, "collection1", "collection5", "core2", "core3", "core4", "core5");
 
@@ -467,7 +468,7 @@ public class TestLazyCores extends SolrTestCaseJ4 {
       checkInCores(cc, "core1", "core2");
 
       // Did the bad cores fail to load?
-      checkNotInCores(cc, "badSchema1", "badSchema2", "badConfig1", "badConfig2");
+      checkNotInCores(cc, Collections.emptyList(), Arrays.asList("badSchema1", "badSchema2", "badConfig1", "badConfig2"));
 
       //  Can we still search the "good" cores even though there were core init failures?
       SolrCore core1 = cc.getCore("core1");
@@ -644,7 +645,10 @@ public class TestLazyCores extends SolrTestCaseJ4 {
     }
   }
 
-  public static void checkNotInCores(CoreContainer cc, String... nameCheck) {
+  public static void checkNotInCores(CoreContainer cc, List<String> nameCheck) {
+    checkNotInCores(cc, nameCheck, Collections.emptyList());
+  }
+  public static void checkNotInCores(CoreContainer cc, List<String> nameCheck, List<String> namesBad) {
     Collection<String> loadedNames = cc.getLoadedCoreNames();
     for (String name : nameCheck) {
       assertFalse("core " + name + " was found in the list of cores", loadedNames.contains(name));
@@ -657,7 +661,7 @@ public class TestLazyCores extends SolrTestCaseJ4 {
     // the names in nameCheck should be loaded and thus should not be in names.
     
     Collection<String> allNames = cc.getAllCoreNames();
-    // Every core, loaded or not should be in the accumulated coredescriptors:
+    // Every core that has not failed to load should be in coreDescriptors.
     List<CoreDescriptor> descriptors = cc.getCoreDescriptors();
 
     assertEquals("There should be as many coreDescriptors as coreNames", allNames.size(), descriptors.size());
@@ -671,10 +675,18 @@ public class TestLazyCores extends SolrTestCaseJ4 {
           allNames.contains(name));
     }
 
+    // failed cores should have had their descriptors removed.
     for (String name : nameCheck) {
       assertTrue("Not-currently-loaded core " + name + " should have been found in the list of all possible core names",
           allNames.contains(name));
     }
+
+    // Failed cores should not be in coreDescriptors.
+    for (String name : namesBad) {
+      assertFalse("Failed core " + name + " should have been found in the list of all possible core names",
+          allNames.contains(name));
+    }
+
   }
 
   public static void checkInCores(CoreContainer cc, String... nameCheck) {
@@ -795,7 +807,7 @@ public class TestLazyCores extends SolrTestCaseJ4 {
       }
       
       // Just proving that some cores have been aged out.
-      checkNotInCores(cc, "collection2", "collection3");
+      checkNotInCores(cc, Arrays.asList("collection2", "collection3"));
 
       // Close our get of all cores above.
       for (SolrCore core : openCores) core.close();
@@ -807,7 +819,7 @@ public class TestLazyCores extends SolrTestCaseJ4 {
       for (String coreName : coreList) {
         // The point of this test is to insure that when cores are aged out and re-opened
         // that the docs are there, so insure that the core we're testing is gone, gone, gone. 
-        checkNotInCores(cc, coreName);
+        checkNotInCores(cc, Arrays.asList(coreName));
         
         // Load the core up again.
         SolrCore core = cc.getCore(coreName);


[10/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10272: Adding user _default configset to test-files, fixing solr & solr.cmd script bugs

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml b/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml
index 09d8e5a..f75303f 100644
--- a/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/solrconfig.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" ?>
-
+<?xml version="1.0" encoding="UTF-8" ?>
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -17,16 +16,1358 @@
  limitations under the License.
 -->
 
+<!-- 
+     For more details about configurations options that may appear in
+     this file, see http://wiki.apache.org/solr/SolrConfigXml. 
+-->
 <config>
+  <!-- In all configuration below, a prefix of "solr." for class names
+       is an alias that causes solr to search appropriate packages,
+       including org.apache.solr.(search|update|request|core|analysis)
+
+       You may also specify a fully qualified Java classname if you
+       have your own custom plugins.
+    -->
+
+  <!-- Controls what version of Lucene various components of Solr
+       adhere to.  Generally, you want to use the latest version to
+       get all bug fixes and improvements. It is highly recommended
+       that you fully re-index after changing this setting as it can
+       affect both how text is indexed and queried.
+  -->
+  <luceneMatchVersion>7.0.0</luceneMatchVersion>
+
+  <!-- <lib/> directives can be used to instruct Solr to load any Jars
+       identified and use them to resolve any "plugins" specified in
+       your solrconfig.xml or schema.xml (ie: Analyzers, Request
+       Handlers, etc...).
+
+       All directories and paths are resolved relative to the
+       instanceDir.
+
+       Please note that <lib/> directives are processed in the order
+       that they appear in your solrconfig.xml file, and are "stacked" 
+       on top of each other when building a ClassLoader - so if you have 
+       plugin jars with dependencies on other jars, the "lower level" 
+       dependency jars should be loaded first.
+
+       If a "./lib" directory exists in your instanceDir, all files
+       found in it are included as if you had used the following
+       syntax...
+       
+              <lib dir="./lib" />
+    -->
+
+  <!-- A 'dir' option by itself adds any files found in the directory 
+       to the classpath, this is useful for including all jars in a
+       directory.
+
+       When a 'regex' is specified in addition to a 'dir', only the
+       files in that directory which completely match the regex
+       (anchored on both ends) will be included.
+
+       If a 'dir' option (with or without a regex) is used and nothing
+       is found that matches, a warning will be logged.
+
+       The examples below can be used to load some solr-contribs along 
+       with their external dependencies.
+    -->
+  <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
+  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />
+
+  <lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" />
+  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" />
+
+  <lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />
+  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />
+
+  <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
+  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />
+  <!-- an exact 'path' can be used instead of a 'dir' to specify a 
+       specific jar file.  This will cause a serious error to be logged 
+       if it can't be loaded.
+    -->
+  <!--
+     <lib path="../a-jar-that-does-not-exist.jar" /> 
+  -->
+
+  <!-- Data Directory
+
+       Used to specify an alternate directory to hold all index data
+       other than the default ./data under the Solr home.  If
+       replication is in use, this should match the replication
+       configuration.
+    -->
+  <dataDir>${solr.data.dir:}</dataDir>
+
+
+  <!-- The DirectoryFactory to use for indexes.
+       
+       solr.StandardDirectoryFactory is filesystem
+       based and tries to pick the best implementation for the current
+       JVM and platform.  solr.NRTCachingDirectoryFactory, the default,
+       wraps solr.StandardDirectoryFactory and caches small files in memory
+       for better NRT performance.
+
+       One can force a particular implementation via solr.MMapDirectoryFactory,
+       solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.
+
+       solr.RAMDirectoryFactory is memory based and not persistent.
+    -->
+  <directoryFactory name="DirectoryFactory"
+                    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
+
+  <!-- The CodecFactory for defining the format of the inverted index.
+       The default implementation is SchemaCodecFactory, which is the official Lucene
+       index format, but hooks into the schema to provide per-field customization of
+       the postings lists and per-document values in the fieldType element
+       (postingsFormat/docValuesFormat). Note that most of the alternative implementations
+       are experimental, so if you choose to customize the index format, it's a good
+       idea to convert back to the official format e.g. via IndexWriter.addIndexes(IndexReader)
+       before upgrading to a newer version to avoid unnecessary reindexing.
+       A "compressionMode" string element can be added to <codecFactory> to choose 
+       between the existing compression modes in the default codec: "BEST_SPEED" (default)
+       or "BEST_COMPRESSION".
+  -->
+  <codecFactory class="solr.SchemaCodecFactory"/>
+
+  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       Index Config - These settings control low-level behavior of indexing
+       Most example settings here show the default value, but are commented
+       out, to more easily see where customizations have been made.
+       
+       Note: This replaces <indexDefaults> and <mainIndex> from older versions
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+  <indexConfig>
+    <!-- maxFieldLength was removed in 4.0. To get similar behavior, include a 
+         LimitTokenCountFilterFactory in your fieldType definition. E.g. 
+     <filter class="solr.LimitTokenCountFilterFactory" maxTokenCount="10000"/>
+    -->
+    <!-- Maximum time to wait for a write lock (ms) for an IndexWriter. Default: 1000 -->
+    <!-- <writeLockTimeout>1000</writeLockTimeout>  -->
+
+    <!-- Expert: Enabling compound file will use less files for the index, 
+         using fewer file descriptors on the expense of performance decrease. 
+         Default in Lucene is "true". Default in Solr is "false" (since 3.6) -->
+    <!-- <useCompoundFile>false</useCompoundFile> -->
+
+    <!-- ramBufferSizeMB sets the amount of RAM that may be used by Lucene
+         indexing for buffering added documents and deletions before they are
+         flushed to the Directory.
+         maxBufferedDocs sets a limit on the number of documents buffered
+         before flushing.
+         If both ramBufferSizeMB and maxBufferedDocs is set, then
+         Lucene will flush based on whichever limit is hit first.  -->
+    <!-- <ramBufferSizeMB>100</ramBufferSizeMB> -->
+    <!-- <maxBufferedDocs>1000</maxBufferedDocs> -->
+
+    <!-- Expert: Merge Policy 
+         The Merge Policy in Lucene controls how merging of segments is done.
+         The default since Solr/Lucene 3.3 is TieredMergePolicy.
+         The default since Lucene 2.3 was the LogByteSizeMergePolicy,
+         Even older versions of Lucene used LogDocMergePolicy.
+      -->
+    <!--
+        <mergePolicyFactory class="org.apache.solr.index.TieredMergePolicyFactory">
+          <int name="maxMergeAtOnce">10</int>
+          <int name="segmentsPerTier">10</int>
+          <double name="noCFSRatio">0.1</double>
+        </mergePolicyFactory>
+      -->
+
+    <!-- Expert: Merge Scheduler
+         The Merge Scheduler in Lucene controls how merges are
+         performed.  The ConcurrentMergeScheduler (Lucene 2.3 default)
+         can perform merges in the background using separate threads.
+         The SerialMergeScheduler (Lucene 2.2 default) does not.
+     -->
+    <!-- 
+       <mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler"/>
+       -->
+
+    <!-- LockFactory 
+
+         This option specifies which Lucene LockFactory implementation
+         to use.
+      
+         single = SingleInstanceLockFactory - suggested for a
+                  read-only index or when there is no possibility of
+                  another process trying to modify the index.
+         native = NativeFSLockFactory - uses OS native file locking.
+                  Do not use when multiple solr webapps in the same
+                  JVM are attempting to share a single index.
+         simple = SimpleFSLockFactory  - uses a plain file for locking
+
+         Defaults: 'native' is default for Solr3.6 and later, otherwise
+                   'simple' is the default
+
+         More details on the nuances of each LockFactory...
+         http://wiki.apache.org/lucene-java/AvailableLockFactories
+    -->
+    <lockType>${solr.lock.type:native}</lockType>
+
+    <!-- Commit Deletion Policy
+         Custom deletion policies can be specified here. The class must
+         implement org.apache.lucene.index.IndexDeletionPolicy.
+
+         The default Solr IndexDeletionPolicy implementation supports
+         deleting index commit points on number of commits, age of
+         commit point and optimized status.
+         
+         The latest commit point should always be preserved regardless
+         of the criteria.
+    -->
+    <!-- 
+    <deletionPolicy class="solr.SolrDeletionPolicy">
+    -->
+    <!-- The number of commit points to be kept -->
+    <!-- <str name="maxCommitsToKeep">1</str> -->
+    <!-- The number of optimized commit points to be kept -->
+    <!-- <str name="maxOptimizedCommitsToKeep">0</str> -->
+    <!--
+        Delete all commit points once they have reached the given age.
+        Supports DateMathParser syntax e.g.
+      -->
+    <!--
+       <str name="maxCommitAge">30MINUTES</str>
+       <str name="maxCommitAge">1DAY</str>
+    -->
+    <!-- 
+    </deletionPolicy>
+    -->
+
+    <!-- Lucene Infostream
+       
+         To aid in advanced debugging, Lucene provides an "InfoStream"
+         of detailed information when indexing.
+
+         Setting The value to true will instruct the underlying Lucene
+         IndexWriter to write its debugging info the specified file
+      -->
+    <!-- <infoStream file="INFOSTREAM.txt">false</infoStream> -->
+  </indexConfig>
+
+
+  <!-- JMX
+       
+       This example enables JMX if and only if an existing MBeanServer
+       is found, use this if you want to configure JMX through JVM
+       parameters. Remove this to disable exposing Solr configuration
+       and statistics to JMX.
+
+       For more details see http://wiki.apache.org/solr/SolrJmx
+    -->
+  <jmx />
+  <!-- If you want to connect to a particular server, specify the
+       agentId 
+    -->
+  <!-- <jmx agentId="myAgent" /> -->
+  <!-- If you want to start a new MBeanServer, specify the serviceUrl -->
+  <!-- <jmx serviceUrl="service:jmx:rmi:///jndi/rmi://localhost:9999/solr"/>
+    -->
+
+  <!-- The default high-performance update handler -->
+  <updateHandler class="solr.DirectUpdateHandler2">
+
+    <!-- Enables a transaction log, used for real-time get, durability, and
+         and solr cloud replica recovery.  The log can grow as big as
+         uncommitted changes to the index, so use of a hard autoCommit
+         is recommended (see below).
+         "dir" - the target directory for transaction logs, defaults to the
+                solr data directory.
+         "numVersionBuckets" - sets the number of buckets used to keep
+                track of max version values when checking for re-ordered
+                updates; increase this value to reduce the cost of
+                synchronizing access to version buckets during high-volume
+                indexing, this requires 8 bytes (long) * numVersionBuckets
+                of heap space per Solr core.
+    -->
+    <updateLog>
+      <str name="dir">${solr.ulog.dir:}</str>
+      <int name="numVersionBuckets">${solr.ulog.numVersionBuckets:65536}</int>
+    </updateLog>
+
+    <!-- AutoCommit
+
+         Perform a hard commit automatically under certain conditions.
+         Instead of enabling autoCommit, consider using "commitWithin"
+         when adding documents. 
+
+         http://wiki.apache.org/solr/UpdateXmlMessages
+
+         maxDocs - Maximum number of documents to add since the last
+                   commit before automatically triggering a new commit.
+
+         maxTime - Maximum amount of time in ms that is allowed to pass
+                   since a document was added before automatically
+                   triggering a new commit. 
+         openSearcher - if false, the commit causes recent index changes
+           to be flushed to stable storage, but does not cause a new
+           searcher to be opened to make those changes visible.
+
+         If the updateLog is enabled, then it's highly recommended to
+         have some sort of hard autoCommit to limit the log size.
+      -->
+    <autoCommit>
+      <maxTime>${solr.autoCommit.maxTime:15000}</maxTime>
+      <openSearcher>false</openSearcher>
+    </autoCommit>
+
+    <!-- softAutoCommit is like autoCommit except it causes a
+         'soft' commit which only ensures that changes are visible
+         but does not ensure that data is synced to disk.  This is
+         faster and more near-realtime friendly than a hard commit.
+      -->
+
+    <autoSoftCommit>
+      <maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime>
+    </autoSoftCommit>
+
+    <!-- Update Related Event Listeners
+         
+         Various IndexWriter related events can trigger Listeners to
+         take actions.
+
+         postCommit - fired after every commit or optimize command
+         postOptimize - fired after every optimize command
+      -->
+    <!-- The RunExecutableListener executes an external command from a
+         hook such as postCommit or postOptimize.
+         
+         exe - the name of the executable to run
+         dir - dir to use as the current working directory. (default=".")
+         wait - the calling thread waits until the executable returns. 
+                (default="true")
+         args - the arguments to pass to the program.  (default is none)
+         env - environment variables to set.  (default is none)
+      -->
+    <!-- This example shows how RunExecutableListener could be used
+         with the script based replication...
+         http://wiki.apache.org/solr/CollectionDistribution
+      -->
+    <!--
+       <listener event="postCommit" class="solr.RunExecutableListener">
+         <str name="exe">solr/bin/snapshooter</str>
+         <str name="dir">.</str>
+         <bool name="wait">true</bool>
+         <arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
+         <arr name="env"> <str>MYVAR=val1</str> </arr>
+       </listener>
+      -->
+
+  </updateHandler>
+
+  <!-- IndexReaderFactory
+
+       Use the following format to specify a custom IndexReaderFactory,
+       which allows for alternate IndexReader implementations.
+
+       ** Experimental Feature **
+
+       Please note - Using a custom IndexReaderFactory may prevent
+       certain other features from working. The API to
+       IndexReaderFactory may change without warning or may even be
+       removed from future releases if the problems cannot be
+       resolved.
+
+
+       ** Features that may not work with custom IndexReaderFactory **
+
+       The ReplicationHandler assumes a disk-resident index. Using a
+       custom IndexReader implementation may cause incompatibility
+       with ReplicationHandler and may cause replication to not work
+       correctly. See SOLR-1366 for details.
+
+    -->
+  <!--
+  <indexReaderFactory name="IndexReaderFactory" class="package.class">
+    <str name="someArg">Some Value</str>
+  </indexReaderFactory >
+  -->
+
+  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       Query section - these settings control query time things like caches
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+  <query>
+
+    <!-- Maximum number of clauses in each BooleanQuery,  an exception
+         is thrown if exceeded.  It is safe to increase or remove this setting,
+         since it is purely an arbitrary limit to try and catch user errors where
+         large boolean queries may not be the best implementation choice.
+      -->
+    <maxBooleanClauses>1024</maxBooleanClauses>
+
+    <!-- Solr Internal Query Caches
+
+         There are two implementations of cache available for Solr,
+         LRUCache, based on a synchronized LinkedHashMap, and
+         FastLRUCache, based on a ConcurrentHashMap.  
+
+         FastLRUCache has faster gets and slower puts in single
+         threaded operation and thus is generally faster than LRUCache
+         when the hit ratio of the cache is high (> 75%), and may be
+         faster under other scenarios on multi-cpu systems.
+    -->
+
+    <!-- Filter Cache
+
+         Cache used by SolrIndexSearcher for filters (DocSets),
+         unordered sets of *all* documents that match a query.  When a
+         new searcher is opened, its caches may be prepopulated or
+         "autowarmed" using data from caches in the old searcher.
+         autowarmCount is the number of items to prepopulate.  For
+         LRUCache, the autowarmed items will be the most recently
+         accessed items.
+
+         Parameters:
+           class - the SolrCache implementation LRUCache or
+               (LRUCache or FastLRUCache)
+           size - the maximum number of entries in the cache
+           initialSize - the initial capacity (number of entries) of
+               the cache.  (see java.util.HashMap)
+           autowarmCount - the number of entries to prepopulate from
+               and old cache.
+           maxRamMB - the maximum amount of RAM (in MB) that this cache is allowed
+                      to occupy. Note that when this option is specified, the size
+                      and initialSize parameters are ignored.
+      -->
+    <filterCache class="solr.FastLRUCache"
+                 size="512"
+                 initialSize="512"
+                 autowarmCount="0"/>
+
+    <!-- Query Result Cache
+         
+         Caches results of searches - ordered lists of document ids
+         (DocList) based on a query, a sort, and the range of documents requested.
+         Additional supported parameter by LRUCache:
+            maxRamMB - the maximum amount of RAM (in MB) that this cache is allowed
+                       to occupy
+      -->
+    <queryResultCache class="solr.LRUCache"
+                      size="512"
+                      initialSize="512"
+                      autowarmCount="0"/>
+
+    <!-- Document Cache
+
+         Caches Lucene Document objects (the stored fields for each
+         document).  Since Lucene internal document ids are transient,
+         this cache will not be autowarmed.
+      -->
+    <documentCache class="solr.LRUCache"
+                   size="512"
+                   initialSize="512"
+                   autowarmCount="0"/>
+
+    <!-- custom cache currently used by block join -->
+    <cache name="perSegFilter"
+           class="solr.search.LRUCache"
+           size="10"
+           initialSize="0"
+           autowarmCount="10"
+           regenerator="solr.NoOpRegenerator" />
+
+    <!-- Field Value Cache
+         
+         Cache used to hold field values that are quickly accessible
+         by document id.  The fieldValueCache is created by default
+         even if not configured here.
+      -->
+    <!--
+       <fieldValueCache class="solr.FastLRUCache"
+                        size="512"
+                        autowarmCount="128"
+                        showItems="32" />
+      -->
+
+    <!-- Custom Cache
+
+         Example of a generic cache.  These caches may be accessed by
+         name through SolrIndexSearcher.getCache(),cacheLookup(), and
+         cacheInsert().  The purpose is to enable easy caching of
+         user/application level data.  The regenerator argument should
+         be specified as an implementation of solr.CacheRegenerator 
+         if autowarming is desired.  
+      -->
+    <!--
+       <cache name="myUserCache"
+              class="solr.LRUCache"
+              size="4096"
+              initialSize="1024"
+              autowarmCount="1024"
+              regenerator="com.mycompany.MyRegenerator"
+              />
+      -->
+
+
+    <!-- Lazy Field Loading
+
+         If true, stored fields that are not requested will be loaded
+         lazily.  This can result in a significant speed improvement
+         if the usual case is to not load all stored fields,
+         especially if the skipped fields are large compressed text
+         fields.
+    -->
+    <enableLazyFieldLoading>true</enableLazyFieldLoading>
+
+    <!-- Use Filter For Sorted Query
+ 
+         A possible optimization that attempts to use a filter to
+         satisfy a search.  If the requested sort does not include
+         score, then the filterCache will be checked for a filter
+         matching the query. If found, the filter will be used as the
+         source of document ids, and then the sort will be applied to
+         that.
+ 
+         For most situations, this will not be useful unless you
+         frequently get the same search repeatedly with different sort
+         options, and none of them ever use "score"
+      -->
+    <!--
+       <useFilterForSortedQuery>true</useFilterForSortedQuery>
+      -->
+
+    <!-- Result Window Size
+ 
+         An optimization for use with the queryResultCache.  When a search
+         is requested, a superset of the requested number of document ids
+         are collected.  For example, if a search for a particular query
+         requests matching documents 10 through 19, and queryWindowSize is 50,
+         then documents 0 through 49 will be collected and cached.  Any further
+         requests in that range can be satisfied via the cache.  
+      -->
+    <queryResultWindowSize>20</queryResultWindowSize>
+
+    <!-- Maximum number of documents to cache for any entry in the
+         queryResultCache. 
+      -->
+    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
+
+    <!-- Query Related Event Listeners
+ 
+         Various IndexSearcher related events can trigger Listeners to
+         take actions.
+ 
+         newSearcher - fired whenever a new searcher is being prepared
+         and there is a current searcher handling requests (aka
+         registered).  It can be used to prime certain caches to
+         prevent long request times for certain requests.
+ 
+         firstSearcher - fired whenever a new searcher is being
+         prepared but there is no current registered searcher to handle
+         requests or to gain autowarming data from.
+ 
+         
+      -->
+    <!-- QuerySenderListener takes an array of NamedList and executes a
+         local query request for each NamedList in sequence. 
+      -->
+    <listener event="newSearcher" class="solr.QuerySenderListener">
+      <arr name="queries">
+        <!--
+           <lst><str name="q">solr</str><str name="sort">price asc</str></lst>
+           <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>
+          -->
+      </arr>
+    </listener>
+    <listener event="firstSearcher" class="solr.QuerySenderListener">
+      <arr name="queries">
+        <!--
+        <lst>
+          <str name="q">static firstSearcher warming in solrconfig.xml</str>
+        </lst>
+        -->
+      </arr>
+    </listener>
+
+    <!-- Use Cold Searcher
+
+         If a search request comes in and there is no current
+         registered searcher, then immediately register the still
+         warming searcher and use it.  If "false" then all requests
+         will block until the first searcher is done warming.
+      -->
+    <useColdSearcher>false</useColdSearcher>
+
+  </query>
+
+
+  <!-- Request Dispatcher
+
+       This section contains instructions for how the SolrDispatchFilter
+       should behave when processing requests for this SolrCore.
+
+    -->
+  <requestDispatcher>
+    <!-- Request Parsing
+
+         These settings indicate how Solr Requests may be parsed, and
+         what restrictions may be placed on the ContentStreams from
+         those requests
+
+         enableRemoteStreaming - enables use of the stream.file
+         and stream.url parameters for specifying remote streams.
+
+         multipartUploadLimitInKB - specifies the max size (in KiB) of
+         Multipart File Uploads that Solr will allow in a Request.
+         
+         formdataUploadLimitInKB - specifies the max size (in KiB) of
+         form data (application/x-www-form-urlencoded) sent via
+         POST. You can use POST to pass request parameters not
+         fitting into the URL.
+         
+         addHttpRequestToContext - if set to true, it will instruct
+         the requestParsers to include the original HttpServletRequest
+         object in the context map of the SolrQueryRequest under the 
+         key "httpRequest". It will not be used by any of the existing
+         Solr components, but may be useful when developing custom 
+         plugins.
+         
+         *** WARNING ***
+         Before enabling remote streaming, you should make sure your
+         system has authentication enabled.
+
+    <requestParsers enableRemoteStreaming="false"
+                    multipartUploadLimitInKB="-1"
+                    formdataUploadLimitInKB="-1"
+                    addHttpRequestToContext="false"/>
+      -->
+
+    <!-- HTTP Caching
+
+         Set HTTP caching related parameters (for proxy caches and clients).
+
+         The options below instruct Solr not to output any HTTP Caching
+         related headers
+      -->
+    <httpCaching never304="true" />
+    <!-- If you include a <cacheControl> directive, it will be used to
+         generate a Cache-Control header (as well as an Expires header
+         if the value contains "max-age=")
+         
+         By default, no Cache-Control header is generated.
+         
+         You can use the <cacheControl> option even if you have set
+         never304="true"
+      -->
+    <!--
+       <httpCaching never304="true" >
+         <cacheControl>max-age=30, public</cacheControl> 
+       </httpCaching>
+      -->
+    <!-- To enable Solr to respond with automatically generated HTTP
+         Caching headers, and to response to Cache Validation requests
+         correctly, set the value of never304="false"
+         
+         This will cause Solr to generate Last-Modified and ETag
+         headers based on the properties of the Index.
 
-  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
+         The following options can also be specified to affect the
+         values of these headers...
 
-  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+         lastModFrom - the default value is "openTime" which means the
+         Last-Modified value (and validation against If-Modified-Since
+         requests) will all be relative to when the current Searcher
+         was opened.  You can change it to lastModFrom="dirLastMod" if
+         you want the value to exactly correspond to when the physical
+         index was last modified.
 
-  <requestHandler name="my_error_handler" class="solr.ThrowErrorOnInitRequestHandler">
-    <str name="error">This is the _default configset, which is designed to throw error upon collection creation from unit tests. If you see this error while running a unit test, you might want to explicitly specify the configset (when creating a collection) you intend to use (usually named "conf1" or "conf" etc.).</str>
+         etagSeed="..." is an option you can change to force the ETag
+         header (and validation against If-None-Match requests) to be
+         different even if the index has not changed (ie: when making
+         significant changes to your config file)
+
+         (lastModifiedFrom and etagSeed are both ignored if you use
+         the never304="true" option)
+      -->
+    <!--
+       <httpCaching lastModifiedFrom="openTime"
+                    etagSeed="Solr">
+         <cacheControl>max-age=30, public</cacheControl> 
+       </httpCaching>
+      -->
+  </requestDispatcher>
+
+  <!-- Request Handlers 
+
+       http://wiki.apache.org/solr/SolrRequestHandler
+
+       Incoming queries will be dispatched to a specific handler by name
+       based on the path specified in the request.
+
+       If a Request Handler is declared with startup="lazy", then it will
+       not be initialized until the first request that uses it.
+
+    -->
+  <!-- SearchHandler
+
+       http://wiki.apache.org/solr/SearchHandler
+
+       For processing Search Queries, the primary Request Handler
+       provided with Solr is "SearchHandler" It delegates to a sequent
+       of SearchComponents (see below) and supports distributed
+       queries across multiple shards
+    -->
+  <requestHandler name="/select" class="solr.SearchHandler">
+    <!-- default values for query parameters can be specified, these
+         will be overridden by parameters in the request
+      -->
+    <lst name="defaults">
+      <str name="echoParams">explicit</str>
+      <int name="rows">10</int>
+      <!-- <str name="df">text</str> -->
+    </lst>
+    <!-- In addition to defaults, "appends" params can be specified
+         to identify values which should be appended to the list of
+         multi-val params from the query (or the existing "defaults").
+      -->
+    <!-- In this example, the param "fq=instock:true" would be appended to
+         any query time fq params the user may specify, as a mechanism for
+         partitioning the index, independent of any user selected filtering
+         that may also be desired (perhaps as a result of faceted searching).
+
+         NOTE: there is *absolutely* nothing a client can do to prevent these
+         "appends" values from being used, so don't use this mechanism
+         unless you are sure you always want it.
+      -->
+    <!--
+       <lst name="appends">
+         <str name="fq">inStock:true</str>
+       </lst>
+      -->
+    <!-- "invariants" are a way of letting the Solr maintainer lock down
+         the options available to Solr clients.  Any params values
+         specified here are used regardless of what values may be specified
+         in either the query, the "defaults", or the "appends" params.
+
+         In this example, the facet.field and facet.query params would
+         be fixed, limiting the facets clients can use.  Faceting is
+         not turned on by default - but if the client does specify
+         facet=true in the request, these are the only facets they
+         will be able to see counts for; regardless of what other
+         facet.field or facet.query params they may specify.
+
+         NOTE: there is *absolutely* nothing a client can do to prevent these
+         "invariants" values from being used, so don't use this mechanism
+         unless you are sure you always want it.
+      -->
+    <!--
+       <lst name="invariants">
+         <str name="facet.field">cat</str>
+         <str name="facet.field">manu_exact</str>
+         <str name="facet.query">price:[* TO 500]</str>
+         <str name="facet.query">price:[500 TO *]</str>
+       </lst>
+      -->
+    <!-- If the default list of SearchComponents is not desired, that
+         list can either be overridden completely, or components can be
+         prepended or appended to the default list.  (see below)
+      -->
+    <!--
+       <arr name="components">
+         <str>nameOfCustomComponent1</str>
+         <str>nameOfCustomComponent2</str>
+       </arr>
+      -->
+  </requestHandler>
+
+  <!-- A request handler that returns indented JSON by default -->
+  <requestHandler name="/query" class="solr.SearchHandler">
+    <lst name="defaults">
+      <str name="echoParams">explicit</str>
+      <str name="wt">json</str>
+      <str name="indent">true</str>
+    </lst>
+  </requestHandler>
+
+
+  <!-- A Robust Example
+       
+       This example SearchHandler declaration shows off usage of the
+       SearchHandler with many defaults declared
+
+       Note that multiple instances of the same Request Handler
+       (SearchHandler) can be registered multiple times with different
+       names (and different init parameters)
+    -->
+  <requestHandler name="/browse" class="solr.SearchHandler" useParams="query,facets,velocity,browse">
+    <lst name="defaults">
+      <str name="echoParams">explicit</str>
+    </lst>
+  </requestHandler>
+
+  <initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
+    <lst name="defaults">
+      <str name="df">_text_</str>
+    </lst>
+  </initParams>
+
+  <!-- Solr Cell Update Request Handler
+
+       http://wiki.apache.org/solr/ExtractingRequestHandler 
+
+    -->
+  <requestHandler name="/update/extract"
+                  startup="lazy"
+                  class="solr.extraction.ExtractingRequestHandler" >
+    <lst name="defaults">
+      <str name="lowernames">true</str>
+      <str name="fmap.meta">ignored_</str>
+      <str name="fmap.content">_text_</str>
+    </lst>
+  </requestHandler>
+
+  <!-- Search Components
+
+       Search components are registered to SolrCore and used by 
+       instances of SearchHandler (which can access them by name)
+       
+       By default, the following components are available:
+       
+       <searchComponent name="query"     class="solr.QueryComponent" />
+       <searchComponent name="facet"     class="solr.FacetComponent" />
+       <searchComponent name="mlt"       class="solr.MoreLikeThisComponent" />
+       <searchComponent name="highlight" class="solr.HighlightComponent" />
+       <searchComponent name="stats"     class="solr.StatsComponent" />
+       <searchComponent name="debug"     class="solr.DebugComponent" />
+   
+       Default configuration in a requestHandler would look like:
+
+       <arr name="components">
+         <str>query</str>
+         <str>facet</str>
+         <str>mlt</str>
+         <str>highlight</str>
+         <str>stats</str>
+         <str>debug</str>
+       </arr>
+
+       If you register a searchComponent to one of the standard names, 
+       that will be used instead of the default.
+
+       To insert components before or after the 'standard' components, use:
+    
+       <arr name="first-components">
+         <str>myFirstComponentName</str>
+       </arr>
+    
+       <arr name="last-components">
+         <str>myLastComponentName</str>
+       </arr>
+
+       NOTE: The component registered with the name "debug" will
+       always be executed after the "last-components" 
+       
+     -->
+
+  <!-- Spell Check
+
+       The spell check component can return a list of alternative spelling
+       suggestions.  
+
+       http://wiki.apache.org/solr/SpellCheckComponent
+    -->
+  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
+
+    <str name="queryAnalyzerFieldType">text_general</str>
+
+    <!-- Multiple "Spell Checkers" can be declared and used by this
+         component
+      -->
+
+    <!-- a spellchecker built from a field of the main index -->
+    <lst name="spellchecker">
+      <str name="name">default</str>
+      <str name="field">_text_</str>
+      <str name="classname">solr.DirectSolrSpellChecker</str>
+      <!-- the spellcheck distance measure used, the default is the internal levenshtein -->
+      <str name="distanceMeasure">internal</str>
+      <!-- minimum accuracy needed to be considered a valid spellcheck suggestion -->
+      <float name="accuracy">0.5</float>
+      <!-- the maximum #edits we consider when enumerating terms: can be 1 or 2 -->
+      <int name="maxEdits">2</int>
+      <!-- the minimum shared prefix when enumerating terms -->
+      <int name="minPrefix">1</int>
+      <!-- maximum number of inspections per result. -->
+      <int name="maxInspections">5</int>
+      <!-- minimum length of a query term to be considered for correction -->
+      <int name="minQueryLength">4</int>
+      <!-- maximum threshold of documents a query term can appear to be considered for correction -->
+      <float name="maxQueryFrequency">0.01</float>
+      <!-- uncomment this to require suggestions to occur in 1% of the documents
+        <float name="thresholdTokenFrequency">.01</float>
+      -->
+    </lst>
+
+    <!-- a spellchecker that can break or combine words.  See "/spell" handler below for usage -->
+    <!--
+    <lst name="spellchecker">
+      <str name="name">wordbreak</str>
+      <str name="classname">solr.WordBreakSolrSpellChecker</str>
+      <str name="field">name</str>
+      <str name="combineWords">true</str>
+      <str name="breakWords">true</str>
+      <int name="maxChanges">10</int>
+    </lst>
+    -->
+  </searchComponent>
+
+  <!-- A request handler for demonstrating the spellcheck component.  
+
+       NOTE: This is purely as an example.  The whole purpose of the
+       SpellCheckComponent is to hook it into the request handler that
+       handles your normal user queries so that a separate request is
+       not needed to get suggestions.
+
+       IN OTHER WORDS, THERE IS REALLY GOOD CHANCE THE SETUP BELOW IS
+       NOT WHAT YOU WANT FOR YOUR PRODUCTION SYSTEM!
+       
+       See http://wiki.apache.org/solr/SpellCheckComponent for details
+       on the request parameters.
+    -->
+  <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
+    <lst name="defaults">
+      <!-- Solr will use suggestions from both the 'default' spellchecker
+           and from the 'wordbreak' spellchecker and combine them.
+           collations (re-written queries) can include a combination of
+           corrections from both spellcheckers -->
+      <str name="spellcheck.dictionary">default</str>
+      <str name="spellcheck">on</str>
+      <str name="spellcheck.extendedResults">true</str>
+      <str name="spellcheck.count">10</str>
+      <str name="spellcheck.alternativeTermCount">5</str>
+      <str name="spellcheck.maxResultsForSuggest">5</str>
+      <str name="spellcheck.collate">true</str>
+      <str name="spellcheck.collateExtendedResults">true</str>
+      <str name="spellcheck.maxCollationTries">10</str>
+      <str name="spellcheck.maxCollations">5</str>
+    </lst>
+    <arr name="last-components">
+      <str>spellcheck</str>
+    </arr>
+  </requestHandler>
+
+  <!-- Term Vector Component
+
+       http://wiki.apache.org/solr/TermVectorComponent
+    -->
+  <searchComponent name="tvComponent" class="solr.TermVectorComponent"/>
+
+  <!-- A request handler for demonstrating the term vector component
+
+       This is purely as an example.
+
+       In reality you will likely want to add the component to your 
+       already specified request handlers. 
+    -->
+  <requestHandler name="/tvrh" class="solr.SearchHandler" startup="lazy">
+    <lst name="defaults">
+      <bool name="tv">true</bool>
+    </lst>
+    <arr name="last-components">
+      <str>tvComponent</str>
+    </arr>
   </requestHandler>
 
-  <schemaFactory class="ClassicIndexSchemaFactory"/>
+  <!-- Clustering Component. (Omitted here. See the default Solr example for a typical configuration.) -->
+
+  <!-- Terms Component
+
+       http://wiki.apache.org/solr/TermsComponent
+
+       A component to return terms and document frequency of those
+       terms
+    -->
+  <searchComponent name="terms" class="solr.TermsComponent"/>
+
+  <!-- A request handler for demonstrating the terms component -->
+  <requestHandler name="/terms" class="solr.SearchHandler" startup="lazy">
+    <lst name="defaults">
+      <bool name="terms">true</bool>
+      <bool name="distrib">false</bool>
+    </lst>
+    <arr name="components">
+      <str>terms</str>
+    </arr>
+  </requestHandler>
+
+
+  <!-- Query Elevation Component
+
+       http://wiki.apache.org/solr/QueryElevationComponent
+
+       a search component that enables you to configure the top
+       results for a given query regardless of the normal lucene
+       scoring.
+    -->
+  <searchComponent name="elevator" class="solr.QueryElevationComponent" >
+    <!-- pick a fieldType to analyze queries -->
+    <str name="queryFieldType">string</str>
+    <str name="config-file">elevate.xml</str>
+  </searchComponent>
+
+  <!-- A request handler for demonstrating the elevator component -->
+  <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">
+    <lst name="defaults">
+      <str name="echoParams">explicit</str>
+    </lst>
+    <arr name="last-components">
+      <str>elevator</str>
+    </arr>
+  </requestHandler>
+
+  <!-- Highlighting Component
+
+       http://wiki.apache.org/solr/HighlightingParameters
+    -->
+  <searchComponent class="solr.HighlightComponent" name="highlight">
+    <highlighting>
+      <!-- Configure the standard fragmenter -->
+      <!-- This could most likely be commented out in the "default" case -->
+      <fragmenter name="gap"
+                  default="true"
+                  class="solr.highlight.GapFragmenter">
+        <lst name="defaults">
+          <int name="hl.fragsize">100</int>
+        </lst>
+      </fragmenter>
+
+      <!-- A regular-expression-based fragmenter 
+           (for sentence extraction) 
+        -->
+      <fragmenter name="regex"
+                  class="solr.highlight.RegexFragmenter">
+        <lst name="defaults">
+          <!-- slightly smaller fragsizes work better because of slop -->
+          <int name="hl.fragsize">70</int>
+          <!-- allow 50% slop on fragment sizes -->
+          <float name="hl.regex.slop">0.5</float>
+          <!-- a basic sentence pattern -->
+          <str name="hl.regex.pattern">[-\w ,/\n\&quot;&apos;]{20,200}</str>
+        </lst>
+      </fragmenter>
+
+      <!-- Configure the standard formatter -->
+      <formatter name="html"
+                 default="true"
+                 class="solr.highlight.HtmlFormatter">
+        <lst name="defaults">
+          <str name="hl.simple.pre"><![CDATA[<em>]]></str>
+          <str name="hl.simple.post"><![CDATA[</em>]]></str>
+        </lst>
+      </formatter>
+
+      <!-- Configure the standard encoder -->
+      <encoder name="html"
+               class="solr.highlight.HtmlEncoder" />
+
+      <!-- Configure the standard fragListBuilder -->
+      <fragListBuilder name="simple"
+                       class="solr.highlight.SimpleFragListBuilder"/>
+
+      <!-- Configure the single fragListBuilder -->
+      <fragListBuilder name="single"
+                       class="solr.highlight.SingleFragListBuilder"/>
+
+      <!-- Configure the weighted fragListBuilder -->
+      <fragListBuilder name="weighted"
+                       default="true"
+                       class="solr.highlight.WeightedFragListBuilder"/>
+
+      <!-- default tag FragmentsBuilder -->
+      <fragmentsBuilder name="default"
+                        default="true"
+                        class="solr.highlight.ScoreOrderFragmentsBuilder">
+        <!-- 
+        <lst name="defaults">
+          <str name="hl.multiValuedSeparatorChar">/</str>
+        </lst>
+        -->
+      </fragmentsBuilder>
+
+      <!-- multi-colored tag FragmentsBuilder -->
+      <fragmentsBuilder name="colored"
+                        class="solr.highlight.ScoreOrderFragmentsBuilder">
+        <lst name="defaults">
+          <str name="hl.tag.pre"><![CDATA[
+               <b style="background:yellow">,<b style="background:lawgreen">,
+               <b style="background:aquamarine">,<b style="background:magenta">,
+               <b style="background:palegreen">,<b style="background:coral">,
+               <b style="background:wheat">,<b style="background:khaki">,
+               <b style="background:lime">,<b style="background:deepskyblue">]]></str>
+          <str name="hl.tag.post"><![CDATA[</b>]]></str>
+        </lst>
+      </fragmentsBuilder>
+
+      <boundaryScanner name="default"
+                       default="true"
+                       class="solr.highlight.SimpleBoundaryScanner">
+        <lst name="defaults">
+          <str name="hl.bs.maxScan">10</str>
+          <str name="hl.bs.chars">.,!? &#9;&#10;&#13;</str>
+        </lst>
+      </boundaryScanner>
+
+      <boundaryScanner name="breakIterator"
+                       class="solr.highlight.BreakIteratorBoundaryScanner">
+        <lst name="defaults">
+          <!-- type should be one of CHARACTER, WORD(default), LINE and SENTENCE -->
+          <str name="hl.bs.type">WORD</str>
+          <!-- language and country are used when constructing Locale object.  -->
+          <!-- And the Locale object will be used when getting instance of BreakIterator -->
+          <str name="hl.bs.language">en</str>
+          <str name="hl.bs.country">US</str>
+        </lst>
+      </boundaryScanner>
+    </highlighting>
+  </searchComponent>
+
+  <!-- Update Processors
+
+       Chains of Update Processor Factories for dealing with Update
+       Requests can be declared, and then used by name in Update
+       Request Processors
+
+       http://wiki.apache.org/solr/UpdateRequestProcessor
+
+    -->
+  
+  <!-- Add unknown fields to the schema 
+  
+       Field type guessing update processors that will
+       attempt to parse string-typed field values as Booleans, Longs,
+       Doubles, or Dates, and then add schema fields with the guessed
+       field types.  
+       
+       These require that the schema is both managed and mutable, by
+       declaring schemaFactory as ManagedIndexSchemaFactory, with
+       mutable specified as true. 
+       
+       See http://wiki.apache.org/solr/GuessingFieldTypes
+    -->
+  <updateProcessor class="solr.UUIDUpdateProcessorFactory" name="uuid"/>
+  <updateProcessor class="solr.RemoveBlankFieldUpdateProcessorFactory" name="remove-blank"/>
+  <updateProcessor class="solr.FieldNameMutatingUpdateProcessorFactory" name="field-name-mutating">
+    <str name="pattern">[^\w-\.]</str>
+    <str name="replacement">_</str>
+  </updateProcessor>
+  <updateProcessor class="solr.ParseBooleanFieldUpdateProcessorFactory" name="parse-boolean"/>
+  <updateProcessor class="solr.ParseLongFieldUpdateProcessorFactory" name="parse-long"/>
+  <updateProcessor class="solr.ParseDoubleFieldUpdateProcessorFactory" name="parse-double"/>
+  <updateProcessor class="solr.ParseDateFieldUpdateProcessorFactory" name="parse-date">
+    <arr name="format">
+      <str>yyyy-MM-dd'T'HH:mm:ss.SSSZ</str>
+      <str>yyyy-MM-dd'T'HH:mm:ss,SSSZ</str>
+      <str>yyyy-MM-dd'T'HH:mm:ss.SSS</str>
+      <str>yyyy-MM-dd'T'HH:mm:ss,SSS</str>
+      <str>yyyy-MM-dd'T'HH:mm:ssZ</str>
+      <str>yyyy-MM-dd'T'HH:mm:ss</str>
+      <str>yyyy-MM-dd'T'HH:mmZ</str>
+      <str>yyyy-MM-dd'T'HH:mm</str>
+      <str>yyyy-MM-dd HH:mm:ss.SSSZ</str>
+      <str>yyyy-MM-dd HH:mm:ss,SSSZ</str>
+      <str>yyyy-MM-dd HH:mm:ss.SSS</str>
+      <str>yyyy-MM-dd HH:mm:ss,SSS</str>
+      <str>yyyy-MM-dd HH:mm:ssZ</str>
+      <str>yyyy-MM-dd HH:mm:ss</str>
+      <str>yyyy-MM-dd HH:mmZ</str>
+      <str>yyyy-MM-dd HH:mm</str>
+      <str>yyyy-MM-dd</str>
+    </arr>
+  </updateProcessor>
+  <updateProcessor class="solr.AddSchemaFieldsUpdateProcessorFactory" name="add-schema-fields">
+    <str name="defaultFieldType">strings</str>
+    <lst name="typeMapping">
+      <str name="valueClass">java.lang.Boolean</str>
+      <str name="fieldType">booleans</str>
+    </lst>
+    <lst name="typeMapping">
+      <str name="valueClass">java.util.Date</str>
+      <str name="fieldType">pdates</str>
+    </lst>
+    <lst name="typeMapping">
+      <str name="valueClass">java.lang.Long</str>
+      <str name="valueClass">java.lang.Integer</str>
+      <str name="fieldType">plongs</str>
+    </lst>
+    <lst name="typeMapping">
+      <str name="valueClass">java.lang.Number</str>
+      <str name="fieldType">pdoubles</str>
+    </lst>
+  </updateProcessor>
+
+  <!-- The update.autoCreateFields property can be turned to false to disable schemaless mode -->
+  <updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:true}"
+           processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date,add-schema-fields">
+    <processor class="solr.LogUpdateProcessorFactory"/>
+    <processor class="solr.DistributedUpdateProcessorFactory"/>
+    <processor class="solr.RunUpdateProcessorFactory"/>
+  </updateRequestProcessorChain>
+
+  <!-- Deduplication
+
+       An example dedup update processor that creates the "id" field
+       on the fly based on the hash code of some other fields.  This
+       example has overwriteDupes set to false since we are using the
+       id field as the signatureField and Solr will maintain
+       uniqueness based on that anyway.  
+       
+    -->
+  <!--
+     <updateRequestProcessorChain name="dedupe">
+       <processor class="solr.processor.SignatureUpdateProcessorFactory">
+         <bool name="enabled">true</bool>
+         <str name="signatureField">id</str>
+         <bool name="overwriteDupes">false</bool>
+         <str name="fields">name,features,cat</str>
+         <str name="signatureClass">solr.processor.Lookup3Signature</str>
+       </processor>
+       <processor class="solr.LogUpdateProcessorFactory" />
+       <processor class="solr.RunUpdateProcessorFactory" />
+     </updateRequestProcessorChain>
+    -->
+
+  <!-- Language identification
+
+       This example update chain identifies the language of the incoming
+       documents using the langid contrib. The detected language is
+       written to field language_s. No field name mapping is done.
+       The fields used for detection are text, title, subject and description,
+       making this example suitable for detecting languages form full-text
+       rich documents injected via ExtractingRequestHandler.
+       See more about langId at http://wiki.apache.org/solr/LanguageDetection
+    -->
+  <!--
+   <updateRequestProcessorChain name="langid">
+     <processor class="org.apache.solr.update.processor.TikaLanguageIdentifierUpdateProcessorFactory">
+       <str name="langid.fl">text,title,subject,description</str>
+       <str name="langid.langField">language_s</str>
+       <str name="langid.fallback">en</str>
+     </processor>
+     <processor class="solr.LogUpdateProcessorFactory" />
+     <processor class="solr.RunUpdateProcessorFactory" />
+   </updateRequestProcessorChain>
+  -->
+
+  <!-- Script update processor
+
+    This example hooks in an update processor implemented using JavaScript.
+
+    See more about the script update processor at http://wiki.apache.org/solr/ScriptUpdateProcessor
+  -->
+  <!--
+    <updateRequestProcessorChain name="script">
+      <processor class="solr.StatelessScriptUpdateProcessorFactory">
+        <str name="script">update-script.js</str>
+        <lst name="params">
+          <str name="config_param">example config parameter</str>
+        </lst>
+      </processor>
+      <processor class="solr.RunUpdateProcessorFactory" />
+    </updateRequestProcessorChain>
+  -->
+
+  <!-- Response Writers
+
+       http://wiki.apache.org/solr/QueryResponseWriter
+
+       Request responses will be written using the writer specified by
+       the 'wt' request parameter matching the name of a registered
+       writer.
+
+       The "default" writer is the default and will be used if 'wt' is
+       not specified in the request.
+    -->
+  <!-- The following response writers are implicitly configured unless
+       overridden...
+    -->
+  <!--
+     <queryResponseWriter name="xml" 
+                          default="true"
+                          class="solr.XMLResponseWriter" />
+     <queryResponseWriter name="json" class="solr.JSONResponseWriter"/>
+     <queryResponseWriter name="python" class="solr.PythonResponseWriter"/>
+     <queryResponseWriter name="ruby" class="solr.RubyResponseWriter"/>
+     <queryResponseWriter name="php" class="solr.PHPResponseWriter"/>
+     <queryResponseWriter name="phps" class="solr.PHPSerializedResponseWriter"/>
+     <queryResponseWriter name="csv" class="solr.CSVResponseWriter"/>
+     <queryResponseWriter name="schema.xml" class="solr.SchemaXmlResponseWriter"/>
+    -->
+
+  <queryResponseWriter name="json" class="solr.JSONResponseWriter">
+    <!-- For the purposes of the tutorial, JSON responses are written as
+     plain text so that they are easy to read in *any* browser.
+     If you expect a MIME type of "application/json" just remove this override.
+    -->
+    <str name="content-type">text/plain; charset=UTF-8</str>
+  </queryResponseWriter>
+
+  <!--
+     Custom response writers can be declared as needed...
+    -->
+  <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" startup="lazy">
+    <str name="template.base.dir">${velocity.template.base.dir:}</str>
+    <str name="solr.resource.loader.enabled">${velocity.solr.resource.loader.enabled:true}</str>
+    <str name="params.resource.loader.enabled">${velocity.params.resource.loader.enabled:false}</str>
+  </queryResponseWriter>
+
+  <!-- XSLT response writer transforms the XML output by any xslt file found
+       in Solr's conf/xslt directory.  Changes to xslt files are checked for
+       every xsltCacheLifetimeSeconds.  
+    -->
+  <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
+    <int name="xsltCacheLifetimeSeconds">5</int>
+  </queryResponseWriter>
+
+  <!-- Query Parsers
+
+       https://cwiki.apache.org/confluence/display/solr/Query+Syntax+and+Parsing
+
+       Multiple QParserPlugins can be registered by name, and then
+       used in either the "defType" param for the QueryComponent (used
+       by SearchHandler) or in LocalParams
+    -->
+  <!-- example of registering a query parser -->
+  <!--
+     <queryParser name="myparser" class="com.mycompany.MyQParserPlugin"/>
+    -->
+
+  <!-- Function Parsers
+
+       http://wiki.apache.org/solr/FunctionQuery
+
+       Multiple ValueSourceParsers can be registered by name, and then
+       used as function names when using the "func" QParser.
+    -->
+  <!-- example of registering a custom function parser  -->
+  <!--
+     <valueSourceParser name="myfunc" 
+                        class="com.mycompany.MyValueSourceParser" />
+    -->
+
+
+  <!-- Document Transformers
+       http://wiki.apache.org/solr/DocTransformers
+    -->
+  <!--
+     Could be something like:
+     <transformer name="db" class="com.mycompany.LoadFromDatabaseTransformer" >
+       <int name="connection">jdbc://....</int>
+     </transformer>
+     
+     To add a constant value to all docs, use:
+     <transformer name="mytrans2" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
+       <int name="value">5</int>
+     </transformer>
+     
+     If you want the user to still be able to change it with _value:something_ use this:
+     <transformer name="mytrans3" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
+       <double name="defaultValue">5</double>
+     </transformer>
 
+      If you are using the QueryElevationComponent, you may wish to mark documents that get boosted.  The
+      EditorialMarkerFactory will do exactly that:
+     <transformer name="qecBooster" class="org.apache.solr.response.transform.EditorialMarkerFactory" />
+    -->
 </config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/stopwords.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/stopwords.txt b/solr/core/src/test-files/solr/configsets/_default/conf/stopwords.txt
new file mode 100644
index 0000000..ae1e83e
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/stopwords.txt
@@ -0,0 +1,14 @@
+# 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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test-files/solr/configsets/_default/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/_default/conf/synonyms.txt b/solr/core/src/test-files/solr/configsets/_default/conf/synonyms.txt
new file mode 100644
index 0000000..eab4ee8
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/_default/conf/synonyms.txt
@@ -0,0 +1,29 @@
+# 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.
+
+#-----------------------------------------------------------------------
+#some test synonym mappings unlikely to appear in real input text
+aaafoo => aaabar
+bbbfoo => bbbfoo bbbbar
+cccfoo => cccbar cccbaz
+fooaaa,baraaa,bazaaa
+
+# Some synonym groups specific to this example
+GB,gib,gigabyte,gigabytes
+MB,mib,megabyte,megabytes
+Television, Televisions, TV, TVs
+#notice we use "gib" instead of "GiB" so any WordDelimiterGraphFilter coming
+#after us won't split it into two words.
+
+# Synonym mappings can be used for spelling correction too
+pixima => pixma
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java b/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
index a4ed93f..f2027b0 100644
--- a/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
@@ -62,16 +62,27 @@ public class CollectionsAPISolrJTest extends SolrCloudTestCase {
   @Test
   public void testCreateWithDefaultConfigSet() throws Exception {
     String collectionName = "solrj_default_configset";
-    CollectionAdminResponse response = CollectionAdminRequest.createCollection(collectionName, 2, 2) // no configset specified
+    CollectionAdminResponse response = CollectionAdminRequest.createCollection(collectionName, 2, 2)
         .process(cluster.getSolrClient());
 
-    // The _default configset (for the tests) is designed to error out upon collection creation,
-    // so we just ensure that the correct error message was obtained.
-    assertFalse(response.isSuccess());
-    System.out.println("Errors are: "+response.getErrorMessages());
-    assertTrue(response.getErrorMessages() != null && response.getErrorMessages().size() > 0);
-    assertTrue(response.getErrorMessages().getVal(0).contains("This is the _default configset, which is designed"
-        + " to throw error upon collection creation"));
+    assertEquals(0, response.getStatus());
+    assertTrue(response.isSuccess());
+    Map<String, NamedList<Integer>> coresStatus = response.getCollectionCoresStatus();
+    assertEquals(4, coresStatus.size());
+    for (int i=0; i<4; i++) {
+      NamedList<Integer> status = coresStatus.get(Assign.buildCoreName(collectionName, "shard" + (i/2+1), Replica.Type.NRT, (i%2+1)));
+      assertEquals(0, (int)status.get("status"));
+      assertTrue(status.get("QTime") > 0);
+    }
+
+    response = CollectionAdminRequest.deleteCollection(collectionName).process(cluster.getSolrClient());
+
+    assertEquals(0, response.getStatus());
+    assertTrue(response.isSuccess());
+    Map<String,NamedList<Integer>> nodesStatus = response.getCollectionNodesStatus();
+    assertEquals(4, nodesStatus.size());
+
+    waitForState("Expected " + collectionName + " to disappear from cluster state", collectionName, (n, c) -> c == null);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/85069cac/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
index 27fcfc0..a9e5837 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
@@ -34,6 +34,10 @@ import java.lang.invoke.MethodHandles;
 import java.net.URI;
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Deque;
@@ -43,6 +47,7 @@ import java.util.LinkedList;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
+import java.nio.file.SimpleFileVisitor;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
@@ -87,6 +92,7 @@ import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.ConfigSetProperties;
 import org.apache.solr.core.TestDynamicLoading;
 import org.apache.solr.security.BasicAuthIntegrationTest;
+import org.apache.solr.util.ExternalPaths;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
 import org.junit.After;
@@ -714,7 +720,46 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
 
     solrClient.close();
   }
+  
+  @Test
+  public void testUserAndTestDefaultConfigsetsAreSame() throws IOException {
+    File testDefaultConf = configset("_default").toFile();
+    log.info("Test _default path: " + testDefaultConf);
+    
+    File userDefaultConf = new File(ExternalPaths.DEFAULT_CONFIGSET);
+    log.info("User _default path: " + userDefaultConf);
+    
+    compareDirectories(userDefaultConf, testDefaultConf);
+  }
 
+  private static void compareDirectories(File userDefault, File testDefault) throws IOException {
+    assertTrue("Test _default doesn't exist: " + testDefault.getAbsolutePath(), testDefault.exists());
+    assertTrue("Test _default not a directory: " + testDefault.getAbsolutePath(),testDefault.isDirectory());
+    assertTrue("User _default doesn't exist: " + userDefault.getAbsolutePath(), userDefault.exists());
+    assertTrue("User _default not a directory: " + userDefault.getAbsolutePath(),userDefault.isDirectory());
+
+    Files.walkFileTree(userDefault.toPath(), new SimpleFileVisitor<Path>() {
+      @Override
+      public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
+        FileVisitResult result = super.preVisitDirectory(dir, attrs);
+        Path relativePath = userDefault.toPath().relativize(dir);
+        File testDefaultFile = testDefault.toPath().resolve(relativePath).toFile();
+        assertEquals("Mismatch in files", Arrays.toString(dir.toFile().list()), Arrays.toString(testDefaultFile.list()));
+        return result;
+      }
+      @Override
+      public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+        FileVisitResult result = super.visitFile(file, attrs);
+        Path relativePath = userDefault.toPath().relativize(file);
+        File testDefaultFile = testDefault.toPath().resolve(relativePath).toFile();
+        String userDefaultContents = FileUtils.readFileToString(file.toFile(), "UTF-8");
+        String testDefaultContents = FileUtils.readFileToString(testDefaultFile, "UTF-8");
+        assertEquals(testDefaultFile+" contents doesn't match expected ("+file+")", userDefaultContents, testDefaultContents);                    
+        return result;
+      }
+    });
+  }
+  
   private StringBuilder getConfigSetProps(Map<String, String> map) {
     return new StringBuilder(new String(Utils.toJSON(map), StandardCharsets.UTF_8));
   }


[28/53] [abbrv] lucene-solr:feature/autoscaling: Solr 7.0 release, bumping up version to 8 on master

Posted by sh...@apache.org.
Solr 7.0 release, bumping up version to 8 on master


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/3b6d7410
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/3b6d7410
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/3b6d7410

Branch: refs/heads/feature/autoscaling
Commit: 3b6d741016acc4a2f25a816fc56ba7486759968b
Parents: 2e1c506
Author: Anshum Gupta <an...@apple.com>
Authored: Fri Jun 30 10:40:27 2017 -0700
Committer: Anshum Gupta <an...@apple.com>
Committed: Fri Jun 30 10:40:27 2017 -0700

----------------------------------------------------------------------
 lucene/CHANGES.txt                                 |  3 +++
 .../src/java/org/apache/lucene/util/Version.java   | 15 +++++++++++----
 lucene/version.properties                          |  2 +-
 solr/CHANGES.txt                                   | 17 +++++++++++++++++
 .../example-DIH/solr/atom/conf/solrconfig.xml      |  2 +-
 .../example-DIH/solr/db/conf/solrconfig.xml        |  2 +-
 .../example-DIH/solr/mail/conf/solrconfig.xml      |  2 +-
 .../example-DIH/solr/solr/conf/solrconfig.xml      |  2 +-
 .../example-DIH/solr/tika/conf/solrconfig.xml      |  2 +-
 solr/example/files/conf/solrconfig.xml             |  2 +-
 .../solr/configsets/_default/conf/solrconfig.xml   |  2 +-
 .../conf/solrconfig.xml                            |  2 +-
 12 files changed, 40 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 909b6ce..a0a6815 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -3,6 +3,9 @@ Lucene Change Log
 For more information on past and future Lucene versions, please see:
 http://s.apache.org/luceneversions
 
+======================= Lucene 8.0.0 =======================
+(No Changes)
+
 ======================= Lucene 7.0.0 =======================
 
 New Features

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/lucene/core/src/java/org/apache/lucene/util/Version.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/Version.java b/lucene/core/src/java/org/apache/lucene/util/Version.java
index 94dcc8b..0b10d95 100644
--- a/lucene/core/src/java/org/apache/lucene/util/Version.java
+++ b/lucene/core/src/java/org/apache/lucene/util/Version.java
@@ -124,12 +124,19 @@ public final class Version {
 
   /**
    * Match settings and bugs in Lucene's 7.0.0 release.
-   *  <p>
-   *  Use this to get the latest &amp; greatest settings, bug
-   *  fixes, etc, for Lucene.
+   * @deprecated (8.0.0) Use latest
    */
+  @Deprecated
   public static final Version LUCENE_7_0_0 = new Version(7, 0, 0);
 
+  /**
+   * Match settings and bugs in Lucene's 8.0.0 release.
+   * <p>
+   * Use this to get the latest &amp; greatest settings, bug
+   * fixes, etc, for Lucene.
+   */
+  public static final Version LUCENE_8_0_0 = new Version(8, 0, 0);
+
   // To add a new version:
   //  * Only add above this comment
   //  * If the new version is the newest, change LATEST below and deprecate the previous LATEST
@@ -149,7 +156,7 @@ public final class Version {
    * some defaults may have changed and may break functionality 
    * in your application.
    */
-  public static final Version LATEST = LUCENE_7_0_0;
+  public static final Version LATEST = LUCENE_8_0_0;
 
   /**
    * Constant for backwards compatibility.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/lucene/version.properties
----------------------------------------------------------------------
diff --git a/lucene/version.properties b/lucene/version.properties
index 55730a2..98380f4 100644
--- a/lucene/version.properties
+++ b/lucene/version.properties
@@ -2,7 +2,7 @@
 
 # RELEASE MANAGER must change this file after creating a release and
 # enter new base version (format "x.y.z", no prefix/appendix): 
-version.base=7.0.0
+version.base=8.0.0
 
 # Other version property defaults, don't change:
 version.suffix=SNAPSHOT

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 0d2226f..2bb599a 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -16,6 +16,23 @@ In this release, there is an example Solr server including a bundled
 servlet container in the directory named "example".
 See the Quick Start guide at http://lucene.apache.org/solr/quickstart.html
 
+==================  8.0.0 ==================
+
+Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
+
+Versions of Major Components
+---------------------
+Apache Tika 1.13
+Carrot2 3.15.0
+Velocity 1.7 and Velocity Tools 2.0
+Apache UIMA 2.3.1
+Apache ZooKeeper 3.4.10
+Jetty 9.3.14.v20161028
+
+
+(No Changes)
+
+
 ==================  7.0.0 ==================
 
 Upgrading from Solr 6.x

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/solr/example/example-DIH/solr/atom/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/atom/conf/solrconfig.xml b/solr/example/example-DIH/solr/atom/conf/solrconfig.xml
index 22005dd..2b44ca6 100644
--- a/solr/example/example-DIH/solr/atom/conf/solrconfig.xml
+++ b/solr/example/example-DIH/solr/atom/conf/solrconfig.xml
@@ -36,7 +36,7 @@
     that you fully re-index after changing this setting as it can
     affect both how text is indexed and queried.
   -->
-  <luceneMatchVersion>7.0.0</luceneMatchVersion>
+  <luceneMatchVersion>8.0.0</luceneMatchVersion>
 
   <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar"/>
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/solr/example/example-DIH/solr/db/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/db/conf/solrconfig.xml b/solr/example/example-DIH/solr/db/conf/solrconfig.xml
index c03529e..aaef5b8 100644
--- a/solr/example/example-DIH/solr/db/conf/solrconfig.xml
+++ b/solr/example/example-DIH/solr/db/conf/solrconfig.xml
@@ -35,7 +35,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
   -->
-  <luceneMatchVersion>7.0.0</luceneMatchVersion>
+  <luceneMatchVersion>8.0.0</luceneMatchVersion>
 
   <!-- <lib/> directives can be used to instruct Solr to load any Jars
        identified and use them to resolve any "plugins" specified in

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/solr/example/example-DIH/solr/mail/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/mail/conf/solrconfig.xml b/solr/example/example-DIH/solr/mail/conf/solrconfig.xml
index 28f415c..5bd9f7a 100644
--- a/solr/example/example-DIH/solr/mail/conf/solrconfig.xml
+++ b/solr/example/example-DIH/solr/mail/conf/solrconfig.xml
@@ -35,7 +35,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
   -->
-  <luceneMatchVersion>7.0.0</luceneMatchVersion>
+  <luceneMatchVersion>8.0.0</luceneMatchVersion>
 
   <!-- <lib/> directives can be used to instruct Solr to load any Jars
        identified and use them to resolve any "plugins" specified in

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/solr/example/example-DIH/solr/solr/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/solr/conf/solrconfig.xml b/solr/example/example-DIH/solr/solr/conf/solrconfig.xml
index 7019be7..eea6999 100644
--- a/solr/example/example-DIH/solr/solr/conf/solrconfig.xml
+++ b/solr/example/example-DIH/solr/solr/conf/solrconfig.xml
@@ -35,7 +35,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
   -->
-  <luceneMatchVersion>7.0.0</luceneMatchVersion>
+  <luceneMatchVersion>8.0.0</luceneMatchVersion>
 
   <!-- <lib/> directives can be used to instruct Solr to load any Jars
        identified and use them to resolve any "plugins" specified in

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/solr/example/example-DIH/solr/tika/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/tika/conf/solrconfig.xml b/solr/example/example-DIH/solr/tika/conf/solrconfig.xml
index 38d5d8b..65ed56f 100644
--- a/solr/example/example-DIH/solr/tika/conf/solrconfig.xml
+++ b/solr/example/example-DIH/solr/tika/conf/solrconfig.xml
@@ -36,7 +36,7 @@
    that you fully re-index after changing this setting as it can
    affect both how text is indexed and queried.
   -->
-  <luceneMatchVersion>7.0.0</luceneMatchVersion>
+  <luceneMatchVersion>8.0.0</luceneMatchVersion>
 
   <!-- Load Data Import Handler and Apache Tika (extraction) libraries -->
   <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/solr/example/files/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/example/files/conf/solrconfig.xml b/solr/example/files/conf/solrconfig.xml
index 71fdd47..a2de3e4 100644
--- a/solr/example/files/conf/solrconfig.xml
+++ b/solr/example/files/conf/solrconfig.xml
@@ -35,7 +35,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
   -->
-  <luceneMatchVersion>7.0.0</luceneMatchVersion>
+  <luceneMatchVersion>8.0.0</luceneMatchVersion>
 
   <!-- <lib/> directives can be used to instruct Solr to load any Jars
        identified and use them to resolve any "plugins" specified in

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/solr/server/solr/configsets/_default/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/_default/conf/solrconfig.xml b/solr/server/solr/configsets/_default/conf/solrconfig.xml
index f75303f..c885f06 100644
--- a/solr/server/solr/configsets/_default/conf/solrconfig.xml
+++ b/solr/server/solr/configsets/_default/conf/solrconfig.xml
@@ -35,7 +35,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
   -->
-  <luceneMatchVersion>7.0.0</luceneMatchVersion>
+  <luceneMatchVersion>8.0.0</luceneMatchVersion>
 
   <!-- <lib/> directives can be used to instruct Solr to load any Jars
        identified and use them to resolve any "plugins" specified in

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3b6d7410/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml b/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
index 6d0ce68..8adf13e 100644
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
+++ b/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
@@ -35,7 +35,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
   -->
-  <luceneMatchVersion>7.0.0</luceneMatchVersion>
+  <luceneMatchVersion>8.0.0</luceneMatchVersion>
 
   <!-- <lib/> directives can be used to instruct Solr to load any Jars
        identified and use them to resolve any "plugins" specified in


[29/53] [abbrv] lucene-solr:feature/autoscaling: Move backcompat oldIndexes to unsupportedIndexes in TestBackwardsCompatibilty, and rename the index files to unsupported.

Posted by sh...@apache.org.
Move backcompat oldIndexes to unsupportedIndexes in TestBackwardsCompatibilty, and rename the index files to unsupported.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/774e3d8f
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/774e3d8f
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/774e3d8f

Branch: refs/heads/feature/autoscaling
Commit: 774e3d8f29e658da64e85bde07ecfb5fc30b2173
Parents: 3b6d741
Author: Anshum Gupta <an...@apple.com>
Authored: Fri Jun 30 10:45:50 2017 -0700
Committer: Anshum Gupta <an...@apple.com>
Committed: Fri Jun 30 10:45:50 2017 -0700

----------------------------------------------------------------------
 .../index/TestBackwardsCompatibility.java       |  52 +++++++++----------
 .../lucene/index/TestIndexWriterOnOldIndex.java |   2 +-
 .../org/apache/lucene/index/index.6.0.0-cfs.zip | Bin 15807 -> 0 bytes
 .../apache/lucene/index/index.6.0.0-nocfs.zip   | Bin 15806 -> 0 bytes
 .../org/apache/lucene/index/index.6.0.1-cfs.zip | Bin 15820 -> 0 bytes
 .../apache/lucene/index/index.6.0.1-nocfs.zip   | Bin 15823 -> 0 bytes
 .../org/apache/lucene/index/index.6.1.0-cfs.zip | Bin 15803 -> 0 bytes
 .../apache/lucene/index/index.6.1.0-nocfs.zip   | Bin 15829 -> 0 bytes
 .../org/apache/lucene/index/index.6.2.0-cfs.zip | Bin 15880 -> 0 bytes
 .../apache/lucene/index/index.6.2.0-nocfs.zip   | Bin 15867 -> 0 bytes
 .../org/apache/lucene/index/index.6.2.1-cfs.zip | Bin 15851 -> 0 bytes
 .../apache/lucene/index/index.6.2.1-nocfs.zip   | Bin 15845 -> 0 bytes
 .../org/apache/lucene/index/index.6.3.0-cfs.zip | Bin 15869 -> 0 bytes
 .../apache/lucene/index/index.6.3.0-nocfs.zip   | Bin 15876 -> 0 bytes
 .../org/apache/lucene/index/index.6.4.0-cfs.zip | Bin 15829 -> 0 bytes
 .../apache/lucene/index/index.6.4.0-nocfs.zip   | Bin 15831 -> 0 bytes
 .../org/apache/lucene/index/index.6.4.1-cfs.zip | Bin 15848 -> 0 bytes
 .../apache/lucene/index/index.6.4.1-nocfs.zip   | Bin 15838 -> 0 bytes
 .../org/apache/lucene/index/index.6.4.2-cfs.zip | Bin 15856 -> 0 bytes
 .../apache/lucene/index/index.6.4.2-nocfs.zip   | Bin 15886 -> 0 bytes
 .../org/apache/lucene/index/index.6.5.0-cfs.zip | Bin 15832 -> 0 bytes
 .../apache/lucene/index/index.6.5.0-nocfs.zip   | Bin 15836 -> 0 bytes
 .../org/apache/lucene/index/index.6.5.1-cfs.zip | Bin 15842 -> 0 bytes
 .../apache/lucene/index/index.6.5.1-nocfs.zip   | Bin 15827 -> 0 bytes
 .../org/apache/lucene/index/index.6.6.0-cfs.zip | Bin 15875 -> 0 bytes
 .../apache/lucene/index/index.6.6.0-nocfs.zip   | Bin 15883 -> 0 bytes
 .../lucene/index/index.630.brokenoffsets.zip    | Bin 3203 -> 0 bytes
 .../lucene/index/index.single-empty-doc.630.zip | Bin 1363 -> 0 bytes
 .../lucene/index/unsupported.6.0.0-cfs.zip      | Bin 0 -> 15807 bytes
 .../lucene/index/unsupported.6.0.0-nocfs.zip    | Bin 0 -> 15806 bytes
 .../lucene/index/unsupported.6.0.1-cfs.zip      | Bin 0 -> 15820 bytes
 .../lucene/index/unsupported.6.0.1-nocfs.zip    | Bin 0 -> 15823 bytes
 .../lucene/index/unsupported.6.1.0-cfs.zip      | Bin 0 -> 15803 bytes
 .../lucene/index/unsupported.6.1.0-nocfs.zip    | Bin 0 -> 15829 bytes
 .../lucene/index/unsupported.6.2.0-cfs.zip      | Bin 0 -> 15880 bytes
 .../lucene/index/unsupported.6.2.0-nocfs.zip    | Bin 0 -> 15867 bytes
 .../lucene/index/unsupported.6.2.1-cfs.zip      | Bin 0 -> 15851 bytes
 .../lucene/index/unsupported.6.2.1-nocfs.zip    | Bin 0 -> 15845 bytes
 .../lucene/index/unsupported.6.3.0-cfs.zip      | Bin 0 -> 15869 bytes
 .../lucene/index/unsupported.6.3.0-nocfs.zip    | Bin 0 -> 15876 bytes
 .../lucene/index/unsupported.6.4.0-cfs.zip      | Bin 0 -> 15829 bytes
 .../lucene/index/unsupported.6.4.0-nocfs.zip    | Bin 0 -> 15831 bytes
 .../lucene/index/unsupported.6.4.1-cfs.zip      | Bin 0 -> 15848 bytes
 .../lucene/index/unsupported.6.4.1-nocfs.zip    | Bin 0 -> 15838 bytes
 .../lucene/index/unsupported.6.4.2-cfs.zip      | Bin 0 -> 15856 bytes
 .../lucene/index/unsupported.6.4.2-nocfs.zip    | Bin 0 -> 15886 bytes
 .../lucene/index/unsupported.6.5.0-cfs.zip      | Bin 0 -> 15832 bytes
 .../lucene/index/unsupported.6.5.0-nocfs.zip    | Bin 0 -> 15836 bytes
 .../lucene/index/unsupported.6.5.1-cfs.zip      | Bin 0 -> 15842 bytes
 .../lucene/index/unsupported.6.5.1-nocfs.zip    | Bin 0 -> 15827 bytes
 .../lucene/index/unsupported.6.6.0-cfs.zip      | Bin 0 -> 15875 bytes
 .../lucene/index/unsupported.6.6.0-nocfs.zip    | Bin 0 -> 15883 bytes
 .../index/unsupported.630.brokenoffsets.zip     | Bin 0 -> 3203 bytes
 .../index/unsupported.single-empty-doc.630.zip  | Bin 0 -> 1363 bytes
 54 files changed, 27 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
index 1250a30..ad50382 100644
--- a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
+++ b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
@@ -276,30 +276,6 @@ public class TestBackwardsCompatibility extends LuceneTestCase {
   }
 
   final static String[] oldNames = {
-    "6.0.0-cfs",
-    "6.0.0-nocfs",
-    "6.0.1-cfs",
-    "6.0.1-nocfs",
-    "6.1.0-cfs",
-    "6.1.0-nocfs",
-    "6.2.0-cfs",
-    "6.2.0-nocfs",
-    "6.2.1-cfs",
-    "6.2.1-nocfs",
-    "6.3.0-cfs",
-    "6.3.0-nocfs",
-    "6.4.0-cfs",
-    "6.4.0-nocfs",
-    "6.4.1-cfs",
-    "6.4.1-nocfs",
-    "6.4.2-cfs",
-    "6.4.2-nocfs",
-    "6.5.0-cfs",
-    "6.5.0-nocfs",
-    "6.5.1-cfs",
-    "6.5.1-nocfs",
-    "6.6.0-cfs",
-    "6.6.0-nocfs"
   };
   
   final String[] unsupportedNames = {
@@ -432,7 +408,31 @@ public class TestBackwardsCompatibility extends LuceneTestCase {
       "5.5.3-cfs",
       "5.5.3-nocfs",
       "5.5.4-cfs",
-      "5.5.4-nocfs"
+      "5.5.4-nocfs",
+      "6.0.0-cfs",
+      "6.0.0-nocfs",
+      "6.0.1-cfs",
+      "6.0.1-nocfs",
+      "6.1.0-cfs",
+      "6.1.0-nocfs",
+      "6.2.0-cfs",
+      "6.2.0-nocfs",
+      "6.2.1-cfs",
+      "6.2.1-nocfs",
+      "6.3.0-cfs",
+      "6.3.0-nocfs",
+      "6.4.0-cfs",
+      "6.4.0-nocfs",
+      "6.4.1-cfs",
+      "6.4.1-nocfs",
+      "6.4.2-cfs",
+      "6.4.2-nocfs",
+      "6.5.0-cfs",
+      "6.5.0-nocfs",
+      "6.5.1-cfs",
+      "6.5.1-nocfs",
+      "6.6.0-cfs",
+      "6.6.0-nocfs"
   };
 
   // TODO: on 6.0.0 release, gen the single segment indices and add here:
@@ -1495,7 +1495,7 @@ public class TestBackwardsCompatibility extends LuceneTestCase {
     }
     reader.close();
   }
-  
+
   public void testDocValuesUpdates() throws Exception {
     Path oldIndexDir = createTempDir("dvupdates");
     TestUtil.unzip(getDataInputStream(dvUpdatesIndex), oldIndexDir);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/TestIndexWriterOnOldIndex.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestIndexWriterOnOldIndex.java b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestIndexWriterOnOldIndex.java
index c77b926..b48b0fd 100644
--- a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestIndexWriterOnOldIndex.java
+++ b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestIndexWriterOnOldIndex.java
@@ -29,7 +29,7 @@ import org.apache.lucene.util.Version;
 public class TestIndexWriterOnOldIndex extends LuceneTestCase {
 
   public void testOpenModeAndCreatedVersion() throws IOException {
-    InputStream resource = getClass().getResourceAsStream("index.single-empty-doc.630.zip");
+    InputStream resource = getClass().getResourceAsStream("unsupported.index.single-empty-doc.630.zip");
     assertNotNull(resource);
     Path path = createTempDir();
     TestUtil.unzip(resource, path);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.0-cfs.zip
deleted file mode 100644
index c8622df..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.0-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.0-nocfs.zip
deleted file mode 100644
index 3c245d1..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.0-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.1-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.1-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.1-cfs.zip
deleted file mode 100644
index f10f1a8..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.1-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.1-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.1-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.1-nocfs.zip
deleted file mode 100644
index d45b7fd..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.0.1-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.1.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.1.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.1.0-cfs.zip
deleted file mode 100644
index ff1b952..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.1.0-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.1.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.1.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.1.0-nocfs.zip
deleted file mode 100644
index 4e2d6a8..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.1.0-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.0-cfs.zip
deleted file mode 100644
index 36b6d83..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.0-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.0-nocfs.zip
deleted file mode 100644
index 95ae26c..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.0-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.1-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.1-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.1-cfs.zip
deleted file mode 100644
index 36b2e1d..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.1-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.1-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.1-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.1-nocfs.zip
deleted file mode 100644
index 411825e..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.2.1-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.3.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.3.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.3.0-cfs.zip
deleted file mode 100644
index 737054d..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.3.0-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.3.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.3.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.3.0-nocfs.zip
deleted file mode 100644
index 14a82d7..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.3.0-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.0-cfs.zip
deleted file mode 100644
index e5bad02..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.0-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.0-nocfs.zip
deleted file mode 100644
index 70fc6ee..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.0-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.1-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.1-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.1-cfs.zip
deleted file mode 100644
index 477859e..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.1-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.1-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.1-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.1-nocfs.zip
deleted file mode 100644
index 7411118..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.1-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.2-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.2-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.2-cfs.zip
deleted file mode 100644
index eee89f4..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.2-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.2-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.2-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.2-nocfs.zip
deleted file mode 100644
index d55a6f6..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.4.2-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.0-cfs.zip
deleted file mode 100644
index 5bff9b2..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.0-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.0-nocfs.zip
deleted file mode 100644
index 72e7dc2..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.0-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.1-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.1-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.1-cfs.zip
deleted file mode 100644
index 21eb747..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.1-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.1-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.1-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.1-nocfs.zip
deleted file mode 100644
index 832d85d..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.5.1-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.6.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.6.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.6.0-cfs.zip
deleted file mode 100644
index 36e0b3d..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.6.0-cfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.6.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.6.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.6.0-nocfs.zip
deleted file mode 100644
index 90ced65..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.6.6.0-nocfs.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.630.brokenoffsets.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.630.brokenoffsets.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.630.brokenoffsets.zip
deleted file mode 100644
index 3cf476a..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.630.brokenoffsets.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/index.single-empty-doc.630.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.single-empty-doc.630.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/index.single-empty-doc.630.zip
deleted file mode 100644
index 1bf1d08..0000000
Binary files a/lucene/backward-codecs/src/test/org/apache/lucene/index/index.single-empty-doc.630.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.0-cfs.zip
new file mode 100644
index 0000000..c8622df
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.0-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.0-nocfs.zip
new file mode 100644
index 0000000..3c245d1
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.0-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.1-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.1-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.1-cfs.zip
new file mode 100644
index 0000000..f10f1a8
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.1-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.1-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.1-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.1-nocfs.zip
new file mode 100644
index 0000000..d45b7fd
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.0.1-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.1.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.1.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.1.0-cfs.zip
new file mode 100644
index 0000000..ff1b952
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.1.0-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.1.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.1.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.1.0-nocfs.zip
new file mode 100644
index 0000000..4e2d6a8
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.1.0-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.0-cfs.zip
new file mode 100644
index 0000000..36b6d83
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.0-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.0-nocfs.zip
new file mode 100644
index 0000000..95ae26c
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.0-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.1-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.1-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.1-cfs.zip
new file mode 100644
index 0000000..36b2e1d
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.1-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.1-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.1-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.1-nocfs.zip
new file mode 100644
index 0000000..411825e
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.2.1-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.3.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.3.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.3.0-cfs.zip
new file mode 100644
index 0000000..737054d
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.3.0-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.3.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.3.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.3.0-nocfs.zip
new file mode 100644
index 0000000..14a82d7
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.3.0-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.0-cfs.zip
new file mode 100644
index 0000000..e5bad02
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.0-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.0-nocfs.zip
new file mode 100644
index 0000000..70fc6ee
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.0-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.1-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.1-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.1-cfs.zip
new file mode 100644
index 0000000..477859e
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.1-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.1-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.1-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.1-nocfs.zip
new file mode 100644
index 0000000..7411118
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.1-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.2-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.2-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.2-cfs.zip
new file mode 100644
index 0000000..eee89f4
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.2-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.2-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.2-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.2-nocfs.zip
new file mode 100644
index 0000000..d55a6f6
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.4.2-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.0-cfs.zip
new file mode 100644
index 0000000..5bff9b2
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.0-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.0-nocfs.zip
new file mode 100644
index 0000000..72e7dc2
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.0-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.1-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.1-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.1-cfs.zip
new file mode 100644
index 0000000..21eb747
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.1-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.1-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.1-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.1-nocfs.zip
new file mode 100644
index 0000000..832d85d
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.5.1-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.6.0-cfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.6.0-cfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.6.0-cfs.zip
new file mode 100644
index 0000000..36e0b3d
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.6.0-cfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.6.0-nocfs.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.6.0-nocfs.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.6.0-nocfs.zip
new file mode 100644
index 0000000..90ced65
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.6.6.0-nocfs.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.630.brokenoffsets.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.630.brokenoffsets.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.630.brokenoffsets.zip
new file mode 100644
index 0000000..3cf476a
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.630.brokenoffsets.zip differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/774e3d8f/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.single-empty-doc.630.zip
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.single-empty-doc.630.zip b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.single-empty-doc.630.zip
new file mode 100644
index 0000000..1bf1d08
Binary files /dev/null and b/lucene/backward-codecs/src/test/org/apache/lucene/index/unsupported.single-empty-doc.630.zip differ


[17/53] [abbrv] lucene-solr:feature/autoscaling: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/lucene-solr

Posted by sh...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/lucene-solr


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b4fa0e78
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b4fa0e78
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b4fa0e78

Branch: refs/heads/feature/autoscaling
Commit: b4fa0e785b70e39a3a1420bc020ad1183308b7af
Parents: 224f349 92e4603
Author: Karl Wright <Da...@gmail.com>
Authored: Thu Jun 29 05:00:17 2017 -0400
Committer: Karl Wright <Da...@gmail.com>
Committed: Thu Jun 29 05:00:17 2017 -0400

----------------------------------------------------------------------
 .gitignore                                      |   41 +-
 build.xml                                       |   37 +-
 dev-tools/doap/lucene.rdf                       |    7 +
 dev-tools/doap/solr.rdf                         |    7 +
 .../lucene/classification/classification.iml    |    1 -
 .../lucene/spatial-extras/spatial-extras.iml    |    5 +-
 dev-tools/idea/solr/solrj/src/java/solrj.iml    |    3 +
 dev-tools/scripts/checkJavadocLinks.py          |    5 +-
 lucene/CHANGES.txt                              |   86 +
 lucene/MIGRATE.txt                              |   64 +
 lucene/NOTICE.txt                               |    2 +-
 .../lucene/analysis/custom/CustomAnalyzer.java  |   16 +-
 .../miscellaneous/ConcatenatingTokenStream.java |  121 +
 .../DelimitedTermFrequencyTokenFilter.java      |   75 +
 ...elimitedTermFrequencyTokenFilterFactory.java |   53 +
 .../PrefixAndSuffixAwareTokenFilter.java        |   84 -
 .../miscellaneous/PrefixAwareTokenFilter.java   |  202 --
 .../payloads/NumericPayloadTokenFilter.java     |    7 +-
 .../payloads/TypeAsPayloadTokenFilter.java      |    6 +-
 .../lucene/analysis/util/AnalysisSPILoader.java |    2 +-
 .../analysis/util/ClasspathResourceLoader.java  |   12 +-
 .../analysis/util/FilesystemResourceLoader.java |   16 +
 .../wikipedia/WikipediaTokenizerFactory.java    |   21 +-
 ...ache.lucene.analysis.util.TokenFilterFactory |    1 +
 .../lucene/analysis/core/TestFactories.java     |   46 +-
 .../lucene/analysis/core/TestRandomChains.java  |    3 +
 .../DelimitedTermFrequencyTokenFilterTest.java  |   77 +
 .../TestConcatenatingTokenStream.java           |   82 +
 .../TestPrefixAndSuffixAwareTokenFilter.java    |   49 -
 .../TestPrefixAwareTokenFilter.java             |   60 -
 .../TestWikipediaTokenizerFactory.java          |   84 +-
 .../lucene/analysis/ja/TestFactories.java       |   46 +-
 .../index/TestBackwardsCompatibility.java       |    6 +-
 .../org/apache/lucene/index/index.6.6.0-cfs.zip |  Bin 0 -> 15875 bytes
 .../apache/lucene/index/index.6.6.0-nocfs.zip   |  Bin 0 -> 15883 bytes
 .../byTask/feeds/SpatialFileQueryMaker.java     |   15 +-
 lucene/classification/build.xml                 |    6 +-
 .../classification/KNearestFuzzyClassifier.java |   29 +-
 .../classification/utils/DatasetSplitter.java   |    2 +-
 .../classification/utils/NearestFuzzyQuery.java |  333 ++
 .../KNearestFuzzyClassifierTest.java            |    2 +-
 lucene/common-build.xml                         |    2 +-
 .../org/apache/lucene/analysis/Analyzer.java    |    4 +-
 .../java/org/apache/lucene/analysis/Token.java  |  210 --
 .../org/apache/lucene/analysis/TokenStream.java |    7 +-
 .../tokenattributes/CharTermAttributeImpl.java  |    5 -
 .../PackedTokenAttributeImpl.java               |   29 +-
 .../tokenattributes/TermFrequencyAttribute.java |   33 +
 .../TermFrequencyAttributeImpl.java             |   82 +
 .../codecs/blocktree/BlockTreeTermsReader.java  |   37 +-
 .../apache/lucene/document/RangeFieldQuery.java |  377 +-
 .../index/BinaryDocValuesFieldUpdates.java      |  101 +-
 .../apache/lucene/index/BufferedUpdates.java    |   53 +-
 .../lucene/index/BufferedUpdatesStream.java     |  700 +---
 .../apache/lucene/index/CoalescedUpdates.java   |  109 -
 .../org/apache/lucene/index/CodecReader.java    |   11 +-
 .../lucene/index/DefaultIndexingChain.java      |    8 +-
 .../lucene/index/DocValuesFieldUpdates.java     |  190 +-
 .../apache/lucene/index/DocValuesUpdate.java    |    3 -
 .../apache/lucene/index/DocumentsWriter.java    |   66 +-
 .../index/DocumentsWriterDeleteQueue.java       |   29 +-
 .../index/DocumentsWriterFlushControl.java      |   21 +-
 .../lucene/index/DocumentsWriterFlushQueue.java |   33 +-
 .../lucene/index/DocumentsWriterPerThread.java  |   35 +-
 .../index/DocumentsWriterPerThreadPool.java     |   11 +-
 .../lucene/index/ExitableDirectoryReader.java   |   40 +-
 .../apache/lucene/index/FieldInvertState.java   |    3 +
 .../java/org/apache/lucene/index/Fields.java    |   10 +-
 .../apache/lucene/index/FilterLeafReader.java   |    6 +-
 .../lucene/index/FlushByRamOrCountsPolicy.java  |   29 +-
 .../org/apache/lucene/index/FlushPolicy.java    |    3 -
 .../lucene/index/FreqProxTermsWriter.java       |    5 +-
 .../index/FreqProxTermsWriterPerField.java      |   27 +-
 .../lucene/index/FrozenBufferedUpdates.java     |  841 ++++-
 .../apache/lucene/index/IndexFileDeleter.java   |    7 +-
 .../org/apache/lucene/index/IndexWriter.java    |  776 +++--
 .../apache/lucene/index/IndexWriterConfig.java  |   19 +-
 .../org/apache/lucene/index/LeafReader.java     |   15 +-
 .../lucene/index/LiveIndexWriterConfig.java     |   48 +-
 .../apache/lucene/index/MergeReaderWrapper.java |    7 +-
 .../index/MergedPrefixCodedTermsIterator.java   |  132 -
 .../org/apache/lucene/index/MultiFields.java    |   69 +-
 .../index/NumericDocValuesFieldUpdates.java     |   97 +-
 .../apache/lucene/index/ParallelLeafReader.java |   33 +-
 .../apache/lucene/index/PrefixCodedTerms.java   |    2 +-
 .../apache/lucene/index/ReadersAndUpdates.java  |  413 ++-
 .../apache/lucene/index/SegmentCommitInfo.java  |   16 +-
 .../apache/lucene/index/SegmentCoreReaders.java |    2 -
 .../org/apache/lucene/index/SegmentInfo.java    |    2 +-
 .../org/apache/lucene/index/SegmentReader.java  |   19 +-
 .../lucene/index/SerialMergeScheduler.java      |    4 +-
 .../lucene/index/SlowCodecReaderWrapper.java    |   16 +-
 .../apache/lucene/index/SortingLeafReader.java  |    6 +-
 .../index/TermVectorsConsumerPerField.java      |   19 +-
 .../apache/lucene/index/TermsHashPerField.java  |    5 +-
 .../apache/lucene/index/TieredMergePolicy.java  |   73 +-
 .../apache/lucene/search/AutomatonQuery.java    |    7 +
 .../lucene/search/DisjunctionMaxQuery.java      |    8 +
 .../org/apache/lucene/search/DoubleValues.java  |   21 +
 .../lucene/search/DoubleValuesSource.java       |  216 +-
 .../apache/lucene/search/LongValuesSource.java  |   82 +-
 .../apache/lucene/search/TermInSetQuery.java    |    4 +-
 .../java/org/apache/lucene/search/TopDocs.java  |    8 +-
 .../org/apache/lucene/search/TopFieldDocs.java  |    2 +-
 .../org/apache/lucene/util/NamedSPILoader.java  |    2 +-
 .../org/apache/lucene/util/QueryBuilder.java    |    6 +-
 .../apache/lucene/util/SPIClassIterator.java    |   10 +-
 .../util/packed/AbstractPagedMutable.java       |    2 +-
 .../org/apache/lucene/analysis/TestToken.java   |    2 +
 .../TestPackedTokenAttributeImpl.java           |    2 +
 .../lucene50/TestBlockPostingsFormat.java       |    2 +-
 .../org/apache/lucene/index/Test2BDocs.java     |    2 +-
 .../org/apache/lucene/index/Test2BTerms.java    |    2 +-
 .../index/TestBinaryDocValuesUpdates.java       |  146 +-
 .../apache/lucene/index/TestCustomTermFreq.java |  468 +++
 .../test/org/apache/lucene/index/TestDoc.java   |   10 +-
 .../index/TestDocumentsWriterDeleteQueue.java   |   39 +-
 .../index/TestExitableDirectoryReader.java      |   16 +-
 .../lucene/index/TestFieldInvertState.java      |  139 +
 .../lucene/index/TestFilterLeafReader.java      |   17 +-
 .../test/org/apache/lucene/index/TestFlex.java  |   13 +-
 .../index/TestFlushByRamOrCountsPolicy.java     |   12 +-
 .../lucene/index/TestForceMergeForever.java     |    7 +-
 .../lucene/index/TestIndexReaderClose.java      |    8 +-
 .../apache/lucene/index/TestIndexWriter.java    |   65 +-
 .../lucene/index/TestIndexWriterConfig.java     |    7 +-
 .../lucene/index/TestIndexWriterDelete.java     |  163 +-
 .../lucene/index/TestIndexWriterExceptions.java |  253 --
 .../lucene/index/TestIndexWriterReader.java     |    7 +-
 .../lucene/index/TestIndexWriterUnicode.java    |    2 +-
 .../org/apache/lucene/index/TestManyFields.java |    2 +-
 .../lucene/index/TestNRTReaderWithThreads.java  |    8 +-
 .../index/TestNumericDocValuesUpdates.java      |  314 +-
 .../lucene/index/TestParallelTermEnum.java      |   20 +-
 .../org/apache/lucene/index/TestPayloads.java   |    4 +-
 .../lucene/index/TestPerSegmentDeletes.java     |   11 +-
 .../lucene/index/TestPostingsOffsets.java       |    2 +-
 .../lucene/index/TestPrefixCodedTerms.java      |   76 -
 .../lucene/index/TestSegmentTermDocs.java       |    2 +-
 .../lucene/index/TestSegmentTermEnum.java       |   10 +-
 .../apache/lucene/index/TestStressAdvance.java  |   11 +-
 .../org/apache/lucene/index/TestTermsEnum.java  |   23 +-
 .../lucene/search/TermInSetQueryTest.java       |   24 +-
 .../lucene/search/TestAutomatonQuery.java       |    2 +-
 .../search/TestAutomatonQueryUnicode.java       |    2 +-
 .../org/apache/lucene/search/TestBooleanOr.java |    2 +-
 .../TestControlledRealTimeReopenThread.java     |    4 +-
 .../lucene/search/TestDisjunctionMaxQuery.java  |   15 +
 .../lucene/search/TestDoubleValuesSource.java   |   16 +-
 .../apache/lucene/search/TestLRUQueryCache.java |    2 +-
 .../lucene/search/TestMultiPhraseQuery.java     |    2 +-
 .../lucene/search/TestPhrasePrefixQuery.java    |    2 +-
 .../apache/lucene/search/TestRegexpQuery.java   |    2 +-
 .../search/TestSameScoresWithThreads.java       |    2 +-
 .../org/apache/lucene/search/TestTermQuery.java |   43 +-
 .../lucene/search/TestTermRangeQuery.java       |    4 +-
 .../apache/lucene/search/spans/TestSpans.java   |    2 +-
 .../apache/lucene/util/TestQueryBuilder.java    |   28 +-
 .../org/apache/lucene/demo/SearchFiles.java     |    2 +-
 .../facet/range/TestRangeFacetCounts.java       |   75 +-
 .../lucene/search/grouping/GroupDocs.java       |    4 +-
 .../search/highlight/TermVectorLeafReader.java  |    8 +-
 .../lucene/search/highlight/TokenGroup.java     |   15 +-
 .../highlight/WeightedSpanTermExtractor.java    |   25 +-
 .../uhighlight/MemoryIndexOffsetStrategy.java   |    3 +-
 .../uhighlight/MultiTermHighlighting.java       |  124 +-
 .../lucene/search/uhighlight/PhraseHelper.java  |   29 +-
 .../TermVectorFilteredLeafReader.java           |   22 +-
 .../uhighlight/TestSplittingBreakIterator.java  |    1 -
 .../uhighlight/TestUnifiedHighlighter.java      |    3 -
 .../uhighlight/TestUnifiedHighlighterMTQ.java   |   69 +-
 .../TestUnifiedHighlighterRanking.java          |    3 -
 .../TestUnifiedHighlighterReanalysis.java       |    2 -
 .../TestUnifiedHighlighterStrictPhrases.java    |    2 -
 .../TestUnifiedHighlighterTermVec.java          |    2 -
 .../TestUnifiedHighlighterExtensibility.java    |   26 +-
 lucene/ivy-versions.properties                  |    2 +-
 .../apache/lucene/search/join/TestJoinUtil.java |   21 +-
 .../apache/lucene/index/memory/MemoryIndex.java |   43 +-
 .../lucene/index/memory/TestMemoryIndex.java    |   26 +-
 .../memory/TestMemoryIndexAgainstRAMDir.java    |    5 +-
 .../org/apache/lucene/misc/IndexMergeTool.java  |   11 +-
 .../apache/lucene/queries/CommonTermsQuery.java |    4 +-
 .../queries/function/FunctionScoreQuery.java    |    9 -
 .../lucene/queries/function/ValueSource.java    |  260 +-
 .../function/valuesource/TFValueSource.java     |    6 +-
 .../valuesource/TermFreqValueSource.java        |    6 +-
 .../function/TestFunctionScoreExplanations.java |    8 +-
 .../function/TestFunctionScoreQuery.java        |   91 +-
 .../queryparser/classic/FastCharStream.java     |    2 +-
 .../standard/parser/FastCharStream.java         |    2 +-
 .../surround/parser/FastCharStream.java         |    2 +-
 .../classic/TestMultiFieldQueryParser.java      |    2 +-
 .../queryparser/classic/TestQueryParser.java    |   91 +-
 .../lucene/queryparser/xml/TestCoreParser.java  |    2 +-
 .../xml/TestQueryTemplateManager.java           |    2 +-
 .../replicator/nrt/SimpleReplicaNode.java       |    4 +-
 .../idversion/IDVersionPostingsWriter.java      |    4 +-
 .../idversion/VersionBlockTreeTermsWriter.java  |    4 +-
 .../idversion/TestIDVersionPostingsFormat.java  |    4 +-
 lucene/spatial-extras/build.xml                 |    8 +-
 .../org/apache/lucene/spatial/ShapeValues.java  |   41 +
 .../lucene/spatial/ShapeValuesSource.java       |   34 +
 .../apache/lucene/spatial/SpatialStrategy.java  |   19 +-
 .../bbox/BBoxOverlapRatioValueSource.java       |    7 +-
 .../spatial/bbox/BBoxSimilarityValueSource.java |   79 +-
 .../lucene/spatial/bbox/BBoxStrategy.java       |   13 +-
 .../lucene/spatial/bbox/BBoxValueSource.java    |   74 +-
 .../composite/CompositeSpatialStrategy.java     |   14 +-
 .../spatial/composite/CompositeVerifyQuery.java |   32 +-
 .../composite/IntersectsRPTVerifyQuery.java     |   21 +-
 .../prefix/NumberRangePrefixTreeStrategy.java   |    4 +-
 .../spatial/prefix/PrefixTreeStrategy.java      |   21 +-
 .../prefix/RecursivePrefixTreeStrategy.java     |    1 +
 .../prefix/tree/PackedQuadPrefixTree.java       |   30 +-
 .../serialized/SerializedDVStrategy.java        |  110 +-
 .../spatial/util/CachingDoubleValueSource.java  |   61 +-
 .../util/DistanceToShapeValueSource.java        |   68 +-
 .../util/ReciprocalDoubleValuesSource.java      |   96 +
 .../spatial/util/ShapeAreaValueSource.java      |   67 +-
 .../ShapeFieldCacheDistanceValueSource.java     |   59 +-
 .../spatial/util/ShapePredicateValueSource.java |  113 -
 .../spatial/util/ShapeValuesPredicate.java      |   99 +
 .../spatial/vector/DistanceValueSource.java     |   72 +-
 .../spatial/vector/PointVectorStrategy.java     |   95 +-
 .../lucene/spatial/DistanceStrategyTest.java    |    6 -
 .../apache/lucene/spatial/SpatialExample.java   |   14 +-
 .../apache/lucene/spatial/SpatialTestCase.java  |    4 +-
 .../apache/lucene/spatial/StrategyTestCase.java |   39 +-
 .../RandomSpatialOpFuzzyPrefixTreeTest.java     |   41 +-
 .../lucene/spatial/spatial4j/Geo3dRptTest.java  |    2 +-
 .../Geo3dShapeRectRelationTestCase.java         |    2 +-
 .../DocumentValueSourceDictionaryTest.java      |   15 +
 .../suggest/document/TestSuggestField.java      |    6 +-
 .../java/org/apache/lucene/analysis/Token.java  |  195 ++
 .../lucene/index/AssertingLeafReader.java       |    7 +-
 .../index/BaseDocValuesFormatTestCase.java      |   24 +
 .../index/BaseIndexFileFormatTestCase.java      |    4 +-
 .../index/BasePostingsFormatTestCase.java       |   15 +-
 .../lucene/index/FieldFilterLeafReader.java     |    9 +-
 .../ThreadedIndexingAndSearchingTestCase.java   |   21 +-
 .../org/apache/lucene/search/QueryUtils.java    |   26 +-
 .../org/apache/lucene/util/LuceneTestCase.java  |   15 +-
 lucene/tools/forbiddenApis/base.txt             |    4 +
 solr/.gitignore                                 |   30 +
 solr/CHANGES.txt                                |  293 +-
 solr/NOTICE.txt                                 |    4 +-
 solr/bin/solr                                   |   76 +-
 solr/bin/solr.cmd                               |   74 +-
 solr/bin/solr.in.cmd                            |    4 +
 solr/bin/solr.in.sh                             |    4 +
 .../collection1/conf/schema-icucollate-dv.xml   |    4 +-
 .../solr/collection1/conf/schema-icucollate.xml |    4 +-
 .../conf/schema-icucollateoptions.xml           |    4 +-
 .../collection1/conf/solrconfig-icucollate.xml  |    2 +-
 .../solr/schema/TestICUCollationField.java      |   28 +-
 .../schema/TestICUCollationFieldDocValues.java  |   28 +-
 .../schema/TestICUCollationFieldOptions.java    |   26 +-
 .../apache/solr/analytics/AnalyticsDriver.java  |   82 +
 .../solr/analytics/AnalyticsExpression.java     |   64 +
 .../analytics/AnalyticsGroupingManager.java     |  239 ++
 .../solr/analytics/AnalyticsRequestManager.java |  279 ++
 .../solr/analytics/AnalyticsRequestParser.java  |  549 +++
 .../solr/analytics/ExpressionFactory.java       |  821 +++++
 .../analytics/accumulator/BasicAccumulator.java |  173 -
 .../accumulator/FacetingAccumulator.java        |  730 ----
 .../analytics/accumulator/ValueAccumulator.java |   40 -
 .../facet/FacetValueAccumulator.java            |   35 -
 .../facet/FieldFacetAccumulator.java            |  153 -
 .../facet/QueryFacetAccumulator.java            |   72 -
 .../facet/RangeFacetAccumulator.java            |   49 -
 .../accumulator/facet/package-info.java         |   24 -
 .../analytics/accumulator/package-info.java     |   23 -
 .../analytics/expression/BaseExpression.java    |   88 -
 .../expression/DualDelegateExpression.java      |   99 -
 .../solr/analytics/expression/Expression.java   |   39 -
 .../analytics/expression/ExpressionFactory.java |  175 -
 .../expression/MultiDelegateExpression.java     |  131 -
 .../expression/SingleDelegateExpression.java    |   88 -
 .../solr/analytics/expression/package-info.java |   23 -
 .../analytics/facet/AbstractSolrQueryFacet.java |  104 +
 .../solr/analytics/facet/AnalyticsFacet.java    |  166 +
 .../apache/solr/analytics/facet/PivotFacet.java |  114 +
 .../apache/solr/analytics/facet/PivotNode.java  |  263 ++
 .../apache/solr/analytics/facet/QueryFacet.java |   64 +
 .../apache/solr/analytics/facet/RangeFacet.java |  119 +
 .../solr/analytics/facet/SortableFacet.java     |  178 +
 .../solr/analytics/facet/StreamingFacet.java    |   32 +
 .../apache/solr/analytics/facet/ValueFacet.java |   60 +
 .../facet/compare/ConstantComparator.java       |   30 +
 .../facet/compare/DelegatingComparator.java     |   62 +
 .../facet/compare/ExpressionComparator.java     |   46 +
 .../facet/compare/FacetResultsComparator.java   |   52 +
 .../facet/compare/FacetValueComparator.java     |   37 +
 .../analytics/facet/compare/package-info.java   |   23 +
 .../solr/analytics/facet/package-info.java      |   23 +
 .../function/ExpressionCalculator.java          |   71 +
 .../MergingReductionCollectionManager.java      |   46 +
 .../function/ReductionCollectionManager.java    |  320 ++
 .../analytics/function/ReductionFunction.java   |   37 +
 .../function/field/AnalyticsField.java          |   69 +
 .../analytics/function/field/BooleanField.java  |  111 +
 .../function/field/BooleanMultiField.java       |  101 +
 .../analytics/function/field/DateField.java     |  108 +
 .../function/field/DateMultiField.java          |   47 +
 .../function/field/DateMultiPointField.java     |   47 +
 .../analytics/function/field/DoubleField.java   |   97 +
 .../function/field/DoubleMultiField.java        |   85 +
 .../function/field/DoubleMultiPointField.java   |   81 +
 .../analytics/function/field/FloatField.java    |  108 +
 .../function/field/FloatMultiField.java         |   91 +
 .../function/field/FloatMultiPointField.java    |   87 +
 .../solr/analytics/function/field/IntField.java |  129 +
 .../analytics/function/field/IntMultiField.java |  100 +
 .../function/field/IntMultiPointField.java      |   96 +
 .../analytics/function/field/LongField.java     |  107 +
 .../function/field/LongMultiField.java          |   89 +
 .../function/field/LongMultiPointField.java     |   86 +
 .../analytics/function/field/StringField.java   |   85 +
 .../function/field/StringMultiField.java        |   66 +
 .../analytics/function/field/package-info.java  |   23 +
 .../function/mapping/AbsoluteValueFunction.java |   54 +
 .../analytics/function/mapping/AddFunction.java |   68 +
 .../function/mapping/BottomFunction.java        |  163 +
 .../function/mapping/CompareFunction.java       |  614 ++++
 .../function/mapping/ConcatFunction.java        |   78 +
 .../function/mapping/DateMathFunction.java      |  156 +
 .../function/mapping/DateParseFunction.java     |  210 ++
 .../function/mapping/DivideFunction.java        |   51 +
 .../function/mapping/FillMissingFunction.java   |  842 +++++
 .../function/mapping/FilterFunction.java        |  722 ++++
 .../analytics/function/mapping/IfFunction.java  |  892 +++++
 .../function/mapping/JoinFunction.java          |   57 +
 .../function/mapping/LambdaFunction.java        | 3220 ++++++++++++++++++
 .../analytics/function/mapping/LogFunction.java |   51 +
 .../function/mapping/LogicFunction.java         |   90 +
 .../function/mapping/MultFunction.java          |   68 +
 .../function/mapping/NegateFunction.java        |   58 +
 .../mapping/NumericConvertFunction.java         |  256 ++
 .../function/mapping/PowerFunction.java         |   51 +
 .../function/mapping/RemoveFunction.java        |  796 +++++
 .../function/mapping/ReplaceFunction.java       |  914 +++++
 .../function/mapping/StringCastFunction.java    |   42 +
 .../function/mapping/SubtractFunction.java      |   51 +
 .../analytics/function/mapping/TopFunction.java |  163 +
 .../function/mapping/package-info.java          |   23 +
 .../solr/analytics/function/package-info.java   |   23 +
 .../function/reduction/CountFunction.java       |   87 +
 .../function/reduction/DocCountFunction.java    |   87 +
 .../function/reduction/MaxFunction.java         |  298 ++
 .../function/reduction/MedianFunction.java      |  200 ++
 .../function/reduction/MinFunction.java         |  298 ++
 .../function/reduction/MissingFunction.java     |   76 +
 .../function/reduction/OrdinalFunction.java     |  386 +++
 .../function/reduction/PercentileFunction.java  |  337 ++
 .../function/reduction/SumFunction.java         |   92 +
 .../function/reduction/UniqueFunction.java      |  101 +
 .../function/reduction/data/CountCollector.java |  188 +
 .../function/reduction/data/MaxCollector.java   |  476 +++
 .../function/reduction/data/MinCollector.java   |  476 +++
 .../function/reduction/data/ReductionData.java  |   24 +
 .../reduction/data/ReductionDataCollector.java  |  183 +
 .../reduction/data/SortedListCollector.java     |  363 ++
 .../function/reduction/data/SumCollector.java   |  124 +
 .../reduction/data/UniqueCollector.java         |  241 ++
 .../function/reduction/data/package-info.java   |   24 +
 .../function/reduction/package-info.java        |   23 +
 .../org/apache/solr/analytics/package-info.java |   23 +
 .../request/AbstractFieldFacetRequest.java      |   42 -
 .../request/AnalyticsContentHandler.java        |  314 --
 .../analytics/request/AnalyticsRequest.java     |  114 -
 .../request/AnalyticsRequestFactory.java        |  308 --
 .../solr/analytics/request/AnalyticsStats.java  |  138 -
 .../analytics/request/ExpressionRequest.java    |   72 -
 .../solr/analytics/request/FacetRequest.java    |   26 -
 .../analytics/request/FieldFacetRequest.java    |  172 -
 .../analytics/request/QueryFacetRequest.java    |   74 -
 .../analytics/request/RangeFacetRequest.java    |  129 -
 .../solr/analytics/request/package-info.java    |   24 -
 .../AbstractDelegatingStatsCollector.java       |   74 -
 .../statistics/MedianStatsCollector.java        |   76 -
 .../statistics/MinMaxStatsCollector.java        |  114 -
 .../statistics/NumericStatsCollector.java       |   68 -
 .../statistics/PercentileStatsCollector.java    |   80 -
 .../analytics/statistics/StatsCollector.java    |   69 -
 .../StatsCollectorSupplierFactory.java          |  646 ----
 .../statistics/UniqueStatsCollector.java        |   53 -
 .../solr/analytics/statistics/package-info.java |   24 -
 .../stream/AnalyticsShardRequestManager.java    |  245 ++
 .../stream/AnalyticsShardResponseParser.java    |   89 +
 .../solr/analytics/stream/package-info.java     |   23 +
 .../reservation/BooleanArrayReservation.java    |   44 +
 .../reservation/BooleanCheckedReservation.java  |   42 +
 .../stream/reservation/BooleanReservation.java  |   42 +
 .../reservation/DoubleArrayReservation.java     |   44 +
 .../reservation/DoubleCheckedReservation.java   |   43 +
 .../stream/reservation/DoubleReservation.java   |   42 +
 .../reservation/FloatArrayReservation.java      |   44 +
 .../reservation/FloatCheckedReservation.java    |   43 +
 .../stream/reservation/FloatReservation.java    |   42 +
 .../stream/reservation/IntArrayReservation.java |   42 +
 .../reservation/IntCheckedReservation.java      |   43 +
 .../stream/reservation/IntReservation.java      |   42 +
 .../reservation/LongArrayReservation.java       |   45 +
 .../reservation/LongCheckedReservation.java     |   43 +
 .../stream/reservation/LongReservation.java     |   42 +
 .../ReductionCheckedDataReservation.java        |   35 +
 .../ReductionDataArrayReservation.java          |   36 +
 .../reservation/ReductionDataReservation.java   |   53 +
 .../reservation/StringArrayReservation.java     |   45 +
 .../reservation/StringCheckedReservation.java   |   44 +
 .../stream/reservation/StringReservation.java   |   43 +
 .../stream/reservation/package-info.java        |   24 +
 .../read/BooleanCheckedDataReader.java          |   33 +
 .../read/BooleanDataArrayReader.java            |   36 +
 .../reservation/read/BooleanDataReader.java     |   33 +
 .../read/DoubleCheckedDataReader.java           |   32 +
 .../reservation/read/DoubleDataArrayReader.java |   35 +
 .../reservation/read/DoubleDataReader.java      |   32 +
 .../read/FloatCheckedDataReader.java            |   33 +
 .../reservation/read/FloatDataArrayReader.java  |   36 +
 .../reservation/read/FloatDataReader.java       |   33 +
 .../reservation/read/IntCheckedDataReader.java  |   32 +
 .../reservation/read/IntDataArrayReader.java    |   34 +
 .../stream/reservation/read/IntDataReader.java  |   32 +
 .../reservation/read/LongCheckedDataReader.java |   32 +
 .../reservation/read/LongDataArrayReader.java   |   35 +
 .../stream/reservation/read/LongDataReader.java |   32 +
 .../read/ReductionCheckedDataReader.java        |   54 +
 .../read/ReductionDataArrayReader.java          |   54 +
 .../reservation/read/ReductionDataReader.java   |   40 +
 .../read/StringCheckedDataReader.java           |   32 +
 .../reservation/read/StringDataArrayReader.java |   35 +
 .../reservation/read/StringDataReader.java      |   34 +
 .../stream/reservation/read/package-info.java   |   24 +
 .../write/BooleanCheckedDataWriter.java         |   33 +
 .../write/BooleanDataArrayWriter.java           |   36 +
 .../reservation/write/BooleanDataWriter.java    |   33 +
 .../write/DoubleCheckedDataWriter.java          |   34 +
 .../write/DoubleDataArrayWriter.java            |   36 +
 .../reservation/write/DoubleDataWriter.java     |   33 +
 .../write/FloatCheckedDataWriter.java           |   35 +
 .../reservation/write/FloatDataArrayWriter.java |   37 +
 .../reservation/write/FloatDataWriter.java      |   34 +
 .../reservation/write/IntCheckedDataWriter.java |   34 +
 .../reservation/write/IntDataArrayWriter.java   |   35 +
 .../stream/reservation/write/IntDataWriter.java |   33 +
 .../write/LongCheckedDataWriter.java            |   34 +
 .../reservation/write/LongDataArrayWriter.java  |   36 +
 .../reservation/write/LongDataWriter.java       |   33 +
 .../write/ReductionCheckedDataWriter.java       |   60 +
 .../write/ReductionDataArrayWriter.java         |   53 +
 .../reservation/write/ReductionDataWriter.java  |   40 +
 .../write/StringCheckedDataWriter.java          |   34 +
 .../write/StringDataArrayWriter.java            |   36 +
 .../reservation/write/StringDataWriter.java     |   37 +
 .../stream/reservation/write/package-info.java  |   24 +
 .../solr/analytics/util/AnalyticsParams.java    |  113 -
 .../solr/analytics/util/AnalyticsParsers.java   |  171 -
 .../util/AnalyticsResponseHeadings.java         |   36 +
 .../analytics/util/FacetRangeGenerator.java     |  356 ++
 .../solr/analytics/util/MedianCalculator.java   |    4 +
 .../solr/analytics/util/OldAnalyticsParams.java |  177 +
 .../util/OldAnalyticsRequestConverter.java      |  177 +
 .../solr/analytics/util/OrdinalCalculator.java  |  173 +
 .../analytics/util/PercentileCalculator.java    |  176 -
 .../analytics/util/RangeEndpointCalculator.java |  354 --
 .../util/function/BooleanConsumer.java          |   59 +
 .../analytics/util/function/FloatConsumer.java  |   59 +
 .../analytics/util/function/FloatSupplier.java  |   41 +
 .../analytics/util/function/package-info.java   |   23 +
 .../solr/analytics/util/package-info.java       |    3 +-
 .../AbsoluteValueDoubleFunction.java            |   60 -
 .../util/valuesource/AddDoubleFunction.java     |   49 -
 .../util/valuesource/ConcatStringFunction.java  |   54 -
 .../util/valuesource/ConstDateSource.java       |  112 -
 .../util/valuesource/ConstDoubleSource.java     |  104 -
 .../util/valuesource/ConstStringSource.java     |   50 -
 .../util/valuesource/DateFieldSource.java       |  131 -
 .../util/valuesource/DateMathFunction.java      |   71 -
 .../util/valuesource/DivDoubleFunction.java     |   48 -
 .../util/valuesource/DualDoubleFunction.java    |   94 -
 .../util/valuesource/FilterFieldSource.java     |  154 -
 .../util/valuesource/LogDoubleFunction.java     |   43 -
 .../util/valuesource/MultiDateFunction.java     |  133 -
 .../util/valuesource/MultiDoubleFunction.java   |  119 -
 .../util/valuesource/MultiStringFunction.java   |  146 -
 .../valuesource/MultiplyDoubleFunction.java     |   49 -
 .../util/valuesource/NegateDoubleFunction.java  |   55 -
 .../util/valuesource/PowDoubleFunction.java     |   48 -
 .../util/valuesource/ReverseStringFunction.java |   45 -
 .../util/valuesource/SingleDoubleFunction.java  |   79 -
 .../util/valuesource/SingleStringFunction.java  |  117 -
 .../util/valuesource/package-info.java          |   24 -
 .../solr/analytics/value/AnalyticsValue.java    |   55 +
 .../analytics/value/AnalyticsValueStream.java   |  133 +
 .../solr/analytics/value/BooleanValue.java      |   85 +
 .../analytics/value/BooleanValueStream.java     |   55 +
 .../solr/analytics/value/ComparableValue.java   |   32 +
 .../apache/solr/analytics/value/DateValue.java  |  102 +
 .../solr/analytics/value/DateValueStream.java   |   62 +
 .../solr/analytics/value/DoubleValue.java       |   86 +
 .../solr/analytics/value/DoubleValueStream.java |   54 +
 .../apache/solr/analytics/value/FloatValue.java |   97 +
 .../solr/analytics/value/FloatValueStream.java  |   60 +
 .../apache/solr/analytics/value/IntValue.java   |  121 +
 .../solr/analytics/value/IntValueStream.java    |   71 +
 .../apache/solr/analytics/value/LongValue.java  |   97 +
 .../solr/analytics/value/LongValueStream.java   |   60 +
 .../solr/analytics/value/StringValue.java       |   71 +
 .../solr/analytics/value/StringValueStream.java |   49 +
 .../value/constant/ConstantBooleanValue.java    |   91 +
 .../value/constant/ConstantDateValue.java       |  103 +
 .../value/constant/ConstantDoubleValue.java     |   90 +
 .../value/constant/ConstantFloatValue.java      |   99 +
 .../value/constant/ConstantIntValue.java        |  118 +
 .../value/constant/ConstantLongValue.java       |  100 +
 .../value/constant/ConstantStringValue.java     |   79 +
 .../analytics/value/constant/ConstantValue.java |  128 +
 .../analytics/value/constant/package-info.java  |   23 +
 .../solr/analytics/value/package-info.java      |   23 +
 .../apache/solr/handler/AnalyticsHandler.java   |  147 +
 .../handler/component/AnalyticsComponent.java   |  119 +-
 .../java/org/apache/solr/handler/package.html   |   28 +
 .../response/AnalyticsShardResponseWriter.java  |   91 +
 .../java/org/apache/solr/response/package.html  |   28 +
 .../analytics/requestFiles/expressions.txt      |   70 -
 .../analytics/requestFiles/fieldFacetExtras.txt |   66 -
 .../analytics/requestFiles/fieldFacets.txt      |  132 -
 .../analytics/requestFiles/functions.txt        |   62 -
 .../analytics/requestFiles/noFacets.txt         |   74 -
 .../analytics/requestFiles/queryFacets.txt      |   45 -
 .../analytics/requestFiles/rangeFacets.txt      |  170 -
 .../analytics/requestXMLFiles/expressions.xml   |  285 --
 .../requestXMLFiles/fieldFacetExtras.xml        |  101 -
 .../analytics/requestXMLFiles/fieldFacets.xml   |  496 ---
 .../analytics/requestXMLFiles/functions.xml     |  246 --
 .../analytics/requestXMLFiles/noFacets.xml      |  310 --
 .../analytics/requestXMLFiles/queryFacets.xml   |   94 -
 .../analytics/requestXMLFiles/rangeFacets.xml   |  319 --
 .../test-files/solr/analytics/expressions.txt   |   65 +
 .../test-files/solr/analytics/facetSorting.txt  |    4 +
 .../solr/analytics/fieldFacetExtras.txt         |   66 +
 .../test-files/solr/analytics/fieldFacets.txt   |  132 +
 .../src/test-files/solr/analytics/functions.txt |   57 +
 .../src/test-files/solr/analytics/noFacets.txt  |   74 +
 .../test-files/solr/analytics/queryFacets.txt   |   27 +
 .../test-files/solr/analytics/rangeFacets.txt   |  161 +
 .../solr/collection1/conf/schema-analytics.xml  |   17 +-
 .../collection1/conf/solrconfig-analytics.xml   |   42 +
 .../solr/collection1/conf/solrconfig-basic.xml  |   40 -
 .../configsets/cloud-analytics/conf/schema.xml  |   63 +
 .../cloud-analytics/conf/solrconfig.xml         |   59 +
 .../AbstractAnalyticsStatsCloudTest.java        |  187 +
 .../analytics/AbstractAnalyticsStatsTest.java   |   15 +-
 .../apache/solr/analytics/NoFacetCloudTest.java |  557 +++
 .../org/apache/solr/analytics/NoFacetTest.java  |   47 +-
 .../analytics/expression/ExpressionTest.java    |   70 +-
 .../solr/analytics/expression/FunctionTest.java |  221 ++
 .../facet/AbstractAnalyticsFacetCloudTest.java  |  284 ++
 .../facet/AbstractAnalyticsFacetTest.java       |   38 +-
 .../solr/analytics/facet/FacetSortingTest.java  |   53 +
 .../analytics/facet/FieldFacetCloudTest.java    | 1214 +++++++
 .../facet/FieldFacetExtrasCloudTest.java        |  253 ++
 .../analytics/facet/FieldFacetExtrasTest.java   |    6 +-
 .../solr/analytics/facet/FieldFacetTest.java    |   63 +-
 .../analytics/facet/QueryFacetCloudTest.java    |  159 +
 .../solr/analytics/facet/QueryFacetTest.java    |   10 +-
 .../analytics/facet/RangeFacetCloudTest.java    |  588 ++++
 .../solr/analytics/facet/RangeFacetTest.java    |   43 +-
 .../util/valuesource/FunctionTest.java          |  233 --
 .../carrot2/CarrotClusteringEngine.java         |   62 +-
 .../clustering/solr/collection1/conf/schema.xml |   18 +-
 .../solr/collection1/conf/solrconfig.xml        |   25 +-
 .../clustering/ClusteringComponentTest.java     |    2 +-
 .../handler/dataimport/MailEntityProcessor.java |   31 +-
 .../conf/dataimport-schema-no-unique-key.xml    |   18 +-
 .../collection1/conf/dataimport-solrconfig.xml  |   43 +-
 .../solr/handler/dataimport/DebugInfo.java      |   32 +-
 .../handler/dataimport/VariableResolver.java    |    4 +-
 .../conf/contentstream-solrconfig.xml           |   47 +-
 .../conf/dataimport-nodatasource-solrconfig.xml |   45 +-
 .../solr/collection1/conf/dataimport-schema.xml |   10 +-
 .../conf/dataimport-solr_id-schema.xml          |   18 +-
 .../collection1/conf/dataimport-solrconfig.xml  |   45 +-
 .../AbstractDataImportHandlerTestCase.java      |    4 +-
 .../dataimport/TestHierarchicalDocBuilder.java  |   31 +-
 .../handler/extraction/SolrContentHandler.java  |    4 +-
 .../extraction/solr/collection1/conf/schema.xml |   18 +-
 .../solr/collection1/conf/solrconfig.xml        |   40 +-
 .../extraction/TestXLSXResponseWriter.java      |    2 +-
 .../conf/solrconfig-languageidentifier.xml      |    7 +-
 .../java/org/apache/solr/ltr/LTRRescorer.java   |    2 +-
 .../ltr/model/MultipleAdditiveTreesModel.java   |   16 +-
 .../test-files/solr/collection1/conf/schema.xml |   10 +-
 .../org/apache/solr/ltr/TestLTROnSolrCloud.java |   14 +-
 .../apache/solr/ltr/TestLTRScoringQuery.java    |   20 +-
 .../solr/ltr/TestSelectiveWeightCreation.java   |   14 +-
 .../apache/solr/ltr/model/TestLinearModel.java  |   10 +
 .../model/TestMultipleAdditiveTreesModel.java   |   17 +-
 .../uima/solr/collection1/conf/schema.xml       |   20 +-
 .../uima/solr/collection1/conf/solrconfig.xml   |   29 +-
 .../test-files/uima/uima-tokenizers-schema.xml  |   20 +-
 .../uima/uima-tokenizers-solrconfig.xml         |   19 +-
 .../java/org/apache/solr/response/PageTool.java |    5 +-
 solr/core/src/java/org/apache/solr/api/Api.java |    3 +-
 .../src/java/org/apache/solr/api/ApiBag.java    |   32 +-
 .../java/org/apache/solr/api/SpecProvider.java  |   25 -
 .../java/org/apache/solr/api/V2HttpCall.java    |   60 +-
 .../org/apache/solr/cloud/AddReplicaCmd.java    |    3 +-
 .../src/java/org/apache/solr/cloud/Assign.java  |   66 +-
 .../apache/solr/cloud/CreateCollectionCmd.java  |   67 +-
 .../org/apache/solr/cloud/CreateShardCmd.java   |   74 +-
 .../java/org/apache/solr/cloud/Overseer.java    |    4 +-
 .../cloud/OverseerCollectionMessageHandler.java |  108 +-
 .../org/apache/solr/cloud/RecoveryStrategy.java |    4 +-
 .../org/apache/solr/cloud/ReplaceNodeCmd.java   |   96 +-
 .../apache/solr/cloud/ReplicateFromLeader.java  |    6 +-
 .../java/org/apache/solr/cloud/RestoreCmd.java  |    2 +-
 .../org/apache/solr/cloud/SplitShardCmd.java    |    2 +-
 .../org/apache/solr/cloud/ZkController.java     |   57 +-
 .../cloud/autoscaling/AutoScalingHandler.java   |  324 ++
 .../solr/cloud/autoscaling/package-info.java    |   21 +
 .../apache/solr/cloud/rule/ReplicaAssigner.java |    2 +-
 .../solr/cloud/rule/ServerSnitchContext.java    |   25 +-
 .../solr/core/CachingDirectoryFactory.java      |   10 +
 .../org/apache/solr/core/CoreContainer.java     |   91 +-
 .../org/apache/solr/core/DirectoryFactory.java  |   24 +-
 .../java/org/apache/solr/core/PluginBag.java    |   32 +-
 .../java/org/apache/solr/core/SolrConfig.java   |   20 +-
 .../src/java/org/apache/solr/core/SolrCore.java |   18 +-
 .../java/org/apache/solr/core/SolrCores.java    |   91 +-
 .../apache/solr/core/SolrResourceLoader.java    |   13 +-
 .../apache/solr/handler/AnalyzeEvaluator.java   |   14 +-
 .../org/apache/solr/handler/BlobHandler.java    |   19 +-
 .../apache/solr/handler/CdcrRequestHandler.java |    6 +-
 .../org/apache/solr/handler/ClassifyStream.java |    3 +-
 .../org/apache/solr/handler/ExportWriter.java   |  105 +-
 .../org/apache/solr/handler/IndexFetcher.java   |    2 +-
 .../solr/handler/MoreLikeThisHandler.java       |    9 +-
 .../apache/solr/handler/ReplicationHandler.java |    2 +-
 .../apache/solr/handler/RequestHandlerBase.java |    1 -
 .../solr/handler/RequestHandlerUtils.java       |   13 +
 .../org/apache/solr/handler/SchemaHandler.java  |    2 +-
 .../apache/solr/handler/SolrConfigHandler.java  |   11 +-
 .../solr/handler/StandardRequestHandler.java    |   19 +-
 .../org/apache/solr/handler/StreamHandler.java  |  477 ++-
 .../solr/handler/UpdateRequestHandlerApi.java   |    4 +-
 .../handler/admin/BaseHandlerApiSupport.java    |    3 +-
 .../solr/handler/admin/CollectionsHandler.java  |    8 +-
 .../solr/handler/admin/ConfigSetsHandler.java   |    4 +
 .../handler/admin/ConfigSetsHandlerApi.java     |    2 +
 .../apache/solr/handler/admin/InfoHandler.java  |    2 +-
 .../solr/handler/admin/LukeRequestHandler.java  |   10 +-
 .../solr/handler/admin/SecurityConfHandler.java |   16 +-
 .../solr/handler/component/ExpandComponent.java |    2 +
 .../handler/component/HttpShardHandler.java     |   76 +-
 .../component/QueryElevationComponent.java      |    5 +-
 .../solr/handler/component/ResponseBuilder.java |    3 +
 .../handler/component/SpellCheckComponent.java  |   12 +-
 .../solr/handler/component/TermsComponent.java  |   38 +-
 .../solr/highlight/DefaultSolrHighlighter.java  |    2 +-
 .../solr/highlight/UnifiedSolrHighlighter.java  |    7 +
 .../solr/index/SlowCompositeReaderWrapper.java  |    4 +-
 .../org/apache/solr/legacy/BBoxStrategy.java    |   13 +-
 .../org/apache/solr/legacy/BBoxValueSource.java |   82 +-
 .../apache/solr/legacy/DistanceValueSource.java |   81 +-
 .../apache/solr/legacy/PointVectorStrategy.java |   17 +-
 .../apache/solr/metrics/SolrMetricReporter.java |   37 +-
 .../metrics/reporters/SolrGangliaReporter.java  |   23 +-
 .../metrics/reporters/SolrGraphiteReporter.java |   37 +-
 .../solr/metrics/reporters/SolrJmxReporter.java |   21 +-
 .../metrics/reporters/SolrSlf4jReporter.java    |   24 +-
 .../reporters/solr/SolrClusterReporter.java     |   17 +-
 .../reporters/solr/SolrShardReporter.java       |   19 +-
 .../org/apache/solr/parser/FastCharStream.java  |    2 +-
 .../apache/solr/parser/SolrQueryParserBase.java |    5 +-
 .../org/apache/solr/request/SimpleFacets.java   |    4 +-
 .../solr/request/SolrQueryRequestBase.java      |   21 +-
 .../solr/response/BinaryResponseWriter.java     |   12 +-
 .../solr/response/TextResponseWriter.java       |   13 +-
 .../transform/GeoTransformerFactory.java        |   33 +-
 .../solr/schema/AbstractSpatialFieldType.java   |   10 +-
 .../java/org/apache/solr/schema/BBoxField.java  |   15 +-
 .../org/apache/solr/schema/CurrencyField.java   |  999 +-----
 .../apache/solr/schema/CurrencyFieldType.java   |  829 +++++
 .../apache/solr/schema/DoublePointField.java    |   10 +-
 .../apache/solr/schema/ExternalFileField.java   |   14 -
 .../java/org/apache/solr/schema/FieldType.java  |    4 +-
 .../solr/schema/FileExchangeRateProvider.java   |  252 ++
 .../org/apache/solr/schema/FloatPointField.java |   10 +-
 .../org/apache/solr/schema/IndexSchema.java     |   37 +-
 .../org/apache/solr/schema/IntPointField.java   |   10 +-
 .../solr/schema/LatLonPointSpatialField.java    |   46 +-
 .../org/apache/solr/schema/LongPointField.java  |   10 +-
 .../apache/solr/schema/NumericFieldType.java    |   88 +-
 .../schema/OpenExchangeRatesOrgProvider.java    |    2 +-
 .../java/org/apache/solr/schema/PointField.java |   35 +-
 .../schema/RptWithGeometrySpatialField.java     |   60 +-
 .../java/org/apache/solr/schema/TrieField.java  |   60 +-
 .../apache/solr/schema/ZkIndexSchemaReader.java |  105 +-
 .../java/org/apache/solr/search/CursorMark.java |   21 +-
 .../org/apache/solr/search/DisMaxQParser.java   |    4 +-
 .../java/org/apache/solr/search/DocList.java    |    2 +-
 .../java/org/apache/solr/search/DocSetUtil.java |    4 +-
 .../java/org/apache/solr/search/DocSlice.java   |    6 +-
 .../solr/search/ExtendedDismaxQParser.java      |   17 +-
 .../src/java/org/apache/solr/search/Filter.java |    2 +-
 .../solr/search/FloatPayloadValueSource.java    |    4 +-
 .../solr/search/GraphTermsQParserPlugin.java    |   16 +-
 .../java/org/apache/solr/search/Grouping.java   |    2 +-
 .../solr/search/IGainTermsQParserPlugin.java    |    5 +-
 .../apache/solr/search/JoinQParserPlugin.java   |   12 +-
 .../apache/solr/search/LuceneQParserPlugin.java |    8 +-
 .../solr/search/OldLuceneQParserPlugin.java     |    3 +
 .../java/org/apache/solr/search/QParser.java    |   10 -
 .../org/apache/solr/search/QParserPlugin.java   |    1 -
 .../org/apache/solr/search/QueryParsing.java    |   26 -
 .../java/org/apache/solr/search/QueryUtils.java |   11 +
 .../search/SignificantTermsQParserPlugin.java   |    9 +-
 .../TextLogisticRegressionQParserPlugin.java    |    5 +-
 .../apache/solr/search/ValueSourceParser.java   |   17 +-
 .../apache/solr/search/facet/FacetField.java    |   13 +-
 .../solr/search/facet/FacetFieldProcessor.java  |    1 +
 .../FacetFieldProcessorByEnumTermsStream.java   |    4 +-
 .../facet/FacetFieldProcessorByHashDV.java      |   33 +-
 .../apache/solr/search/facet/FacetModule.java   |    6 +-
 .../apache/solr/search/facet/FacetRange.java    |  149 +-
 .../org/apache/solr/search/facet/FieldUtil.java |    6 +
 .../org/apache/solr/search/facet/HLLAgg.java    |   83 +-
 .../org/apache/solr/search/facet/UniqueAgg.java |   76 +-
 .../search/function/ConcatStringFunction.java   |   53 +
 .../search/function/MultiStringFunction.java    |  146 +
 .../distance/GeoDistValueSourceParser.java      |    8 +-
 .../TopGroupsResultTransformer.java             |   10 +-
 .../apache/solr/search/mlt/CloudMLTQParser.java |    3 +-
 .../solr/search/mlt/SimpleMLTQParser.java       |    3 +-
 .../search/stats/ExactSharedStatsCache.java     |   12 +-
 .../solr/search/stats/ExactStatsCache.java      |   19 +-
 .../apache/solr/security/BasicAuthPlugin.java   |    2 +-
 .../solr/security/PermissionNameProvider.java   |    2 +
 .../security/RuleBasedAuthorizationPlugin.java  |    6 +-
 .../security/Sha256AuthenticationProvider.java  |    4 +-
 .../org/apache/solr/servlet/BaseSolrFilter.java |    3 +
 .../apache/solr/servlet/BaseSolrServlet.java    |    3 +
 .../org/apache/solr/servlet/HttpSolrCall.java   |   26 +-
 .../apache/solr/servlet/SolrDispatchFilter.java |    8 +-
 .../apache/solr/servlet/SolrRequestParsers.java |   13 +-
 .../spelling/AbstractLuceneSpellChecker.java    |   12 +-
 .../spelling/ConjunctionSolrSpellChecker.java   |    1 -
 .../solr/spelling/DirectSolrSpellChecker.java   |    1 -
 .../solr/spelling/PossibilityIterator.java      |    2 -
 .../apache/solr/spelling/QueryConverter.java    |    7 +-
 .../org/apache/solr/spelling/ResultEntry.java   |    2 -
 .../apache/solr/spelling/SolrSpellChecker.java  |   13 +-
 .../solr/spelling/SpellCheckCollation.java      |    6 +-
 .../solr/spelling/SpellCheckCollator.java       |   11 +-
 .../solr/spelling/SpellCheckCorrection.java     |    1 -
 .../apache/solr/spelling/SpellingOptions.java   |    5 +-
 .../solr/spelling/SpellingQueryConverter.java   |    1 -
 .../apache/solr/spelling/SpellingResult.java    |    5 +-
 .../solr/spelling/SuggestQueryConverter.java    |    2 -
 .../java/org/apache/solr/spelling/Token.java    |  175 +
 .../spelling/WordBreakSolrSpellChecker.java     |    1 -
 .../apache/solr/spelling/suggest/Suggester.java |    2 +-
 .../apache/solr/uninverting/DocTermOrds.java    |    4 +-
 .../apache/solr/update/AddUpdateCommand.java    |    8 +-
 .../solr/update/DirectUpdateHandler2.java       |    3 +-
 .../org/apache/solr/update/DocumentBuilder.java |    8 +-
 .../org/apache/solr/update/SolrIndexConfig.java |  146 +-
 .../apache/solr/update/SolrIndexSplitter.java   |    4 +-
 .../solr/update/StreamingSolrClients.java       |   65 +-
 .../java/org/apache/solr/update/UpdateLog.java  |   22 +-
 .../org/apache/solr/update/VersionInfo.java     |   76 +-
 .../AddSchemaFieldsUpdateProcessorFactory.java  |   12 +-
 .../processor/AtomicUpdateProcessorFactory.java |    3 +-
 .../processor/SimpleUpdateProcessorFactory.java |   18 +-
 .../TemplateUpdateProcessorFactory.java         |   23 +-
 .../processor/UpdateRequestProcessorChain.java  |   19 +-
 .../org/apache/solr/util/Java9InitHack.java     |   78 +
 .../apache/solr/util/JsonSchemaValidator.java   |  277 --
 .../src/java/org/apache/solr/util/PathTrie.java |  195 --
 .../src/java/org/apache/solr/util/SolrCLI.java  |   34 +-
 .../org/apache/solr/util/SolrPluginUtils.java   |   75 +-
 .../resources/SystemCollectionSolrConfig.xml    |    2 +-
 .../src/resources/apispec/cluster.Commands.json |   74 -
 .../src/resources/apispec/cluster.aliases.json  |   12 -
 .../apispec/cluster.commandstatus.delete.json   |   10 -
 .../apispec/cluster.commandstatus.json          |   20 -
 .../apispec/cluster.configs.Commands.json       |   34 -
 .../apispec/cluster.configs.delete.json         |   12 -
 .../src/resources/apispec/cluster.configs.json  |   12 -
 solr/core/src/resources/apispec/cluster.json    |   14 -
 .../src/resources/apispec/cluster.nodes.json    |   12 -
 .../cluster.security.BasicAuth.Commands.json    |   23 -
 ...cluster.security.RuleBasedAuthorization.json |  129 -
 ...luster.security.authentication.Commands.json |   12 -
 .../cluster.security.authentication.json        |   12 -
 ...cluster.security.authorization.Commands.json |   13 -
 .../apispec/cluster.security.authorization.json |   13 -
 .../resources/apispec/collections.Commands.json |  206 --
 .../collections.collection.Commands.json        |  137 -
 .../collections.collection.Commands.modify.json |   36 -
 .../collections.collection.Commands.reload.json |   11 -
 .../apispec/collections.collection.delete.json  |   13 -
 .../apispec/collections.collection.json         |   19 -
 .../collections.collection.shards.Commands.json |  109 -
 ...ctions.collection.shards.shard.Commands.json |   24 -
 ...lections.collection.shards.shard.delete.json |   27 -
 ....collection.shards.shard.replica.delete.json |   39 -
 .../core/src/resources/apispec/collections.json |   13 -
 .../src/resources/apispec/core.RealtimeGet.json |   26 -
 .../apispec/core.SchemaEdit.addCopyField.json   |   27 -
 .../apispec/core.SchemaEdit.addField.json       |   98 -
 .../core.SchemaEdit.addFieldType.analyzers.json |   51 -
 .../apispec/core.SchemaEdit.addFieldType.json   |   53 -
 .../core.SchemaEdit.deleteCopyField.json        |   19 -
 .../core.SchemaEdit.deleteDynamicField.json     |   12 -
 .../apispec/core.SchemaEdit.deleteField.json    |   12 -
 .../core.SchemaEdit.deleteFieldType.json        |   14 -
 .../src/resources/apispec/core.SchemaEdit.json  |   47 -
 .../apispec/core.SchemaRead.copyFields.json     |   26 -
 ...ore.SchemaRead.dynamicFields_fieldTypes.json |   20 -
 .../apispec/core.SchemaRead.fields.json         |   34 -
 .../src/resources/apispec/core.SchemaRead.json  |   17 -
 .../core/src/resources/apispec/core.Update.json |   17 -
 ...g.Commands.addRequestHandler.properties.json |   25 -
 .../apispec/core.config.Commands.generic.json   |   19 -
 .../resources/apispec/core.config.Commands.json |  215 --
 .../core.config.Commands.runtimeLib.json        |   23 -
 .../apispec/core.config.Params.Commands.json    |   31 -
 .../resources/apispec/core.config.Params.json   |   13 -
 .../core/src/resources/apispec/core.config.json |   18 -
 .../src/resources/apispec/core.system.blob.json |   20 -
 .../apispec/core.system.blob.upload.json        |   12 -
 .../src/resources/apispec/cores.Commands.json   |   85 -
 .../src/resources/apispec/cores.Status.json     |   20 -
 .../resources/apispec/cores.core.Commands.json  |  136 -
 .../apispec/cores.core.Commands.split.json      |   34 -
 solr/core/src/resources/apispec/emptySpec.json  |   11 -
 .../src/resources/apispec/node.Commands.json    |   24 -
 solr/core/src/resources/apispec/node.Info.json  |   11 -
 .../core/src/resources/apispec/node.invoke.json |   16 -
 .../solr/analysisconfs/analysis-err-schema.xml  |    4 +-
 .../collection1/conf/bad-error-solrconfig.xml   |    2 +-
 .../solr/collection1/conf/bad-mp-solrconfig.xml |   36 -
 .../collection1/conf/bad-mpf-solrconfig.xml     |    2 +-
 .../bad-schema-currency-ft-amount-suffix.xml    |   34 +
 .../conf/bad-schema-currency-ft-code-suffix.xml |   33 +
 .../conf/bad-schema-currency-ft-oer-norates.xml |    2 +-
 ...ma-currencyfieldtype-bogus-amount-suffix.xml |   34 +
 ...hema-currencyfieldtype-bogus-code-suffix.xml |   35 +
 ...ma-currencyfieldtype-dynamic-multivalued.xml |   36 +
 ...a-currencyfieldtype-ft-bogus-code-in-xml.xml |   41 +
 ...-currencyfieldtype-ft-bogus-default-code.xml |   41 +
 ...-schema-currencyfieldtype-ft-multivalued.xml |   36 +
 ...-schema-currencyfieldtype-ft-oer-norates.xml |   40 +
 ...-currencyfieldtype-missing-amount-suffix.xml |   34 +
 ...ma-currencyfieldtype-missing-code-suffix.xml |   35 +
 ...bad-schema-currencyfieldtype-multivalued.xml |   36 +
 ...schema-currencyfieldtype-wrong-amount-ft.xml |   36 +
 ...d-schema-currencyfieldtype-wrong-code-ft.xml |   35 +
 .../conf/bad-schema-external-filefield.xml      |   25 -
 ...-schema-uniquekey-diff-type-dynamic-root.xml |   36 +
 .../bad-schema-uniquekey-diff-type-root.xml     |   35 +
 .../conf/bad-schema-uniquekey-uses-points.xml   |   28 +
 ...chema-add-schema-fields-update-processor.xml |   22 +
 .../collection1/conf/schema-binaryfield.xml     |    2 +-
 .../conf/schema-blockjoinfacetcomponent.xml     |    4 +-
 .../solr/collection1/conf/schema-bm25.xml       |    4 +-
 .../collection1/conf/schema-charfilters.xml     |    4 +-
 .../solr/collection1/conf/schema-collate-dv.xml |    4 +-
 .../solr/collection1/conf/schema-collate.xml    |    4 +-
 .../collection1/conf/schema-copyfield-test.xml  |    2 +-
 .../collection1/conf/schema-custom-field.xml    |    6 +-
 .../collection1/conf/schema-customfield.xml     |    3 +-
 .../solr/collection1/conf/schema-dfi.xml        |    4 +-
 .../solr/collection1/conf/schema-dfr.xml        |    4 +-
 .../conf/schema-distrib-interval-faceting.xml   |   32 +-
 .../conf/schema-distributed-missing-sort.xml    |   34 +-
 .../solr/collection1/conf/schema-docValues.xml  |    5 +-
 .../conf/schema-docValuesFaceting.xml           |   35 +-
 .../conf/schema-field-sort-values.xml           |    6 +-
 .../solr/collection1/conf/schema-hash.xml       |    2 +-
 .../solr/collection1/conf/schema-ib.xml         |    4 +-
 .../collection1/conf/schema-inplace-updates.xml |    6 +-
 .../collection1/conf/schema-lmdirichlet.xml     |    4 +-
 .../collection1/conf/schema-lmjelinekmercer.xml |    4 +-
 .../conf/schema-not-required-unique-key.xml     |    2 +-
 .../collection1/conf/schema-phrasesuggest.xml   |    4 +-
 .../solr/collection1/conf/schema-point.xml      |   64 +-
 .../conf/schema-postingshighlight.xml           |    4 +-
 .../collection1/conf/schema-replication1.xml    |    2 +-
 .../collection1/conf/schema-replication2.xml    |    2 +-
 .../collection1/conf/schema-required-fields.xml |    2 +-
 .../solr/collection1/conf/schema-rest.xml       |   33 +-
 .../solr/collection1/conf/schema-reversed.xml   |    2 +-
 .../conf/schema-sim-default-override.xml        |    4 +-
 .../solr/collection1/conf/schema-sim.xml        |    4 +-
 .../collection1/conf/schema-simpleqpplugin.xml  |    4 +-
 .../collection1/conf/schema-sortingresponse.xml |   61 +-
 .../solr/collection1/conf/schema-sorts.xml      |  117 +-
 .../solr/collection1/conf/schema-spatial.xml    |   10 +
 .../solr/collection1/conf/schema-sql.xml        |    2 +-
 .../solr/collection1/conf/schema-sweetspot.xml  |    4 +-
 .../conf/schema-synonym-tokenizer.xml           |    6 +-
 .../solr/collection1/conf/schema-tfidf.xml      |    4 +-
 .../collection1/conf/schema-tokenizer-test.xml  |   25 +-
 .../solr/collection1/conf/schema-trie.xml       |    6 +-
 .../conf/schema-unifiedhighlight.xml            |    4 +-
 .../solr/collection1/conf/schema-version-dv.xml |    3 +-
 .../collection1/conf/schema-version-indexed.xml |    3 +-
 .../test-files/solr/collection1/conf/schema.xml |  135 +-
 .../solr/collection1/conf/schema11.xml          |   86 +-
 .../solr/collection1/conf/schema12.xml          |   63 +-
 .../solr/collection1/conf/schema_latest.xml     |   96 +-
 ...dd-schema-fields-update-processor-chains.xml |   32 +-
 .../conf/solrconfig-altdirectory.xml            |    2 +-
 .../conf/solrconfig-analytics-query.xml         |  230 +-
 .../solr/collection1/conf/solrconfig-basic.xml  |    2 +-
 .../conf/solrconfig-blockjoinfacetcomponent.xml |   11 +-
 .../conf/solrconfig-cache-enable-disable.xml    |    4 +-
 .../solr/collection1/conf/solrconfig-cdcr.xml   |    2 +-
 .../conf/solrconfig-cdcrupdatelog.xml           |    2 +-
 .../conf/solrconfig-classification.xml          |    2 +-
 .../conf/solrconfig-collapseqparser.xml         |  128 +-
 .../conf/solrconfig-components-name.xml         |    7 +-
 .../solrconfig-configurerecoverystrategy.xml    |    2 +-
 .../conf/solrconfig-customrecoverystrategy.xml  |    2 +-
 .../conf/solrconfig-delaying-component.xml      |    4 +-
 .../collection1/conf/solrconfig-delpolicy1.xml  |    5 +-
 .../collection1/conf/solrconfig-delpolicy2.xml  |    5 +-
 ...lrconfig-distrib-update-processor-chains.xml |    3 +-
 .../conf/solrconfig-doctransformers.xml         |    6 +-
 .../collection1/conf/solrconfig-elevate.xml     |    5 +-
 .../solrconfig-externalversionconstraint.xml    |    2 +-
 .../conf/solrconfig-functionquery.xml           |    4 +-
 .../solr/collection1/conf/solrconfig-hash.xml   |    6 +-
 .../collection1/conf/solrconfig-headers.xml     |    2 +-
 .../collection1/conf/solrconfig-highlight.xml   |    2 +-
 .../conf/solrconfig-implicitproperties.xml      |    2 +-
 .../collection1/conf/solrconfig-indexconfig.xml |   31 -
 .../conf/solrconfig-indexmetrics.xml            |    8 +-
 .../conf/solrconfig-infixsuggesters.xml         |    2 +-
 .../conf/solrconfig-logmergepolicy.xml          |   36 -
 .../conf/solrconfig-logmergepolicyfactory.xml   |    2 +-
 .../conf/solrconfig-managed-schema-test.xml     |    2 +-
 .../conf/solrconfig-managed-schema.xml          |    4 +-
 .../conf/solrconfig-master-throttled.xml        |   11 +-
 .../solr/collection1/conf/solrconfig-master.xml |   11 +-
 .../conf/solrconfig-master1-keepOneBackup.xml   |    7 +-
 .../collection1/conf/solrconfig-master1.xml     |   11 +-
 .../collection1/conf/solrconfig-master2.xml     |   11 +-
 .../collection1/conf/solrconfig-master3.xml     |   11 +-
 .../conf/solrconfig-mergepolicy-defaults.xml    |    2 +-
 .../conf/solrconfig-mergepolicy-legacy.xml      |    3 +-
 .../conf/solrconfig-mergepolicy-nocfs.xml       |   34 -
 .../solrconfig-mergepolicyfactory-nocfs.xml     |    2 +-
 .../collection1/conf/solrconfig-nocache.xml     |   10 +-
 .../conf/solrconfig-nomergepolicyfactory.xml    |    2 +-
 .../collection1/conf/solrconfig-noopregen.xml   |    2 +-
 .../collection1/conf/solrconfig-paramset.xml    |    2 +-
 ...lrconfig-parsing-update-processor-chains.xml |    2 +-
 .../conf/solrconfig-phrasesuggest.xml           |    2 +-
 .../conf/solrconfig-plugcollector.xml           |   31 +-
 .../conf/solrconfig-postingshighlight.xml       |    2 +-
 .../conf/solrconfig-query-parser-init.xml       |    2 +-
 .../conf/solrconfig-querysender-noquery.xml     |    2 +-
 .../collection1/conf/solrconfig-querysender.xml |    8 +-
 .../collection1/conf/solrconfig-repeater.xml    |   11 +-
 .../collection1/conf/solrconfig-reqHandler.incl |    2 +-
 .../conf/solrconfig-response-log-component.xml  |   16 +-
 .../collection1/conf/solrconfig-schemaless.xml  |    8 +-
 .../conf/solrconfig-script-updateprocessor.xml  |    2 +-
 .../conf/solrconfig-searcher-listeners1.xml     |    2 +-
 .../solr/collection1/conf/solrconfig-slave.xml  |   11 +-
 .../solr/collection1/conf/solrconfig-slave1.xml |   11 +-
 .../conf/solrconfig-solcoreproperties.xml       |    2 +-
 .../solrconfig-sortingmergepolicyfactory.xml    |    4 +-
 .../conf/solrconfig-sortingresponse.xml         |    2 +-
 .../collection1/conf/solrconfig-spatial.xml     |    2 +-
 .../conf/solrconfig-spellcheckcomponent.xml     |   15 +-
 .../conf/solrconfig-spellchecker.xml            |    2 +-
 .../solr/collection1/conf/solrconfig-sql.xml    |    6 +-
 ...-suggestercomponent-context-filter-query.xml |    2 +-
 .../conf/solrconfig-suggestercomponent.xml      |    2 +-
 .../collection1/conf/solrconfig-test-misc.xml   |    4 +-
 .../conf/solrconfig-testxmlparser.xml           |    2 +-
 .../conf/solrconfig-tieredmergepolicy.xml       |   48 -
 .../solrconfig-tieredmergepolicyfactory.xml     |    2 +-
 .../solr/collection1/conf/solrconfig-tlog.xml   |    5 +-
 ...nfig-uninvertdocvaluesmergepolicyfactory.xml |    2 +-
 .../conf/solrconfig-update-processor-chains.xml |    2 +-
 ...lrconfig-warmer-randommergepolicyfactory.xml |    2 +-
 .../solr/collection1/conf/solrconfig-warmer.xml |   46 -
 .../solrconfig.snippet.randomindexconfig.xml    |    3 +-
 .../solr/collection1/conf/solrconfig.xml        |   43 +-
 .../conf/solrconfig_SimpleTextCodec.xml         |    2 +-
 .../solr/collection1/conf/solrconfig_codec.xml  |    2 +-
 .../solr/collection1/conf/solrconfig_codec2.xml |    2 +-
 .../solr/collection1/conf/solrconfig_perf.xml   |    7 +-
 .../solr/configsets/_default/conf/currency.xml  |   67 +
 .../solr/configsets/_default/conf/elevate.xml   |   42 +
 .../_default/conf/lang/contractions_ca.txt      |    8 +
 .../_default/conf/lang/contractions_fr.txt      |   15 +
 .../_default/conf/lang/contractions_ga.txt      |    5 +
 .../_default/conf/lang/contractions_it.txt      |   23 +
 .../_default/conf/lang/hyphenations_ga.txt      |    5 +
 .../_default/conf/lang/stemdict_nl.txt          |    6 +
 .../_default/conf/lang/stoptags_ja.txt          |  420 +++
 .../_default/conf/lang/stopwords_ar.txt         |  125 +
 .../_default/conf/lang/stopwords_bg.txt         |  193 ++
 .../_default/conf/lang/stopwords_ca.txt         |  220 ++
 .../_default/conf/lang/stopwords_cz.txt         |  172 +
 .../_default/conf/lang/stopwords_da.txt         |  110 +
 .../_default/conf/lang/stopwords_de.txt         |  294 ++
 .../_default/conf/lang/stopwords_el.txt         |   78 +
 .../_default/conf/lang/stopwords_en.txt         |   54 +
 .../_default/conf/lang/stopwords_es.txt         |  356 ++
 .../_default/conf/lang/stopwords_eu.txt         |   99 +
 .../_default/conf/lang/stopwords_fa.txt         |  313 ++
 .../_default/conf/lang/stopwords_fi.txt         |   97 +
 .../_default/conf/lang/stopwords_fr.txt         |  186 +
 .../_default/conf/lang/stopwords_ga.txt         |  110 +
 .../_default/conf/lang/stopwords_gl.txt         |  161 +
 .../_default/conf/lang/stopwords_hi.txt         |  235 ++
 .../_default/conf/lang/stopwords_hu.txt         |  211 ++
 .../_default/conf/lang/stopwords_hy.txt         |   46 +
 .../_default/conf/lang/stopwords_id.txt         |  359 ++
 .../_default/conf/lang/stopwords_it.txt         |  303 ++
 .../_default/conf/lang/stopwords_ja.txt         |  127 +
 .../_default/conf/lang/stopwords_lv.txt         |  172 +
 .../_default/conf/lang/stopwords_nl.txt         |  119 +
 .../_default/conf/lang/stopwords_no.txt         |  194 ++
 .../_default/conf/lang/stopwords_pt.txt         |  253 ++
 .../_default/conf/lang/stopwords_ro.txt         |  233 ++
 .../_default/conf/lang/stopwords_ru.txt         |  243 ++
 .../_default/conf/lang/stopwords_sv.txt         |  133 +
 .../_default/conf/lang/stopwords_th.txt         |  119 +
 .../_default/conf/lang/stopwords_tr.txt         |  212 ++
 .../_default/conf/lang/userdict_ja.txt          |   29 +
 .../configsets/_default/conf/managed-schema     | 1076 ++++++
 .../solr/configsets/_default/conf/params.json   |   20 +
 .../solr/configsets/_default/conf/protwords.txt |   21 +
 .../configsets/_default/conf/solrconfig.xml     | 1373 ++++++++
 .../solr/configsets/_default/conf/stopwords.txt |   14 +
 .../solr/configsets/_default/conf/synonyms.txt  |   29 +
 .../bad-mergepolicy/conf/solrconfig.xml         |    2 +-
 .../cdcr-source-disabled/conf/schema.xml        |    2 +-
 .../solr/configsets/cdcr-source/conf/schema.xml |    2 +-
 .../configsets/cdcr-source/conf/solrconfig.xml  |    3 +-
 .../solr/configsets/cdcr-target/conf/schema.xml |    2 +-
 .../configsets/cdcr-target/conf/solrconfig.xml  |    3 +-
 .../solr/configsets/cloud-hdfs/conf/schema.xml  |    2 +-
 .../conf/managed-schema                         |    2 +-
 .../cloud-managed-upgrade/conf/schema.xml       |    2 +-
 .../cloud-managed/conf/managed-schema           |    2 +-
 .../cloud-minimal-jmx/conf/schema.xml           |    2 +-
 .../configsets/cloud-minimal/conf/schema.xml    |    3 +-
 .../configsets/cloud-subdirs/conf/schema.xml    |    2 +-
 .../solr/configsets/configset-2/conf/schema.xml |    4 +-
 .../exitable-directory/conf/schema.xml          |    2 +-
 .../exitable-directory/conf/solrconfig.xml      |    2 +-
 .../test-files/solr/crazy-path-to-config.xml    |   10 +-
 .../test-files/solr/crazy-path-to-schema.xml    |    4 +-
 .../org/apache/solr/BasicFunctionalityTest.java |  119 +-
 .../org/apache/solr/ConvertedLegacyTest.java    |   46 +-
 .../test/org/apache/solr/CursorPagingTest.java  |   60 +-
 .../apache/solr/DisMaxRequestHandlerTest.java   |   30 +-
 .../test/org/apache/solr/EchoParamsTest.java    |    4 +-
 .../src/test/org/apache/solr/SampleTest.java    |    6 +-
 .../test/org/apache/solr/SolrInfoBeanTest.java  |    4 +-
 .../apache/solr/TestDistributedGrouping.java    |   25 +-
 .../apache/solr/TestDistributedMissingSort.java |   60 +-
 .../org/apache/solr/TestDistributedSearch.java  |   31 +-
 .../org/apache/solr/TestGroupingSearch.java     |    6 +-
 .../core/src/test/org/apache/solr/TestJoin.java |    2 +-
 .../org/apache/solr/TestRandomDVFaceting.java   |    5 +
 .../org/apache/solr/TestRandomFaceting.java     |    3 +
 .../org/apache/solr/TestTolerantSearch.java     |    4 +-
 .../PathHierarchyTokenizerFactoryTest.java      |   32 +-
 .../apache/solr/analysis/TestCharFilters.java   |    8 +-
 .../test/org/apache/solr/api/TestPathTrie.java  |   61 -
 .../solr/cloud/BaseCdcrDistributedZkTest.java   |   26 +-
 .../solr/cloud/BasicDistributedZk2Test.java     |   37 +-
 .../solr/cloud/BasicDistributedZkTest.java      |  147 +-
 .../test/org/apache/solr/cloud/BasicZkTest.java |    6 +-
 ...MonkeyNothingIsSafeWithPullReplicasTest.java |    2 +
 ...aosMonkeySafeLeaderWithPullReplicasTest.java |    2 +
 .../solr/cloud/ClusterStateUpdateTest.java      |  175 +-
 .../cloud/CollectionsAPIDistributedZkTest.java  |  125 +-
 .../solr/cloud/CollectionsAPISolrJTest.java     |   40 +-
 .../solr/cloud/DistribCursorPagingTest.java     |   10 +-
 .../cloud/DistribJoinFromCollectionTest.java    |    8 +-
 .../org/apache/solr/cloud/ForceLeaderTest.java  |    4 +-
 .../FullThrottleStoppableIndexingThread.java    |   33 +-
 .../apache/solr/cloud/HttpPartitionTest.java    |   12 +-
 .../cloud/LeaderElectionIntegrationTest.java    |  294 +-
 .../cloud/LeaderFailoverAfterPartitionTest.java |    2 +-
 .../cloud/LeaderFailureAfterFreshStartTest.java |    4 +-
 .../LeaderInitiatedRecoveryOnCommitTest.java    |    4 +-
 ...aderInitiatedRecoveryOnShardRestartTest.java |    2 +-
 ...verseerCollectionConfigSetProcessorTest.java |   41 +-
 .../org/apache/solr/cloud/OverseerTest.java     |  339 +-
 .../org/apache/solr/cloud/ReplaceNodeTest.java  |   11 +-
 .../solr/cloud/ReplicationFactorTest.java       |    6 +-
 .../cloud/SegmentTerminateEarlyTestState.java   |   30 +-
 .../solr/cloud/ShardRoutingCustomTest.java      |   12 +
 .../org/apache/solr/cloud/ShardSplitTest.java   |    2 +-
 .../apache/solr/cloud/SolrCloudExampleTest.java |   11 +-
 .../solr/cloud/TestAuthenticationFramework.java |   13 +-
 .../cloud/TestCloudJSONFacetJoinDomain.java     |    6 +-
 .../apache/solr/cloud/TestCloudPivotFacet.java  |    7 +-
 .../apache/solr/cloud/TestCollectionAPI.java    |   29 +-
 .../apache/solr/cloud/TestConfigSetsAPI.java    |   51 +-
 .../solr/cloud/TestMiniSolrCloudCluster.java    |   22 +-
 .../cloud/TestOnReconnectListenerSupport.java   |    2 +-
 .../org/apache/solr/cloud/TestPullReplica.java  |   89 +-
 .../cloud/TestRandomRequestDistribution.java    |   10 +-
 .../cloud/TestSolrCloudWithKerberosAlt.java     |   15 +-
 .../solr/cloud/TestStressInPlaceUpdates.java    |   14 -
 .../org/apache/solr/cloud/TestTlogReplica.java  |   86 +-
 .../solr/cloud/UnloadDistributedZkTest.java     |  195 +-
 .../org/apache/solr/cloud/ZkControllerTest.java |   19 +-
 .../autoscaling/AutoScalingHandlerTest.java     |  327 ++
 .../solr/cloud/autoscaling/TestPolicyCloud.java |  199 ++
 .../solr/cloud/hdfs/HdfsNNFailoverTest.java     |    2 +-
 .../HdfsWriteToMultipleCollectionsTest.java     |    2 +-
 .../apache/solr/cloud/hdfs/StressHdfsTest.java  |    4 +-
 .../solr/cloud/rule/ImplicitSnitchTest.java     |   50 +-
 .../solr/core/AlternateDirectoryTest.java       |    2 +-
 .../apache/solr/core/DirectoryFactoryTest.java  |   61 +
 .../test/org/apache/solr/core/HelloStream.java  |    2 +-
 .../test/org/apache/solr/core/MockInfoBean.java |    2 +-
 .../apache/solr/core/RequestHandlersTest.java   |    8 +-
 .../test/org/apache/solr/core/SOLR749Test.java  |   12 +-
 .../test/org/apache/solr/core/SolrCoreTest.java |    2 +-
 .../org/apache/solr/core/TestBadConfig.java     |    2 -
 .../test/org/apache/solr/core/TestConfig.java   |   13 +-
 .../org/apache/solr/core/TestCoreContainer.java |    4 +-
 .../org/apache/solr/core/TestCoreDiscovery.java |    3 +-
 .../apache/solr/core/TestJmxIntegration.java    |    2 +-
 .../org/apache/solr/core/TestLazyCores.java     |   44 +-
 .../apache/solr/core/TestMergePolicyConfig.java |   18 +-
 .../test/org/apache/solr/core/TestNRTOpen.java  |    3 -
 .../solr/core/TestQuerySenderListener.java      |    2 +-
 .../solr/core/TestQuerySenderNoQuery.java       |    2 +-
 .../apache/solr/core/TestSolrIndexConfig.java   |    2 +-
 .../apache/solr/core/TestXIncludeConfig.java    |    2 +-
 .../core/snapshots/TestSolrCloudSnapshots.java  |    2 +-
 .../core/snapshots/TestSolrCoreSnapshots.java   |    2 +-
 .../solr/handler/MoreLikeThisHandlerTest.java   |   21 +-
 .../apache/solr/handler/SearchHandlerTest.java  |   80 +
 .../handler/StandardRequestHandlerTest.java     |   88 -
 .../apache/solr/handler/TestConfigReload.java   |    2 +-
 .../apache/solr/handler/TestReqParamsAPI.java   |    2 +-
 .../org/apache/solr/handler/TestSQLHandler.java |   32 +-
 .../handler/ThrowErrorOnInitRequestHandler.java |    4 +
 .../solr/handler/V2ApiIntegrationTest.java      |   63 +-
 .../apache/solr/handler/V2StandaloneTest.java   |   53 +
 .../handler/XsltUpdateRequestHandlerTest.java   |    2 +-
 .../handler/admin/CoreAdminHandlerTest.java     |   50 +
 .../solr/handler/admin/MBeansHandlerTest.java   |    2 +-
 .../admin/PropertiesRequestHandlerTest.java     |    2 +-
 .../admin/SegmentsInfoRequestHandlerTest.java   |    2 -
 .../solr/handler/admin/TestApiFramework.java    |    2 +-
 .../solr/handler/admin/TestCollectionAPIs.java  |   48 +-
 .../solr/handler/admin/TestConfigsApi.java      |    2 +-
 .../DistributedExpandComponentTest.java         |   40 +-
 .../DistributedFacetPivotLargeTest.java         |    5 +
 .../DistributedFacetPivotLongTailTest.java      |    5 +
 .../DistributedFacetPivotSmallAdvancedTest.java |    5 +
 .../DistributedFacetPivotSmallTest.java         |    5 +
 .../DistributedFacetPivotWhiteBoxTest.java      |    5 +
 .../component/DistributedMLTComponentTest.java  |   12 +-
 ...DistributedQueryComponentCustomSortTest.java |   38 +-
 .../DistributedQueryElevationComponentTest.java |    4 +-
 .../DistributedSpellCheckComponentTest.java     |   10 +-
 .../DistributedTermsComponentTest.java          |    3 +
 .../component/DummyCustomParamSpellChecker.java |   14 +-
 .../handler/component/FacetPivotSmallTest.java  |    3 +-
 .../component/QueryElevationComponentTest.java  |   90 +-
 .../component/ResponseLogComponentTest.java     |   12 +-
 .../component/SpellCheckComponentTest.java      |   10 +-
 .../handler/component/StatsComponentTest.java   |   23 +-
 .../handler/component/SuggestComponentTest.java |    2 +-
 .../component/TermVectorComponentTest.java      |    2 +-
 .../handler/component/TermsComponentTest.java   |    2 +-
 ...estDistributedStatsComponentCardinality.java |   26 +-
 .../handler/component/TestExpandComponent.java  |  100 +-
 .../TestTrackingShardHandlerFactory.java        |    2 +-
 .../highlight/FastVectorHighlighterTest.java    |    2 +-
 .../solr/highlight/HighlighterConfigTest.java   |    2 +-
 .../apache/solr/highlight/HighlighterTest.java  |   84 +-
 .../solr/metrics/SolrMetricManagerTest.java     |    5 +
 .../metrics/SolrMetricsIntegrationTest.java     |    2 +-
 .../metrics/reporters/MockMetricReporter.java   |    7 +-
 .../apache/solr/request/SimpleFacetsTest.java   |  156 +-
 .../org/apache/solr/request/TestFaceting.java   |   27 +-
 .../solr/request/TestIntervalFaceting.java      |    4 +-
 .../org/apache/solr/request/TestWriterPerf.java |    2 +
 .../solr/response/TestBinaryResponseWriter.java |    5 +-
 .../apache/solr/response/TestExportWriter.java  |  187 +-
 .../response/TestJavabinTupleStreamParser.java  |   20 +-
 .../apache/solr/response/TestPushWriter.java    |    8 +-
 .../transform/TestChildDocTransformer.java      |  120 +-
 .../transform/TestSubQueryTransformer.java      |   28 +-
 .../org/apache/solr/rest/TestRestManager.java   |    2 +-
 .../schema/TestFieldCollectionResource.java     |   10 +-
 .../solr/schema/AbstractCurrencyFieldTest.java  |  426 ---
 .../apache/solr/schema/BadIndexSchemaTest.java  |   63 +-
 .../org/apache/solr/schema/CopyFieldTest.java   |   12 +-
 .../schema/CurrencyFieldOpenExchangeTest.java   |   27 -
 .../solr/schema/CurrencyFieldTypeTest.java      |  494 +++
 .../solr/schema/CurrencyFieldXmlFileTest.java   |   42 -
 .../apache/solr/schema/DateRangeFieldTest.java  |    2 +-
 .../org/apache/solr/schema/DocValuesTest.java   |  256 +-
 .../schema/IndexSchemaRuntimeFieldTest.java     |    4 +-
 .../org/apache/solr/schema/IndexSchemaTest.java |   28 +-
 .../OpenExchangeRatesOrgProviderTest.java       |    2 +-
 .../org/apache/solr/schema/PolyFieldTest.java   |    8 -
 .../apache/solr/schema/SchemaWatcherTest.java   |   56 +
 .../org/apache/solr/schema/TestBinaryField.java |    6 +-
 .../solr/schema/TestCloudManagedSchema.java     |    2 +-
 .../apache/solr/schema/TestCollationField.java  |   32 +-
 .../schema/TestCollationFieldDocValues.java     |   32 +-
 .../solr/schema/TestHalfAndHalfDocValues.java   |   10 +-
 .../apache/solr/schema/TestOmitPositions.java   |    4 +-
 .../org/apache/solr/schema/TestPointFields.java |  578 ++--
 .../apache/solr/search/QueryEqualityTest.java   |   16 +
 .../apache/solr/search/SpatialFilterTest.java   |    2 +-
 .../solr/search/TestCollapseQParserPlugin.java  |  282 +-
 .../TestComplexPhraseLeadingWildcard.java       |    2 +-
 .../search/TestComplexPhraseQParserPlugin.java  |    8 +-
 .../org/apache/solr/search/TestCustomSort.java  |   20 +-
 .../test/org/apache/solr/search/TestDocSet.java |    5 +-
 .../solr/search/TestExtendedDismaxParser.java   |   22 +-
 .../apache/solr/search/TestFieldSortValues.java |   10 +-
 .../solr/search/TestFoldingMultitermQuery.java  |    2 +-
 .../search/TestGraphTermsQParserPlugin.java     |   36 +-
 .../solr/search/TestHashQParserPlugin.java      |   14 +-
 .../apache/solr/search/TestIndexSearcher.java   |    3 -
 .../solr/search/TestMaxScoreQueryParser.java    |   10 +-
 .../org/apache/solr/search/TestQueryTypes.java  |   68 +-
 .../org/apache/solr/search/TestRangeQuery.java  |    8 +-
 .../solr/search/TestReRankQParserPlugin.java    |  208 +-
 .../test/org/apache/solr/search/TestReload.java |    2 +-
 .../org/apache/solr/search/TestSearchPerf.java  |    2 +-
 .../apache/solr/search/TestSolr4Spatial.java    |   26 +-
 .../apache/solr/search/TestSolrQueryParser.java |   76 +-
 .../org/apache/solr/search/TestTrieFacet.java   |   26 +-
 .../org/apache/solr/search/facet/DebugAgg.java  |    5 +-
 .../search/facet/TestJsonFacetRefinement.java   |  265 +-
 .../solr/search/facet/TestJsonFacets.java       |   14 +-
 .../search/function/SortByFunctionTest.java     |   68 +-
 .../solr/search/function/TestFunctionQuery.java |   65 +-
 .../function/TestMinMaxOnMultiValuedField.java  |  156 +-
 .../search/join/BlockJoinFacetDistribTest.java  |    2 +-
 .../search/join/BlockJoinFacetRandomTest.java   |    2 +-
 .../search/join/BlockJoinFacetSimpleTest.java   |    2 +-
 .../solr/search/mlt/SimpleMLTQParserTest.java   |   86 +-
 .../search/stats/TestDefaultStatsCache.java     |   17 +-
 .../solr/search/stats/TestDistribIDF.java       |   14 +-
 .../solr/security/MockAuthorizationPlugin.java  |    2 +-
 .../apache/solr/servlet/NoCacheHeaderTest.java  |    2 +-
 .../spelling/DirectSolrSpellCheckerTest.java    |    3 +-
 .../spelling/FileBasedSpellCheckerTest.java     |    1 -
 .../spelling/IndexBasedSpellCheckerTest.java    |    1 -
 .../solr/spelling/SimpleQueryConverter.java     |    8 +-
 .../solr/spelling/SpellCheckCollatorTest.java   |   58 +-
 .../SpellCheckCollatorWithCollapseTest.java     |    2 +-
 .../spelling/SpellPossibilityIteratorTest.java  |    2 -
 .../spelling/SpellingQueryConverterTest.java    |    9 +-
 .../spelling/TestSuggestSpellingConverter.java  |   10 +-
 .../spelling/WordBreakSolrSpellCheckerTest.java |   17 +-
 .../solr/spelling/suggest/SuggesterTest.java    |   19 +-
 .../suggest/TestAnalyzeInfixSuggestions.java    |    2 +-
 .../suggest/TestFreeTextSuggestions.java        |    2 +-
 .../apache/solr/update/AddBlockUpdateTest.java  |   10 +-
 .../solr/update/DirectUpdateHandlerTest.java    |    3 -
 .../apache/solr/update/DocumentBuilderTest.java |    4 +-
 .../solr/update/SolrCmdDistributorTest.java     |    3 -
 .../apache/solr/update/SolrIndexConfigTest.java |   36 +-
 .../solr/update/TestInPlaceUpdatesDistrib.java  |   18 -
 .../update/TestInPlaceUpdatesStandalone.java    |   18 -
 .../org/apache/solr/update/UpdateLogTest.java   |    9 -
 .../org/apache/solr/update/VersionInfoTest.java |  126 +-
 ...dSchemaFieldsUpdateProcessorFactoryTest.java |   16 +-
 .../AtomicUpdateProcessorFactoryTest.java       |   36 +-
 .../update/processor/AtomicUpdatesTest.java     |   36 +-
 .../ClassificationUpdateProcessorTest.java      |    2 +-
 .../processor/TemplateUpdateProcessorTest.java  |   67 +-
 .../UpdateRequestProcessorFactoryTest.java      |    8 +-
 .../org/apache/solr/util/JsonValidatorTest.java |  196 --
 .../org/apache/solr/util/PrimUtilsTest.java     |    2 +-
 .../apache/solr/util/TestSolrCLIRunExample.java |    2 +-
 .../test/org/apache/solr/util/TestUtils.java    |   74 +-
 .../org/apache/solr/util/UtilsToolTest.java     |    2 +-
 .../org/apache/solr/util/hll/BitVectorTest.java |    2 +-
 .../apache/solr/util/hll/ExplicitHLLTest.java   |    2 +-
 .../org/apache/solr/util/hll/FullHLLTest.java   |    2 +-
 .../example-DIH/solr/db/conf/managed-schema     |   27 +-
 .../example-DIH/solr/db/conf/solrconfig.xml     |   42 +-
 .../example-DIH/solr/mail/conf/managed-schema   |   27 +-
 .../example-DIH/solr/mail/conf/solrconfig.xml   |   42 +-
 .../example-DIH/solr/solr/conf/currency.xml     |    2 +-
 .../example-DIH/solr/solr/conf/managed-schema   |   27 +-
 .../example-DIH/solr/solr/conf/solrconfig.xml   |   42 +-
 solr/example/files/conf/managed-schema          |   24 +-
 solr/example/files/conf/solrconfig.xml          |   46 +-
 solr/licenses/noggit-0.6.jar.sha1               |    1 -
 solr/licenses/noggit-0.8.jar.sha1               |    1 +
 solr/server/README.txt                          |   11 +-
 .../server/etc/test/create-solrtest.keystore.sh |   37 -
 solr/server/etc/test/solrtest.keystore          |  Bin 2208 -> 0 bytes
 .../solr/configsets/_default/conf/currency.xml  |   67 +
 .../solr/configsets/_default/conf/elevate.xml   |   42 +
 .../_default/conf/lang/contractions_ca.txt      |    8 +
 .../_default/conf/lang/contractions_fr.txt      |   15 +
 .../_default/conf/lang/contractions_ga.txt      |    5 +
 .../_default/conf/lang/contractions_it.txt      |   23 +
 .../_default/conf/lang/hyphenations_ga.txt      |    5 +
 .../_default/conf/lang/stemdict_nl.txt          |    6 +
 .../_default/conf/lang/stoptags_ja.txt          |  420 +++
 .../_default/conf/lang/stopwords_ar.txt         |  125 +
 .../_default/conf/lang/stopwords_bg.txt         |  193 ++
 .../_default/conf/lang/stopwords_ca.txt         |  220 ++
 .../_default/conf/lang/stopwords_cz.txt         |  172 +
 .../_default/conf/lang/stopwords_da.txt         |  110 +
 .../_default/conf/lang/stopwords_de.txt         |  294 ++
 .../_default/conf/lang/stopwords_el.txt         |   78 +
 .../_default/conf/lang/stopwords_en.txt         |   54 +
 .../_default/conf/lang/stopwords_es.txt         |  356 ++
 .../_default/conf/lang/stopwords_eu.txt         |   99 +
 .../_default/conf/lang/stopwords_fa.txt         |  313 ++
 .../_default/conf/lang/stopwords_fi.txt         |   97 +
 .../_default/conf/lang/stopwords_fr.txt         |  186 +
 .../_default/conf/lang/stopwords_ga.txt         |  110 +
 .../_default/conf/lang/stopwords_gl.txt         |  161 +
 .../_default/conf/lang/stopwords_hi.txt         |  235 ++
 .../_default/conf/lang/stopwords_hu.txt         |  211 ++
 .../_default/conf/lang/stopwords_hy.txt         |   46 +
 .../_default/conf/lang/stopwords_id.txt         |  359 ++
 .../_default/conf/lang/stopwords_it.txt         |  303 ++
 .../_default/conf/lang/stopwords_ja.txt         |  127 +
 .../_default/conf/lang/stopwords_lv.txt         |  172 +
 .../_default/conf/lang/stopwords_nl.txt         |  119 +
 .../_default/conf/lang/stopwords_no.txt         |  194 ++
 .../_default/conf/lang/stopwords_pt.txt         |  253 ++
 .../_default/conf/lang/stopwords_ro.txt         |  233 ++
 .../_default/conf/lang/stopwords_ru.txt         |  243 ++
 .../_default/conf/lang/stopwords_sv.txt         |  133 +
 .../_default/conf/lang/stopwords_th.txt         |  119 +
 .../_default/conf/lang/stopwords_tr.txt         |  212 ++
 .../_default/conf/lang/userdict_ja.txt          |   29 +
 .../configsets/_default/conf/managed-schema     | 1076 ++++++
 .../solr/configsets/_default/conf/params.json   |   20 +
 .../solr/configsets/_default/conf/protwords.txt |   21 +
 .../configsets/_default/conf/solrconfig.xml     | 1373 ++++++++
 .../solr/configsets/_default/conf/stopwords.txt |   14 +
 .../solr/configsets/_default/conf/synonyms.txt  |   29 +
 .../configsets/basic_configs/conf/currency.xml  |   67 -
 .../configsets/basic_configs/conf/elevate.xml   |   42 -
 .../basic_configs/conf/lang/contractions_ca.txt |    8 -
 .../basic_configs/conf/lang/contractions_fr.txt |   15 -
 .../basic_configs/conf/lang/contractions_ga.txt |    5 -
 .../basic_configs/conf/lang/contractions_it.txt |   23 -
 .../basic_configs/conf/lang/hyphenations_ga.txt |    5 -
 .../basic_configs/conf/lang/stemdict_nl.txt     |    6 -
 .../basic_configs/conf/lang/stoptags_ja.txt     |  420 ---
 .../basic_configs/conf/lang/stopwords_ar.txt    |  125 -
 .../basic_configs/conf/lang/stopwords_bg.txt    |  193 --
 .../basic_configs/conf/lang/stopwords_ca.txt    |  220 --
 .../basic_configs/conf/lang/stopwords_cz.txt    |  172 -
 .../basic_configs/conf/lang/stopwords_da.txt    |  110 -
 .../basic_configs/conf/lang/stopwords_de.txt    |  294 --
 .../basic_configs/conf/lang/stopwords_el.txt    |   78 -
 .../basic_configs/conf/lang/stopwords_en.txt    |   54 -
 .../basic_configs/conf/lang/stopwords_es.txt    |  356 --
 .../basic_configs/conf/lang/stopwords_eu.txt    |   99 -
 .../basic_configs/conf/lang/stopwords_fa.txt    |  313 --
 .../basic_configs/conf/lang/stopwords_fi.txt    |   97 -
 .../basic_configs/conf/lang/stopwords_fr.txt    |  186 -
 .../basic_configs/conf/lang/stopwords_ga.txt    |  110 -
 .../basic_configs/conf/lang/stopwords_gl.txt    |  161 -
 .../basic_configs/conf/lang/stopwords_hi.txt    |  235 --
 .../basic_configs/conf/lang/stopwords_hu.txt    |  211 --
 .../basic_configs/conf/lang/stopwords_hy.txt    |   46 -
 .../basic_configs/conf/lang/stopwords_id.txt    |  359 --
 .../basic_configs/conf/lang/stopwords_it.txt    |  303 --
 .../basic_configs/conf/lang/stopwords_ja.txt    |  127 -
 .../basic_configs/conf/lang/stopwords_lv.txt    |  172 -
 .../basic_configs/conf/lang/stopwords_nl.txt    |  119 -
 .../basic_configs/conf/lang/stopwords_no.txt    |  194 --
 .../basic_configs/conf/lang/stopwords_pt.txt    |  253 --
 .../basic_configs/conf/lang/stopwords_ro.txt    |  233 --
 .../basic_configs/conf/lang/stopwords_ru.txt    |  243 --
 .../basic_configs/conf/lang/stopwords_sv.txt    |  133 -
 .../basic_configs/conf/lang/stopwords_th.txt    |  119 -
 .../basic_configs/conf/lang/stopwords_tr.txt    |  212 --
 .../basic_configs/conf/lang/userdict_ja.txt     |   29 -
 .../basic_configs/conf/managed-schema           | 1045 ------
 .../configsets/basic_configs/conf/params.json   |   20 -
 .../configsets/basic_configs/conf/protwords.txt |   21 -
 .../basic_configs/conf/solrconfig.xml           | 1410 --------
 .../configsets/basic_configs/conf/stopwords.txt |   14 -
 .../configsets/basic_configs/conf/synonyms.txt  |   29 -
 .../conf/currency.xml                           |   67 -
 .../data_driven_schema_configs/conf/elevate.xml |   42 -
 .../conf/lang/contractions_ca.txt               |    8 -
 .../conf/lang/contractions_fr.txt               |   15 -
 .../conf/lang/contractions_ga.txt               |    5 -
 .../conf/lang/contractions_it.txt               |   23 -
 .../conf/lang/hyphenations_ga.txt               |    5 -
 .../conf/lang/stemdict_nl.txt                   |    6 -
 .../conf/lang/stoptags_ja.txt                   |  420 ---
 .../conf/lang/stopwords_ar.txt                  |  125 -
 .../conf/lang/stopwords_bg.txt                  |  193 --
 .../conf/lang/stopwords_ca.txt                  |  220 --
 .../conf/lang/stopwords_cz.txt                  |  172 -
 .../conf/lang/stopwords_da.txt                  |  110 -
 .../conf/lang/stopwords_de.txt                  |  294 --
 .../conf/lang/stopwords_el.txt                  |   78 -
 .../conf/lang/stopwords_en.txt                  |   54 -
 .../conf/lang/stopwords_es.txt                  |  356 --
 .../conf/lang/stopwords_eu.txt                  |   99 -
 .../conf/lang/stopwords_fa.txt                  |  313 --
 .../conf/lang/stopwords_fi.txt                  |   97 -
 .../conf/lang/stopwords_fr.txt                  |  186 -
 .../conf/lang/stopwords_ga.txt                  |  110 -
 .../conf/lang/stopwords_gl.txt                  |  161 -
 .../conf/lang/stopwords_hi.txt                  |  235 --
 .../conf/lang/stopwords_hu.txt                  |  211 --
 .../conf/lang/stopwords_hy.txt                  |   46 -
 .../conf/lang/stopwords_id.txt                  |  359 --
 .../conf/lang/stopwords_it.txt                  |  303 --
 .../conf/lang/stopwords_ja.txt                  |  127 -
 .../conf/lang/stopwords_lv.txt                  |  172 -
 .../conf/lang/stopwords_nl.txt                  |  119 -
 .../conf/lang/stopwords_no.txt                  |  194 --
 .../conf/lang/stopwords_pt.txt                  |  253 --
 .../conf/lang/stopwords_ro.txt                  |  233 --
 .../conf/lang/stopwords_ru.txt                  |  243 --
 .../conf/lang/stopwords_sv.txt                  |  133 -
 .../conf/lang/stopwords_th.txt                  |  119 -
 .../conf/lang/stopwords_tr.txt                  |  212 --
 .../conf/lang/userdict_ja.txt                   |   29 -
 .../conf/managed-schema                         | 1069 ------
 .../data_driven_schema_configs/conf/params.json |   20 -
 .../conf/protwords.txt                          |   21 -
 .../conf/solrconfig.xml                         | 1408 --------
 .../conf/stopwords.txt                          |   14 -
 .../conf/synonyms.txt                           |   29 -
 .../conf/managed-schema                         |   27 +-
 .../conf/solrconfig.xml                         |   56 +-
 solr/solr-ref-guide/build.xml                   |   31 +-
 solr/solr-ref-guide/meta-docs/publish.adoc      |    1 -
 solr/solr-ref-guide/src/_config.yml.template    |    9 +-
 solr/solr-ref-guide/src/_includes/head.html     |    2 -
 ...adding-custom-plugins-in-solrcloud-mode.adoc |    2 +-
 .../src/basic-authentication-plugin.adoc        |   22 +-
 solr/solr-ref-guide/src/blockjoin-faceting.adoc |   19 +-
 .../solr-ref-guide/src/charfilterfactories.adoc |   26 +-
 solr/solr-ref-guide/src/cloud-screens.adoc      |    2 +-
 solr/solr-ref-guide/src/codec-factory.adoc      |   12 +-
 .../src/collapse-and-expand-results.adoc        |   84 +-
 solr/solr-ref-guide/src/collections-api.adoc    | 1009 +++---
 .../src/command-line-utilities.adoc             |    2 +-
 .../src/common-query-parameters.adoc            |   30 +-
 solr/solr-ref-guide/src/config-api.adoc         |    2 +-
 solr/solr-ref-guide/src/configsets-api.adoc     |   61 +-
 .../src/configuring-solrconfig-xml.adoc         |    3 +-
 solr/solr-ref-guide/src/content-streams.adoc    |   28 +-
 solr/solr-ref-guide/src/coreadmin-api.adoc      |  284 +-
 .../src/cross-data-center-replication-cdcr.adoc |   55 +-
 solr/solr-ref-guide/src/css/ref-guide.css       |    5 +-
 solr/solr-ref-guide/src/css/theme-solr.css      |    2 +-
 ...adir-and-directoryfactory-in-solrconfig.adoc |    4 +-
 solr/solr-ref-guide/src/de-duplication.adoc     |   45 +-
 .../src/defining-core-properties.adoc           |   52 +-
 solr/solr-ref-guide/src/defining-fields.adoc    |   18 +-
 .../detecting-languages-during-indexing.adoc    |   99 +-
 .../src/distributed-requests.adoc               |   45 +-
 .../distributed-search-with-index-sharding.adoc |    2 +-
 solr/solr-ref-guide/src/enabling-ssl.adoc       |   12 +-
 .../src/exporting-result-sets.adoc              |    2 +-
 solr/solr-ref-guide/src/faceting.adoc           |   64 +-
 solr/solr-ref-guide/src/feed.xml                |   28 -
 .../field-type-definitions-and-properties.adoc  |   40 +-
 .../src/field-types-included-with-solr.adoc     |    3 +-
 .../solr-ref-guide/src/filter-descriptions.adoc |   36 +-
 solr/solr-ref-guide/src/format-of-solr-xml.adoc |  203 +-
 solr/solr-ref-guide/src/function-queries.adoc   |  451 ++-
 solr/solr-ref-guide/src/graph-traversal.adoc    |  296 +-
 .../src/hadoop-authentication-plugin.adoc       |   44 +-
 solr/solr-ref-guide/src/highlighting.adoc       |  301 +-
 .../src/images/Solr_Logo_on_white.png           |  Bin 0 -> 47661 bytes
 .../src/implicit-requesthandlers.adoc           |    2 +-
 solr/solr-ref-guide/src/index-replication.adoc  |  194 +-
 .../src/indexconfig-in-solrconfig.adoc          |   29 +-
 .../src/initparams-in-solrconfig.adoc           |   16 +-
 .../src/introduction-to-solr-indexing.adoc      |    2 +-
 solr/solr-ref-guide/src/jvm-settings.adoc       |    2 +-
 .../src/kerberos-authentication-plugin.adoc     |   72 +-
 solr/solr-ref-guide/src/language-analysis.adoc  |   10 +-
 solr/solr-ref-guide/src/learning-to-rank.adoc   |    2 +-
 .../src/local-parameters-in-queries.adoc        |    2 +-
 .../major-changes-from-solr-5-to-solr-6.adoc    |    6 +-
 .../src/making-and-restoring-backups.adoc       |  102 +-
 .../src/mbean-request-handler.adoc              |   21 +-
 solr/solr-ref-guide/src/merging-indexes.adoc    |    2 +-
 solr/solr-ref-guide/src/metrics-reporting.adoc  |  147 +-
 solr/solr-ref-guide/src/morelikethis.adoc       |   76 +-
 .../src/near-real-time-searching.adoc           |   44 +-
 solr/solr-ref-guide/src/other-parsers.adoc      |  203 +-
 .../src/parallel-sql-interface.adoc             |   18 +-
 .../solr-ref-guide/src/parameter-reference.adoc |   45 +-
 .../src/pdf/SolrRefGuide-all.adoc               |    6 +-
 .../src/pdf/themes/refguide-theme.yml           |   17 +-
 .../src/performance-statistics-reference.adoc   |    2 +-
 solr/solr-ref-guide/src/query-re-ranking.adoc   |   15 +-
 solr/solr-ref-guide/src/query-screen.adoc       |   68 +-
 .../src/query-settings-in-solrconfig.adoc       |   22 +-
 .../read-and-write-side-fault-tolerance.adoc    |    4 +-
 solr/solr-ref-guide/src/replication-screen.adoc |    4 +-
 .../src/request-parameters-api.adoc             |    2 +-
 .../src/requestdispatcher-in-solrconfig.adoc    |   35 +-
 ...lers-and-searchcomponents-in-solrconfig.adoc |   14 +-
 solr/solr-ref-guide/src/response-writers.adoc   |  103 +-
 solr/solr-ref-guide/src/result-clustering.adoc  |   82 +-
 solr/solr-ref-guide/src/result-grouping.adoc    |   77 +-
 .../src/rule-based-authorization-plugin.adoc    |   65 +-
 .../src/running-solr-on-hdfs.adoc               |   95 +-
 solr/solr-ref-guide/src/schema-api.adoc         |  361 +-
 ...schema-factory-definition-in-solrconfig.adoc |    6 +-
 solr/solr-ref-guide/src/schemaless-mode.adoc    |    8 +-
 ...tting-up-an-external-zookeeper-ensemble.adoc |    8 +-
 .../shards-and-indexing-data-in-solrcloud.adoc  |    2 +-
 solr/solr-ref-guide/src/sitemap.xml             |    2 +-
 .../src/solr-control-script-reference.adoc      |  520 +--
 .../src/solr-cores-and-solr-xml.adoc            |    2 +-
 .../src/solr-jdbc-apache-zeppelin.adoc          |    2 +-
 solr/solr-ref-guide/src/spatial-search.adoc     |  150 +-
 solr/solr-ref-guide/src/spell-checking.adoc     |   40 +-
 solr/solr-ref-guide/src/stream-decorators.adoc  |  392 ++-
 solr/solr-ref-guide/src/stream-evaluators.adoc  |  137 +-
 solr/solr-ref-guide/src/stream-sources.adoc     |  131 +-
 .../src/taking-solr-to-production.adoc          |   20 +-
 .../src/the-dismax-query-parser.adoc            |   38 +-
 .../src/the-extended-dismax-query-parser.adoc   |   30 +-
 .../src/the-query-elevation-component.adoc      |   31 +-
 .../src/the-standard-query-parser.adoc          |   14 +-
 .../solr-ref-guide/src/the-stats-component.adoc |   75 +-
 .../src/the-term-vector-component.adoc          |   55 +-
 .../solr-ref-guide/src/the-terms-component.adoc |  117 +-
 .../src/transforming-result-documents.adoc      |   31 +-
 ...anding-analyzers-tokenizers-and-filters.adoc |    8 +-
 .../src/update-request-processors.adoc          |   24 +-
 .../src/updatehandlers-in-solrconfig.adoc       |   62 +-
 .../src/updating-parts-of-documents.adoc        |   56 +-
 solr/solr-ref-guide/src/upgrading-solr.adoc     |    2 +-
 .../src/uploading-data-with-index-handlers.adoc |  130 +-
 ...g-data-with-solr-cell-using-apache-tika.adoc |  125 +-
 ...store-data-with-the-data-import-handler.adoc |    4 +-
 solr/solr-ref-guide/src/using-solrj.adoc        |   14 +-
 ...zookeeper-to-manage-configuration-files.adoc |    4 +-
 solr/solr-ref-guide/src/v2-api.adoc             |   24 +-
 .../src/velocity-response-writer.adoc           |   99 +-
 ...king-with-currencies-and-exchange-rates.adoc |   34 +-
 solr/solr-ref-guide/src/working-with-dates.adoc |   11 +-
 .../src/working-with-enum-fields.adoc           |    6 +-
 ...rking-with-external-files-and-processes.adoc |   30 +-
 .../src/zookeeper-access-control.adoc           |   21 +-
 .../apache/solr/client/solrj/SolrRequest.java   |   18 +
 .../solr/client/solrj/V2RequestSupport.java     |   30 +
 .../cloud/autoscaling/AddReplicaSuggester.java  |   69 +
 .../client/solrj/cloud/autoscaling/Cell.java    |   69 +
 .../client/solrj/cloud/autoscaling/Clause.java  |  472 +++
 .../cloud/autoscaling/ClusterDataProvider.java  |   52 +
 .../cloud/autoscaling/MoveReplicaSuggester.java |   83 +
 .../client/solrj/cloud/autoscaling/Operand.java |  123 +
 .../client/solrj/cloud/autoscaling/Policy.java  |  521 +++
 .../solrj/cloud/autoscaling/PolicyHelper.java   |   96 +
 .../solrj/cloud/autoscaling/Preference.java     |   89 +
 .../client/solrj/cloud/autoscaling/Row.java     |  120 +
 .../solrj/cloud/autoscaling/package-info.java   |   23 +
 .../solr/client/solrj/impl/CloudSolrClient.java |  120 +-
 .../solrj/impl/ConcurrentUpdateSolrClient.java  |   81 +-
 .../impl/DelegationTokenHttpSolrClient.java     |   13 +
 .../solr/client/solrj/impl/HttpSolrClient.java  |  217 +-
 .../client/solrj/impl/LBHttpSolrClient.java     |  101 +-
 .../solrj/impl/SolrClientDataProvider.java      |  256 ++
 .../impl/StreamingBinaryResponseParser.java     |    5 +-
 .../impl/ZkClientClusterStateProvider.java      |   11 +-
 .../client/solrj/io/eval/AnovaEvaluator.java    |    6 +
 .../client/solrj/io/eval/ArrayEvaluator.java    |   53 +-
 .../client/solrj/io/eval/ComplexEvaluator.java  |   18 +-
 .../solrj/io/eval/ConvolutionEvaluator.java     |    6 +
 .../solrj/io/eval/CorrelationEvaluator.java     |    6 +
 .../solrj/io/eval/CovarianceEvaluator.java      |    6 +
 .../io/eval/CumulativeProbabilityEvaluator.java |   67 +
 .../client/solrj/io/eval/DescribeEvaluator.java |   10 +-
 .../client/solrj/io/eval/DistanceEvaluator.java |    7 +
 .../io/eval/EmpiricalDistributionEvaluator.java |    9 +-
 .../solrj/io/eval/FindDelayEvaluator.java       |    6 +
 .../solrj/io/eval/HistogramEvaluator.java       |    7 +-
 .../client/solrj/io/eval/LengthEvaluator.java   |   23 +-
 .../solrj/io/eval/MovingAverageEvaluator.java   |    6 +
 .../solrj/io/eval/PercentileEvaluator.java      |   25 +-
 .../client/solrj/io/eval/PredictEvaluator.java  |   10 +-
 .../client/solrj/io/eval/RankEvaluator.java     |    7 +
 .../solrj/io/eval/RegressionEvaluator.java      |   10 +-
 .../client/solrj/io/eval/ReverseEvaluator.java  |    7 +
 .../client/solrj/io/eval/ScaleEvaluator.java    |    7 +
 .../client/solrj/io/eval/SequenceEvaluator.java |    7 +
 .../solrj/io/stream/CartesianProductStream.java |   12 +-
 .../client/solrj/io/stream/FacetStream.java     |    3 +
 .../solr/client/solrj/io/stream/LetStream.java  |    4 +-
 .../solr/client/solrj/io/stream/TupStream.java  |    3 +-
 .../solrj/request/CollectionAdminRequest.java   |   29 +-
 .../solrj/request/CollectionApiMapping.java     |   14 +
 .../request/JavaBinUpdateRequestCodec.java      |   12 +-
 .../client/solrj/request/V1toV2ApiMapper.java   |  144 +
 .../solr/client/solrj/request/V2Request.java    |   59 +-
 .../solrj/response/SpellCheckResponse.java      |    2 +-
 .../solr/client/solrj/response/V2Response.java  |   22 +
 .../org/apache/solr/common/IteratorWriter.java  |   21 +-
 .../java/org/apache/solr/common/MapWriter.java  |   10 +
 .../org/apache/solr/common/SpecProvider.java    |   25 +
 .../apache/solr/common/cloud/DocCollection.java |   14 +
 .../solr/common/cloud/ZkConfigManager.java      |    2 +-
 .../apache/solr/common/cloud/ZkStateReader.java |    1 +
 .../solr/common/cloud/rule/ImplicitSnitch.java  |   53 +-
 .../apache/solr/common/cloud/rule/Snitch.java   |    6 +-
 .../solr/common/cloud/rule/SnitchContext.java   |    7 +-
 .../apache/solr/common/params/CommonParams.java |   11 +-
 .../common/params/ModifiableSolrParams.java     |    4 +
 .../solr/common/params/MoreLikeThisParams.java  |    4 +-
 .../solr/common/util/CommandOperation.java      |  100 +-
 .../solr/common/util/ContentStreamBase.java     |    7 +-
 .../apache/solr/common/util/JavaBinCodec.java   |   44 +-
 .../solr/common/util/JsonSchemaValidator.java   |  298 ++
 .../org/apache/solr/common/util/PathTrie.java   |  195 ++
 .../org/apache/solr/common/util/Template.java   |   66 +
 .../java/org/apache/solr/common/util/Utils.java |  224 +-
 .../solr/common/util/ValidatingJsonMap.java     |    2 +-
 .../resources/apispec/autoscaling.Commands.json |   47 +
 .../src/resources/apispec/cluster.Commands.json |   74 +
 .../src/resources/apispec/cluster.aliases.json  |   12 +
 .../apispec/cluster.commandstatus.delete.json   |   10 +
 .../apispec/cluster.commandstatus.json          |   20 +
 .../apispec/cluster.configs.Commands.json       |   34 +
 .../apispec/cluster.configs.delete.json         |   12 +
 .../src/resources/apispec/cluster.configs.json  |   12 +
 solr/solrj/src/resources/apispec/cluster.json   |   14 +
 .../src/resources/apispec/cluster.nodes.json    |   12 +
 .../cluster.security.BasicAuth.Commands.json    |   23 +
 ...cluster.security.RuleBasedAuthorization.json |  129 +
 ...luster.security.authentication.Commands.json |   12 +
 .../cluster.security.authentication.json        |   12 +
 ...cluster.security.authorization.Commands.json |   13 +
 .../apispec/cluster.security.authorization.json |   13 +
 .../resources/apispec/collections.Commands.json |  218 ++
 .../collections.collection.Commands.json        |  137 +
 .../collections.collection.Commands.modify.json |   36 +
 .../collections.collection.Commands.reload.json |   11 +
 .../apispec/collections.collection.delete.json  |   13 +
 .../apispec/collections.collection.json         |   19 +
 .../collections.collection.shards.Commands.json |  114 +
 ...ctions.collection.shards.shard.Commands.json |   24 +
 ...lections.collection.shards.shard.delete.json |   27 +
 ....collection.shards.shard.replica.delete.json |   39 +
 .../src/resources/apispec/collections.json      |   13 +
 .../src/resources/apispec/core.RealtimeGet.json |   26 +
 .../apispec/core.SchemaEdit.addCopyField.json   |   27 +
 .../apispec/core.SchemaEdit.addField.json       |   98 +
 .../core.SchemaEdit.addFieldType.analyzers.json |   51 +
 .../apispec/core.SchemaEdit.addFieldType.json   |   53 +
 .../core.SchemaEdit.deleteCopyField.json        |   19 +
 .../core.SchemaEdit.deleteDynamicField.json     |   12 +
 .../apispec/core.SchemaEdit.deleteField.json    |   12 +
 .../core.SchemaEdit.deleteFieldType.json        |   14 +
 .../src/resources/apispec/core.SchemaEdit.json  |   47 +
 .../apispec/core.SchemaRead.copyFields.json     |   26 +
 ...ore.SchemaRead.dynamicFields_fieldTypes.json |   20 +
 .../apispec/core.SchemaRead.fields.json         |   34 +
 .../src/resources/apispec/core.SchemaRead.json  |   17 +
 .../src/resources/apispec/core.Update.json      |   17 +
 ...g.Commands.addRequestHandler.properties.json |   25 +
 .../apispec/core.config.Commands.generic.json   |   19 +
 .../resources/apispec/core.config.Commands.json |  215 ++
 .../core.config.Commands.runtimeLib.json        |   23 +
 .../apispec/core.config.Params.Commands.json    |   31 +
 .../resources/apispec/core.config.Params.json   |   13 +
 .../src/resources/apispec/core.config.json      |   18 +
 .../src/resources/apispec/core.system.blob.json |   20 +
 .../apispec/core.system.blob.upload.json        |   12 +
 .../src/resources/apispec/cores.Commands.json   |   85 +
 .../src/resources/apispec/cores.Status.json     |   20 +
 .../resources/apispec/cores.core.Commands.json  |  136 +
 .../apispec/cores.core.Commands.split.json      |   34 +
 solr/solrj/src/resources/apispec/emptySpec.json |   11 +
 .../src/resources/apispec/node.Commands.json    |   24 +
 solr/solrj/src/resources/apispec/node.Info.json |   11 +
 .../src/resources/apispec/node.invoke.json      |   16 +
 .../collection1/conf/schema-replication1.xml    |    4 +-
 .../solrj/solr/collection1/conf/schema-sql.xml  |   22 +-
 .../solrj/solr/collection1/conf/schema.xml      |   22 +-
 .../solr/collection1/conf/solrconfig-slave1.xml |   11 +-
 .../solr/collection1/conf/solrconfig-sql.xml    |    6 +-
 .../solrj/solr/collection1/conf/solrconfig.xml  |    6 +-
 .../solrj/solr/configsets/ml/conf/schema.xml    |   20 +-
 .../solr/configsets/ml/conf/solrconfig.xml      |    6 +-
 .../solr/configsets/shared/conf/schema.xml      |    2 +-
 .../solr/configsets/shared/conf/solrconfig.xml  |   10 +-
 .../solr/configsets/streaming/conf/schema.xml   |   20 +-
 .../configsets/streaming/conf/solrconfig.xml    |    8 +-
 .../solrj/solr/crazy-path-to-schema.xml         |    4 +-
 .../solrj/solr/multicore/core0/conf/schema.xml  |    2 +-
 .../solr/multicore/core0/conf/solrconfig.xml    |   10 +-
 .../solrj/solr/multicore/core1/conf/schema.xml  |    2 +-
 .../solr/multicore/core1/conf/solrconfig.xml    |   10 +-
 .../client/solrj/SolrSchemalessExampleTest.java |    2 +-
 .../solrj/cloud/autoscaling/TestPolicy.java     |  654 ++++
 .../embedded/SolrExampleStreamingTest.java      |   64 +-
 .../solrj/impl/BasicHttpSolrClientTest.java     |   16 -
 .../client/solrj/impl/CloudSolrClientTest.java  |    2 +-
 .../impl/ConcurrentUpdateSolrClientTest.java    |   36 +-
 .../client/solrj/impl/LBHttpSolrClientTest.java |    2 +-
 .../client/solrj/io/stream/JDBCStreamTest.java  |    2 +
 .../solrj/io/stream/StreamExpressionTest.java   |  107 +-
 .../io/stream/eval/ArrayEvaluatorTest.java      |  155 +
 .../io/stream/eval/LengthEvaluatorTest.java     |  119 +
 .../solr/client/solrj/request/SchemaTest.java   |   23 +-
 .../solrj/request/TestV1toV2ApiMapper.java      |   55 +
 .../solr/common/util/JsonValidatorTest.java     |  192 ++
 .../solr/common/util/TestJavaBinCodec.java      |   95 +-
 .../solr/common/util/TestNamedListCodec.java    |   57 +-
 .../apache/solr/common/util/TestPathTrie.java   |   61 +
 .../solr/BaseDistributedSearchTestCase.java     |   15 +-
 .../java/org/apache/solr/SolrTestCaseJ4.java    |  206 +-
 .../solr/cloud/AbstractDistribZkTestBase.java   |   18 +-
 .../cloud/AbstractFullDistribZkTestBase.java    |  179 +-
 .../apache/solr/cloud/AbstractZkTestCase.java   |    6 +-
 .../solr/cloud/StoppableCommitThread.java       |    2 +-
 .../org/apache/solr/util/ExternalPaths.java     |    6 +-
 .../org/apache/solr/util/SSLTestConfig.java     |   58 +-
 solr/webapp/web/js/angular/controllers/query.js |    2 +-
 .../web/js/angular/controllers/replication.js   |    6 +-
 1749 files changed, 79172 insertions(+), 47740 deletions(-)
----------------------------------------------------------------------



[43/53] [abbrv] lucene-solr:feature/autoscaling: Merge branch 'master' into upgrade-master-to-8

Posted by sh...@apache.org.
Merge branch 'master' into upgrade-master-to-8


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/e809e095
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/e809e095
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/e809e095

Branch: refs/heads/feature/autoscaling
Commit: e809e095f04309726cb282bbaac56fed2844a584
Parents: 189f2b3 20dcb56
Author: Adrien Grand <jp...@gmail.com>
Authored: Mon Jul 3 09:25:39 2017 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Mon Jul 3 09:25:39 2017 +0200

----------------------------------------------------------------------
 dev-tools/scripts/smokeTestRelease.py           | 12 ++--
 .../apache/lucene/index/DocumentsWriter.java    | 20 +++---
 .../lucene/index/DocumentsWriterFlushQueue.java |  4 ++
 .../lucene/index/FrozenBufferedUpdates.java     | 19 ++++--
 .../org/apache/lucene/index/IndexWriter.java    |  5 +-
 .../apache/lucene/index/ReadersAndUpdates.java  |  8 ++-
 .../lucene/index/TestIndexManyDocuments.java    | 71 ++++++++++++++++++++
 solr/CHANGES.txt                                |  1 +
 .../solr/common/cloud/ReplicaPosition.java      | 55 ---------------
 .../conf/bad-schema-dup-fieldType.xml           |  4 +-
 .../collection1/conf/schema-binaryfield.xml     | 36 ----------
 .../collection1/conf/schema-copyfield-test.xml  | 34 ++--------
 .../collection1/conf/schema-customfield.xml     | 29 +-------
 .../conf/schema-non-stored-docvalues.xml        | 47 ++-----------
 .../conf/schema-not-required-unique-key.xml     |  1 -
 .../collection1/conf/schema-replication1.xml    |  1 -
 .../collection1/conf/schema-replication2.xml    |  1 -
 .../collection1/conf/schema-required-fields.xml | 34 ++--------
 .../solr/collection1/conf/schema-reversed.xml   |  5 +-
 .../collection1/conf/schema-tokenizer-test.xml  | 21 +-----
 .../solr/collection1/conf/schema-version-dv.xml |  5 +-
 .../collection1/conf/schema-version-indexed.xml |  5 +-
 .../org/apache/solr/TestRandomDVFaceting.java   | 28 ++++++--
 .../apache/solr/core/DirectoryFactoryTest.java  | 15 +++--
 .../solr/common/cloud/ReplicaPosition.java      | 55 +++++++++++++++
 25 files changed, 232 insertions(+), 284 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e809e095/solr/CHANGES.txt
----------------------------------------------------------------------


[47/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10565 Use unique scope and domain names in this test to avoid collisions.

Posted by sh...@apache.org.
SOLR-10565 Use unique scope and domain names in this test to avoid collisions.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/5966f756
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/5966f756
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/5966f756

Branch: refs/heads/feature/autoscaling
Commit: 5966f7566390d00643024dd3344de79695f984e0
Parents: 706d201
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Mon Jul 3 14:21:12 2017 +0200
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Mon Jul 3 14:21:12 2017 +0200

----------------------------------------------------------------------
 .../metrics/reporters/SolrJmxReporterTest.java    | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5966f756/solr/core/src/test/org/apache/solr/metrics/reporters/SolrJmxReporterTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/reporters/SolrJmxReporterTest.java b/solr/core/src/test/org/apache/solr/metrics/reporters/SolrJmxReporterTest.java
index f9a32c0..11cdf37 100644
--- a/solr/core/src/test/org/apache/solr/metrics/reporters/SolrJmxReporterTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/reporters/SolrJmxReporterTest.java
@@ -49,6 +49,7 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
   private static final int MAX_ITERATIONS = 20;
 
   private static int jmxPort;
+  private static String PREFIX;
 
   private String domain;
 
@@ -64,6 +65,7 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
     jmxPort = getNextAvailablePort();
     assertFalse(jmxPort == -1);
     LocateRegistry.createRegistry(jmxPort);
+    PREFIX = getSimpleClassName() + "-";
   }
 
   @Before
@@ -72,7 +74,7 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
 
     final SolrCore core = h.getCore();
     domain = core.getName();
-    rootName = TestUtil.randomSimpleString(random(), 5, 10);
+    rootName = PREFIX + TestUtil.randomSimpleString(random(), 5, 10);
 
     coreMetricManager = core.getCoreMetricManager();
     metricManager = core.getCoreContainer().getMetricManager();
@@ -95,7 +97,7 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
   private PluginInfo createReporterPluginInfo(String rootName, boolean enabled) {
     Random random = random();
     String className = SolrJmxReporter.class.getName();
-    String reporterName = TestUtil.randomSimpleString(random, 5, 10);
+    String reporterName = PREFIX + TestUtil.randomSimpleString(random, 5, 10);
 
     Map<String, Object> attrs = new HashMap<>();
     attrs.put(FieldType.CLASS_NAME, className);
@@ -106,7 +108,7 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
 
     boolean shouldOverrideDomain = random.nextBoolean();
     if (shouldOverrideDomain) {
-      domain = TestUtil.randomSimpleString(random);
+      domain = PREFIX + TestUtil.randomSimpleString(random);
       attrs.put("domain", domain);
     }
 
@@ -129,7 +131,7 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
     Random random = random();
 
     Map<String, Counter> registered = new HashMap<>();
-    String scope = SolrMetricTestUtils.getRandomScope(random, true);
+    String scope = PREFIX + SolrMetricTestUtils.getRandomScope(random, true);
     SolrInfoBean.Category category = SolrMetricTestUtils.getRandomCategory(random, true);
 
     int iterations = TestUtil.nextInt(random, 0, MAX_ITERATIONS);
@@ -150,7 +152,7 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
   public void testReloadCore() throws Exception {
     Random random = random();
 
-    String scope = SolrMetricTestUtils.getRandomScope(random, true);
+    String scope = PREFIX + SolrMetricTestUtils.getRandomScope(random, true);
     SolrInfoBean.Category category = SolrMetricTestUtils.getRandomCategory(random, true);
     Map<String, Counter> metrics = SolrMetricTestUtils.getRandomMetrics(random, true);
     SolrMetricProducer producer = SolrMetricTestUtils.getProducerOf(metricManager, category, scope, metrics);
@@ -174,12 +176,12 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
 
   @Test
   public void testEnabled() throws Exception {
-    String root1 = TestUtil.randomSimpleString(random(), 5, 10);
+    String root1 = PREFIX + TestUtil.randomSimpleString(random(), 5, 10);
     PluginInfo pluginInfo1 = createReporterPluginInfo(root1, true);
     metricManager.loadReporter(coreMetricManager.getRegistryName(), coreMetricManager.getCore().getResourceLoader(),
         pluginInfo1, coreMetricManager.getTag());
 
-    String root2 = TestUtil.randomSimpleString(random(), 5, 10);
+    String root2 = PREFIX + TestUtil.randomSimpleString(random(), 5, 10);
     assertFalse(root2.equals(root1));
     PluginInfo pluginInfo2 = createReporterPluginInfo(root2, false);
     metricManager.loadReporter(coreMetricManager.getRegistryName(), coreMetricManager.getCore().getResourceLoader(),
@@ -189,7 +191,7 @@ public class SolrJmxReporterTest extends SolrTestCaseJ4 {
     assertTrue(reporters.containsKey(pluginInfo1.name + "@" + coreMetricManager.getTag()));
     assertTrue(reporters.containsKey(pluginInfo2.name + "@" + coreMetricManager.getTag()));
 
-    String scope = SolrMetricTestUtils.getRandomScope(random(), true);
+    String scope = PREFIX + SolrMetricTestUtils.getRandomScope(random(), true);
     SolrInfoBean.Category category = SolrMetricTestUtils.getRandomCategory(random(), true);
     Map<String, Counter> metrics = SolrMetricTestUtils.getRandomMetrics(random(), true);
     SolrMetricProducer producer = SolrMetricTestUtils.getProducerOf(metricManager, category, scope, metrics);


[24/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-1095: Refactor code to standardize replica assignment

Posted by sh...@apache.org.
SOLR-1095: Refactor code to standardize replica assignment


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/196d84b9
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/196d84b9
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/196d84b9

Branch: refs/heads/feature/autoscaling
Commit: 196d84b9e08730e9af225450217032cf70d52b5a
Parents: 0159d49
Author: Noble Paul <no...@apache.org>
Authored: Fri Jun 30 15:49:40 2017 +0930
Committer: Noble Paul <no...@apache.org>
Committed: Fri Jun 30 15:49:40 2017 +0930

----------------------------------------------------------------------
 .../src/java/org/apache/solr/cloud/Assign.java  | 131 ++++++++++++++++---
 .../apache/solr/cloud/CreateCollectionCmd.java  |  31 ++---
 .../java/org/apache/solr/cloud/RestoreCmd.java  |  30 +++--
 .../org/apache/solr/cloud/SplitShardCmd.java    |  13 +-
 .../apache/solr/cloud/rule/ReplicaAssigner.java |  68 ++++------
 .../solr/common/cloud/ReplicaPosition.java      |  55 ++++++++
 .../apache/solr/cloud/rule/RuleEngineTest.java  |   8 +-
 7 files changed, 234 insertions(+), 102 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/196d84b9/solr/core/src/java/org/apache/solr/cloud/Assign.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/Assign.java b/solr/core/src/java/org/apache/solr/cloud/Assign.java
index 9f21245..7c9752d 100644
--- a/solr/core/src/java/org/apache/solr/cloud/Assign.java
+++ b/solr/core/src/java/org/apache/solr/cloud/Assign.java
@@ -25,10 +25,14 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Random;
 import java.util.Set;
+import java.util.function.Supplier;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
+import com.google.common.collect.ImmutableMap;
 import org.apache.solr.client.solrj.cloud.autoscaling.Policy;
 import org.apache.solr.client.solrj.cloud.autoscaling.PolicyHelper;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
@@ -40,7 +44,9 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterState;
 import org.apache.solr.common.cloud.DocCollection;
 import org.apache.solr.common.cloud.Replica;
+import org.apache.solr.common.cloud.ReplicaPosition;
 import org.apache.solr.common.cloud.Slice;
+import org.apache.solr.common.cloud.ZkNodeProps;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
@@ -49,6 +55,11 @@ import org.apache.zookeeper.KeeperException;
 
 import static java.util.Collections.singletonMap;
 import static org.apache.solr.client.solrj.cloud.autoscaling.Policy.POLICY;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.CREATE_NODE_SET;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.CREATE_NODE_SET_EMPTY;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.CREATE_NODE_SET_SHUFFLE;
+import static org.apache.solr.cloud.OverseerCollectionMessageHandler.CREATE_NODE_SET_SHUFFLE_DEFAULT;
+import static org.apache.solr.common.cloud.DocCollection.SNITCH;
 import static org.apache.solr.common.cloud.ZkStateReader.CORE_NAME_PROP;
 import static org.apache.solr.common.cloud.ZkStateReader.MAX_SHARDS_PER_NODE;
 import static org.apache.solr.common.cloud.ZkStateReader.SOLR_AUTOSCALING_CONF_PATH;
@@ -119,7 +130,7 @@ public class Assign {
     returnShardId = shardIdNames.get(0);
     return returnShardId;
   }
-  
+
   public static String buildCoreName(String collectionName, String shard, Replica.Type type, int replicaNum) {
     // TODO: Adding the suffix is great for debugging, but may be an issue if at some point we want to support a way to change replica type
     return String.format(Locale.ROOT, "%s_%s_replica_%s%s", collectionName, shard, type.name().substring(0,1).toLowerCase(Locale.ROOT), replicaNum);
@@ -141,6 +152,91 @@ public class Assign {
       else return replicaName;
     }
   }
+  public static List<String> getLiveOrLiveAndCreateNodeSetList(final Set<String> liveNodes, final ZkNodeProps message, final Random random) {
+    // TODO: add smarter options that look at the current number of cores per
+    // node?
+    // for now we just go random (except when createNodeSet and createNodeSet.shuffle=false are passed in)
+
+    List<String> nodeList;
+
+    final String createNodeSetStr = message.getStr(CREATE_NODE_SET);
+    final List<String> createNodeList = (createNodeSetStr == null) ? null : StrUtils.splitSmart((CREATE_NODE_SET_EMPTY.equals(createNodeSetStr) ? "" : createNodeSetStr), ",", true);
+
+    if (createNodeList != null) {
+      nodeList = new ArrayList<>(createNodeList);
+      nodeList.retainAll(liveNodes);
+      if (message.getBool(CREATE_NODE_SET_SHUFFLE, CREATE_NODE_SET_SHUFFLE_DEFAULT)) {
+        Collections.shuffle(nodeList, random);
+      }
+    } else {
+      nodeList = new ArrayList<>(liveNodes);
+      Collections.shuffle(nodeList, random);
+    }
+
+    return nodeList;
+  }
+
+  public static List<ReplicaPosition> identifyNodes(Supplier<CoreContainer> coreContainer,
+                                                    ZkStateReader zkStateReader,
+                                                    ClusterState clusterState,
+                                                    List<String> nodeList,
+                                                    String collectionName,
+                                                    ZkNodeProps message,
+                                                    List<String> shardNames,
+                                                    int numNrtReplicas,
+                                                    int numTlogReplicas,
+                                                    int numPullReplicas) throws KeeperException, InterruptedException {
+    List<Map> rulesMap = (List) message.get("rule");
+    String policyName = message.getStr(POLICY);
+    Map autoScalingJson = Utils.getJson(zkStateReader.getZkClient(), SOLR_AUTOSCALING_CONF_PATH, true);
+
+    if (rulesMap == null && policyName == null) {
+      int i = 0;
+      List<ReplicaPosition> result = new ArrayList<>();
+      for (String aShard : shardNames) {
+
+        for (Map.Entry<Replica.Type, Integer> e : ImmutableMap.of(Replica.Type.NRT, numNrtReplicas,
+            Replica.Type.TLOG, numTlogReplicas,
+            Replica.Type.PULL, numPullReplicas
+        ).entrySet()) {
+          for (int j = 0; j < e.getValue(); j++){
+            result.add(new ReplicaPosition(aShard, j, e.getKey(), nodeList.get(i % nodeList.size())));
+            i++;
+          }
+        }
+
+      }
+      return result;
+    } else {
+      if (numTlogReplicas + numPullReplicas != 0) {
+        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+            Replica.Type.TLOG + " or " + Replica.Type.PULL + " replica types not supported with placement rules or cluster policies");
+      }
+    }
+
+    if (policyName != null || autoScalingJson.get(Policy.CLUSTER_POLICY) != null) {
+      return getPositionsUsingPolicy(collectionName,
+          shardNames, numNrtReplicas, policyName, zkStateReader, nodeList);
+    } else {
+      List<Rule> rules = new ArrayList<>();
+      for (Object map : rulesMap) rules.add(new Rule((Map) map));
+      Map<String, Integer> sharVsReplicaCount = new HashMap<>();
+
+      for (String shard : shardNames) sharVsReplicaCount.put(shard, numNrtReplicas);
+      ReplicaAssigner replicaAssigner = new ReplicaAssigner(rules,
+          sharVsReplicaCount,
+          (List<Map>) message.get(SNITCH),
+          new HashMap<>(),//this is a new collection. So, there are no nodes in any shard
+          nodeList,
+          coreContainer.get(),
+          clusterState);
+
+      Map<ReplicaPosition, String> nodeMappings = replicaAssigner.getNodeMappings();
+      return nodeMappings.entrySet().stream()
+          .map(e -> new ReplicaPosition(e.getKey().shard, e.getKey().index, e.getKey().type, e.getValue()))
+          .collect(Collectors.toList());
+    }
+  }
 
   static class ReplicaCount {
     public final String nodeName;
@@ -191,21 +287,21 @@ public class Assign {
     }
 
     List l = (List) coll.get(DocCollection.RULE);
-    Map<ReplicaAssigner.Position, String> positions = null;
+    List<ReplicaPosition> replicaPositions = null;
     if (l != null) {
-      positions = getNodesViaRules(clusterState, shard, numberOfNodes, cc, coll, createNodeList, l);
+      replicaPositions = getNodesViaRules(clusterState, shard, numberOfNodes, cc, coll, createNodeList, l);
     }
     String policyName = coll.getStr(POLICY);
     Map autoScalingJson = Utils.getJson(cc.getZkController().getZkClient(), SOLR_AUTOSCALING_CONF_PATH, true);
     if (policyName != null || autoScalingJson.get(Policy.CLUSTER_POLICY) != null) {
-      positions= Assign.getPositionsUsingPolicy(collectionName, Collections.singletonList(shard), numberOfNodes,
+      replicaPositions = Assign.getPositionsUsingPolicy(collectionName, Collections.singletonList(shard), numberOfNodes,
           policyName, cc.getZkController().getZkStateReader(), createNodeList);
     }
 
-    if(positions != null){
+    if(replicaPositions != null){
       List<ReplicaCount> repCounts = new ArrayList<>();
-      for (String s : positions.values()) {
-        repCounts.add(new ReplicaCount(s));
+      for (ReplicaPosition p : replicaPositions) {
+        repCounts.add(new ReplicaCount(p.node));
       }
       return repCounts;
     }
@@ -215,9 +311,10 @@ public class Assign {
     return sortedNodeList;
 
   }
-  public static Map<ReplicaAssigner.Position, String> getPositionsUsingPolicy(String collName, List<String> shardNames, int numReplicas,
-                                                                              String policyName, ZkStateReader zkStateReader,
-                                                                              List<String> nodesList) throws KeeperException, InterruptedException {
+
+  public static List<ReplicaPosition> getPositionsUsingPolicy(String collName, List<String> shardNames, int numReplicas,
+                                                              String policyName, ZkStateReader zkStateReader,
+                                                              List<String> nodesList) throws KeeperException, InterruptedException {
     try (CloudSolrClient csc = new CloudSolrClient.Builder()
         .withClusterStateProvider(new ZkClientClusterStateProvider(zkStateReader))
         .build()) {
@@ -226,11 +323,11 @@ public class Assign {
       Map<String, List<String>> locations = PolicyHelper.getReplicaLocations(collName,
           autoScalingJson,
           clientDataProvider, singletonMap(collName, policyName), shardNames, numReplicas, nodesList);
-      Map<ReplicaAssigner.Position, String> result = new HashMap<>();
+      List<ReplicaPosition> result = new ArrayList<>();
       for (Map.Entry<String, List<String>> e : locations.entrySet()) {
         List<String> value = e.getValue();
         for (int i = 0; i < value.size(); i++) {
-          result.put(new ReplicaAssigner.Position(e.getKey(), i, Replica.Type.NRT), value.get(i));
+          result.add(new ReplicaPosition(e.getKey(), i, Replica.Type.NRT, value.get(i)));
         }
       }
       return result;
@@ -239,8 +336,8 @@ public class Assign {
     }
   }
 
-  private static Map<ReplicaAssigner.Position, String> getNodesViaRules(ClusterState clusterState, String shard, int numberOfNodes,
-                                                                        CoreContainer cc, DocCollection coll, List<String> createNodeList, List l) {
+  private static List<ReplicaPosition> getNodesViaRules(ClusterState clusterState, String shard, int numberOfNodes,
+                                                        CoreContainer cc, DocCollection coll, List<String> createNodeList, List l) {
     ArrayList<Rule> rules = new ArrayList<>();
     for (Object o : l) rules.add(new Rule((Map) o));
     Map<String, Map<String, Integer>> shardVsNodes = new LinkedHashMap<>();
@@ -253,18 +350,18 @@ public class Assign {
         n.put(replica.getNodeName(), ++count);
       }
     }
-    List snitches = (List) coll.get(DocCollection.SNITCH);
+    List snitches = (List) coll.get(SNITCH);
     List<String> nodesList = createNodeList == null ?
         new ArrayList<>(clusterState.getLiveNodes()) :
         createNodeList;
-    Map<ReplicaAssigner.Position, String> positions = new ReplicaAssigner(
+    Map<ReplicaPosition, String> positions = new ReplicaAssigner(
         rules,
         Collections.singletonMap(shard, numberOfNodes),
         snitches,
         shardVsNodes,
         nodesList, cc, clusterState).getNodeMappings();
 
-    return positions;// getReplicaCounts(positions);
+    return positions.entrySet().stream().map(e -> e.getKey().setNode(e.getValue())).collect(Collectors.toList());// getReplicaCounts(positions);
   }
 
   private static HashMap<String, ReplicaCount> getNodeNameVsShardCount(String collectionName,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/196d84b9/solr/core/src/java/org/apache/solr/cloud/CreateCollectionCmd.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/CreateCollectionCmd.java b/solr/core/src/java/org/apache/solr/cloud/CreateCollectionCmd.java
index 0c87658..7d3df70 100644
--- a/solr/core/src/java/org/apache/solr/cloud/CreateCollectionCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/CreateCollectionCmd.java
@@ -31,7 +31,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.solr.cloud.OverseerCollectionMessageHandler.Cmd;
 import org.apache.solr.cloud.overseer.ClusterStateMutator;
-import org.apache.solr.cloud.rule.ReplicaAssigner;
+import org.apache.solr.common.cloud.ReplicaPosition;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.ClusterState;
@@ -131,12 +131,12 @@ public class CreateCollectionCmd implements Cmd {
       // add our new cores to existing nodes serving the least number of cores
       // but (for now) require that each core goes on a distinct node.
 
-      final List<String> nodeList = OverseerCollectionMessageHandler.getLiveOrLiveAndCreateNodeSetList(clusterState.getLiveNodes(), message, RANDOM);
-      Map<ReplicaAssigner.Position, String> positionVsNodes;
+      final List<String> nodeList = Assign.getLiveOrLiveAndCreateNodeSetList(clusterState.getLiveNodes(), message, RANDOM);
+      List<ReplicaPosition> replicaPositions;
       if (nodeList.isEmpty()) {
         log.warn("It is unusual to create a collection ("+collectionName+") without cores.");
 
-        positionVsNodes = new HashMap<>();
+        replicaPositions = new ArrayList<>();
       } else {
         int totalNumReplicas = numNrtReplicas + numTlogReplicas + numPullReplicas;
         if (totalNumReplicas > nodeList.size()) {
@@ -164,7 +164,9 @@ public class CreateCollectionCmd implements Cmd {
               + " shards to be created (higher than the allowed number)");
         }
 
-        positionVsNodes = ocmh.identifyNodes(clusterState, nodeList, collectionName, message, shardNames, numNrtReplicas, numTlogReplicas, numPullReplicas);
+        replicaPositions = Assign.identifyNodes(() -> ocmh.overseer.getZkController().getCoreContainer(),
+            ocmh.zkStateReader
+            , clusterState, nodeList, collectionName, message, shardNames, numNrtReplicas, numTlogReplicas, numPullReplicas);
       }
 
       ZkStateReader zkStateReader = ocmh.zkStateReader;
@@ -207,12 +209,11 @@ public class CreateCollectionCmd implements Cmd {
       log.debug(formatString("Creating SolrCores for new collection {0}, shardNames {1} , nrtReplicas : {2}, tlogReplicas: {3}, pullReplicas: {4}",
           collectionName, shardNames, numNrtReplicas, numTlogReplicas, numPullReplicas));
       Map<String,ShardRequest> coresToCreate = new LinkedHashMap<>();
-      for (Map.Entry<ReplicaAssigner.Position, String> e : positionVsNodes.entrySet()) {
-        ReplicaAssigner.Position position = e.getKey();
-        String nodeName = e.getValue();
-        String coreName = Assign.buildCoreName(collectionName, position.shard, position.type, position.index + 1);
+      for (ReplicaPosition replicaPosition : replicaPositions) {
+        String nodeName = replicaPosition.node;
+        String coreName = Assign.buildCoreName(collectionName, replicaPosition.shard, replicaPosition.type, replicaPosition.index + 1);
         log.debug(formatString("Creating core {0} as part of shard {1} of collection {2} on {3}"
-            , coreName, position.shard, collectionName, nodeName));
+            , coreName, replicaPosition.shard, collectionName, nodeName));
 
 
         String baseUrl = zkStateReader.getBaseUrlForNodeName(nodeName);
@@ -222,11 +223,11 @@ public class CreateCollectionCmd implements Cmd {
           ZkNodeProps props = new ZkNodeProps(
               Overseer.QUEUE_OPERATION, ADDREPLICA.toString(),
               ZkStateReader.COLLECTION_PROP, collectionName,
-              ZkStateReader.SHARD_ID_PROP, position.shard,
+              ZkStateReader.SHARD_ID_PROP, replicaPosition.shard,
               ZkStateReader.CORE_NAME_PROP, coreName,
               ZkStateReader.STATE_PROP, Replica.State.DOWN.toString(),
-              ZkStateReader.BASE_URL_PROP, baseUrl, 
-              ZkStateReader.REPLICA_TYPE, position.type.name());
+              ZkStateReader.BASE_URL_PROP, baseUrl,
+              ZkStateReader.REPLICA_TYPE, replicaPosition.type.name());
           Overseer.getStateUpdateQueue(zkStateReader.getZkClient()).offer(Utils.toJSON(props));
         }
 
@@ -237,10 +238,10 @@ public class CreateCollectionCmd implements Cmd {
         params.set(CoreAdminParams.NAME, coreName);
         params.set(COLL_CONF, configName);
         params.set(CoreAdminParams.COLLECTION, collectionName);
-        params.set(CoreAdminParams.SHARD, position.shard);
+        params.set(CoreAdminParams.SHARD, replicaPosition.shard);
         params.set(ZkStateReader.NUM_SHARDS_PROP, numSlices);
         params.set(CoreAdminParams.NEW_COLLECTION, "true");
-        params.set(CoreAdminParams.REPLICA_TYPE, position.type.name());
+        params.set(CoreAdminParams.REPLICA_TYPE, replicaPosition.type.name());
 
         if (async != null) {
           String coreAdminAsyncId = async + Math.abs(System.nanoTime());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/196d84b9/solr/core/src/java/org/apache/solr/cloud/RestoreCmd.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/RestoreCmd.java b/solr/core/src/java/org/apache/solr/cloud/RestoreCmd.java
index 6a18bff..fa493c7 100644
--- a/solr/core/src/java/org/apache/solr/cloud/RestoreCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/RestoreCmd.java
@@ -28,12 +28,13 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.Properties;
 import java.util.Set;
 
 import org.apache.solr.cloud.overseer.OverseerAction;
-import org.apache.solr.cloud.rule.ReplicaAssigner;
+import org.apache.solr.common.cloud.ReplicaPosition;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.ClusterState;
@@ -108,7 +109,7 @@ public class RestoreCmd implements OverseerCollectionMessageHandler.Cmd {
     DocCollection backupCollectionState = backupMgr.readCollectionState(location, backupName, backupCollection);
 
     // Get the Solr nodes to restore a collection.
-    final List<String> nodeList = OverseerCollectionMessageHandler.getLiveOrLiveAndCreateNodeSetList(
+    final List<String> nodeList = Assign.getLiveOrLiveAndCreateNodeSetList(
         zkStateReader.getClusterState().getLiveNodes(), message, RANDOM);
 
     int numShards = backupCollectionState.getActiveSlices().size();
@@ -213,8 +214,11 @@ public class RestoreCmd implements OverseerCollectionMessageHandler.Cmd {
     List<String> sliceNames = new ArrayList<>();
     restoreCollection.getSlices().forEach(x -> sliceNames.add(x.getName()));
 
-    Map<ReplicaAssigner.Position, String> positionVsNodes = ocmh.identifyNodes(clusterState, nodeList,
-        restoreCollectionName, message, sliceNames, numNrtReplicas, numTlogReplicas, numPullReplicas);
+    List<ReplicaPosition> replicaPositions = Assign.identifyNodes(() -> ocmh.overseer.getZkController().getCoreContainer(),
+        ocmh.zkStateReader, clusterState,
+        nodeList, restoreCollectionName,
+        message, sliceNames,
+        numNrtReplicas, numTlogReplicas, numPullReplicas);
 
     //Create one replica per shard and copy backed up data to it
     for (Slice slice : restoreCollection.getSlices()) {
@@ -235,12 +239,11 @@ public class RestoreCmd implements OverseerCollectionMessageHandler.Cmd {
 
       // Get the first node matching the shard to restore in
       String node;
-      for (Map.Entry<ReplicaAssigner.Position, String> pvn : positionVsNodes.entrySet()) {
-        ReplicaAssigner.Position position = pvn.getKey();
-        if (position.shard == slice.getName()) {
-          node = pvn.getValue();
+      for (ReplicaPosition replicaPosition : replicaPositions) {
+        if (Objects.equals(replicaPosition.shard, slice.getName())) {
+          node = replicaPosition.node;
           propMap.put(CoreAdminParams.NODE, node);
-          positionVsNodes.remove(position);
+          replicaPositions.remove(replicaPosition);
           break;
         }
       }
@@ -319,12 +322,11 @@ public class RestoreCmd implements OverseerCollectionMessageHandler.Cmd {
 
           // Get the first node matching the shard to restore in
           String node;
-          for (Map.Entry<ReplicaAssigner.Position, String> pvn : positionVsNodes.entrySet()) {
-            ReplicaAssigner.Position position = pvn.getKey();
-            if (position.shard == slice.getName()) {
-              node = pvn.getValue();
+          for (ReplicaPosition replicaPosition : replicaPositions) {
+            if (Objects.equals(replicaPosition.shard, slice.getName())) {
+              node = replicaPosition.node;
               propMap.put(CoreAdminParams.NODE, node);
-              positionVsNodes.remove(position);
+              replicaPositions.remove(replicaPosition);
               break;
             }
           }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/196d84b9/solr/core/src/java/org/apache/solr/cloud/SplitShardCmd.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/SplitShardCmd.java b/solr/core/src/java/org/apache/solr/cloud/SplitShardCmd.java
index 2e2e335..099190c 100644
--- a/solr/core/src/java/org/apache/solr/cloud/SplitShardCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/SplitShardCmd.java
@@ -30,7 +30,7 @@ import java.util.Set;
 import org.apache.solr.client.solrj.request.CoreAdminRequest;
 import org.apache.solr.cloud.OverseerCollectionMessageHandler.Cmd;
 import org.apache.solr.cloud.overseer.OverseerAction;
-import org.apache.solr.cloud.rule.ReplicaAssigner;
+import org.apache.solr.common.cloud.ReplicaPosition;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterState;
 import org.apache.solr.common.cloud.CompositeIdRouter;
@@ -381,7 +381,8 @@ public class SplitShardCmd implements Cmd {
 
       // TODO: change this to handle sharding a slice into > 2 sub-shards.
 
-      Map<ReplicaAssigner.Position, String> nodeMap = ocmh.identifyNodes(clusterState,
+      List<ReplicaPosition> replicaPositions = Assign.identifyNodes(() -> ocmh.overseer.getZkController().getCoreContainer(),
+          ocmh.zkStateReader, clusterState,
           new ArrayList<>(clusterState.getLiveNodes()),
           collectionName,
           new ZkNodeProps(collection.getProperties()),
@@ -389,10 +390,10 @@ public class SplitShardCmd implements Cmd {
 
       List<Map<String, Object>> replicas = new ArrayList<>((repFactor - 1) * 2);
 
-      for (Map.Entry<ReplicaAssigner.Position, String> entry : nodeMap.entrySet()) {
-        String sliceName = entry.getKey().shard;
-        String subShardNodeName = entry.getValue();
-        String shardName = collectionName + "_" + sliceName + "_replica" + (entry.getKey().index);
+      for (ReplicaPosition replicaPosition : replicaPositions) {
+        String sliceName = replicaPosition.shard;
+        String subShardNodeName = replicaPosition.node;
+        String shardName = collectionName + "_" + sliceName + "_replica" + (replicaPosition.index);
 
         log.info("Creating replica shard " + shardName + " as part of slice " + sliceName + " of collection "
             + collectionName + " on " + subShardNodeName);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/196d84b9/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java b/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
index 669e82b..8887e53 100644
--- a/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
+++ b/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
@@ -33,6 +33,7 @@ import java.util.concurrent.atomic.AtomicReference;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterState;
 import org.apache.solr.common.cloud.DocCollection;
+import org.apache.solr.common.cloud.ReplicaPosition;
 import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.rule.ImplicitSnitch;
@@ -59,31 +60,6 @@ public class ReplicaAssigner {
   private Map<String, AtomicInteger> nodeVsCores = new HashMap<>();
 
 
-  public static class Position implements Comparable<Position> {
-    public final String shard;
-    public final int index;
-    public final Replica.Type type;
-
-    public Position(String shard, int replicaIdx, Replica.Type type) {
-      this.shard = shard;
-      this.index = replicaIdx;
-      this.type = type;
-    }
-
-    @Override
-    public int compareTo(Position that) {
-      //this is to ensure that we try one replica from each shard first instead of
-      // all replicas from same shard
-      return that.index > index ? -1 : that.index == index ? 0 : 1;
-    }
-
-    @Override
-    public String toString() {
-      return shard + ":" + index;
-    }
-  }
-
-
   /**
    * @param shardVsReplicaCount shard names vs no:of replicas required for each of those shards
    * @param snitches            snitches details
@@ -128,8 +104,8 @@ public class ReplicaAssigner {
    * For each shard return a new set of nodes where the replicas need to be created satisfying
    * the specified rule
    */
-  public Map<Position, String> getNodeMappings() {
-    Map<Position, String> result = getNodeMappings0();
+  public Map<ReplicaPosition, String> getNodeMappings() {
+    Map<ReplicaPosition, String> result = getNodeMappings0();
     if (result == null) {
       String msg = "Could not identify nodes matching the rules " + rules;
       if (!failedNodes.isEmpty()) {
@@ -149,7 +125,7 @@ public class ReplicaAssigner {
 
   }
 
-  Map<Position, String> getNodeMappings0() {
+  Map<ReplicaPosition, String> getNodeMappings0() {
     List<String> shardNames = new ArrayList<>(shardVsReplicaCount.keySet());
     int[] shardOrder = new int[shardNames.size()];
     for (int i = 0; i < shardNames.size(); i++) shardOrder[i] = i;
@@ -168,17 +144,17 @@ public class ReplicaAssigner {
       }
     }
 
-    Map<Position, String> result = tryAllPermutations(shardNames, shardOrder, nonWildCardShardRules, false);
+    Map<ReplicaPosition, String> result = tryAllPermutations(shardNames, shardOrder, nonWildCardShardRules, false);
     if (result == null && hasFuzzyRules) {
       result = tryAllPermutations(shardNames, shardOrder, nonWildCardShardRules, true);
     }
     return result;
   }
 
-  private Map<Position, String> tryAllPermutations(List<String> shardNames,
-                                                   int[] shardOrder,
-                                                   int nonWildCardShardRules,
-                                                   boolean fuzzyPhase) {
+  private Map<ReplicaPosition, String> tryAllPermutations(List<String> shardNames,
+                                                          int[] shardOrder,
+                                                          int nonWildCardShardRules,
+                                                          boolean fuzzyPhase) {
 
 
     Iterator<int[]> shardPermutations = nonWildCardShardRules > 0 ?
@@ -187,16 +163,16 @@ public class ReplicaAssigner {
 
     for (; shardPermutations.hasNext(); ) {
       int[] p = shardPermutations.next();
-      List<Position> positions = new ArrayList<>();
+      List<ReplicaPosition> replicaPositions = new ArrayList<>();
       for (int pos : p) {
         for (int j = 0; j < shardVsReplicaCount.get(shardNames.get(pos)); j++) {
-          positions.add(new Position(shardNames.get(pos), j, Replica.Type.NRT));
+          replicaPositions.add(new ReplicaPosition(shardNames.get(pos), j, Replica.Type.NRT));
         }
       }
-      Collections.sort(positions);
+      Collections.sort(replicaPositions);
       for (Iterator<int[]> it = permutations(rules.size()); it.hasNext(); ) {
         int[] permutation = it.next();
-        Map<Position, String> result = tryAPermutationOfRules(permutation, positions, fuzzyPhase);
+        Map<ReplicaPosition, String> result = tryAPermutationOfRules(permutation, replicaPositions, fuzzyPhase);
         if (result != null) return result;
       }
     }
@@ -205,9 +181,9 @@ public class ReplicaAssigner {
   }
 
 
-  private Map<Position, String> tryAPermutationOfRules(int[] rulePermutation, List<Position> positions, boolean fuzzyPhase) {
+  private Map<ReplicaPosition, String> tryAPermutationOfRules(int[] rulePermutation, List<ReplicaPosition> replicaPositions, boolean fuzzyPhase) {
     Map<String, Map<String, Object>> nodeVsTagsCopy = getDeepCopy(nodeVsTags, 2);
-    Map<Position, String> result = new LinkedHashMap<>();
+    Map<ReplicaPosition, String> result = new LinkedHashMap<>();
     int startPosition = 0;
     Map<String, Map<String, Integer>> copyOfCurrentState = getDeepCopy(shardVsNodes, 2);
     List<String> sortedLiveNodes = new ArrayList<>(this.participatingLiveNodes);
@@ -232,7 +208,7 @@ public class ReplicaAssigner {
       return result1;
     });
     forEachPosition:
-    for (Position position : positions) {
+    for (ReplicaPosition replicaPosition : replicaPositions) {
       //trying to assign a node by verifying each rule in this rulePermutation
       forEachNode:
       for (int j = 0; j < sortedLiveNodes.size(); j++) {
@@ -242,16 +218,16 @@ public class ReplicaAssigner {
           Rule rule = rules.get(rulePermutation[i]);
           //trying to assign a replica into this node in this shard
           Rule.MatchStatus status = rule.tryAssignNodeToShard(liveNode,
-              copyOfCurrentState, nodeVsTagsCopy, position.shard, fuzzyPhase ? FUZZY_ASSIGN : ASSIGN);
+              copyOfCurrentState, nodeVsTagsCopy, replicaPosition.shard, fuzzyPhase ? FUZZY_ASSIGN : ASSIGN);
           if (status == Rule.MatchStatus.CANNOT_ASSIGN_FAIL) {
             continue forEachNode;//try another node for this position
           }
         }
         //We have reached this far means this node can be applied to this position
         //and all rules are fine. So let us change the currentState
-        result.put(position, liveNode);
-        Map<String, Integer> nodeNames = copyOfCurrentState.get(position.shard);
-        if (nodeNames == null) copyOfCurrentState.put(position.shard, nodeNames = new HashMap<>());
+        result.put(replicaPosition, liveNode);
+        Map<String, Integer> nodeNames = copyOfCurrentState.get(replicaPosition.shard);
+        if (nodeNames == null) copyOfCurrentState.put(replicaPosition.shard, nodeNames = new HashMap<>());
         Integer n = nodeNames.get(liveNode);
         n = n == null ? 1 : n + 1;
         nodeNames.put(liveNode, n);
@@ -267,11 +243,11 @@ public class ReplicaAssigner {
       return null;
     }
 
-    if (positions.size() > result.size()) {
+    if (replicaPositions.size() > result.size()) {
       return null;
     }
 
-    for (Map.Entry<Position, String> e : result.entrySet()) {
+    for (Map.Entry<ReplicaPosition, String> e : result.entrySet()) {
       for (int i = 0; i < rulePermutation.length; i++) {
         Rule rule = rules.get(rulePermutation[i]);
         Rule.MatchStatus matchStatus = rule.tryAssignNodeToShard(e.getValue(),

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/196d84b9/solr/core/src/java/org/apache/solr/common/cloud/ReplicaPosition.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/common/cloud/ReplicaPosition.java b/solr/core/src/java/org/apache/solr/common/cloud/ReplicaPosition.java
new file mode 100644
index 0000000..d64d1d1
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/common/cloud/ReplicaPosition.java
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+
+package org.apache.solr.common.cloud;
+
+
+public class ReplicaPosition implements Comparable<ReplicaPosition> {
+  public final String shard;
+  public final int index;
+  public final Replica.Type type;
+  public String node;
+
+  public ReplicaPosition(String shard, int replicaIdx, Replica.Type type) {
+    this.shard = shard;
+    this.index = replicaIdx;
+    this.type = type;
+  }
+  public ReplicaPosition(String shard, int replicaIdx, Replica.Type type, String node) {
+    this.shard = shard;
+    this.index = replicaIdx;
+    this.type = type;
+    this.node = node;
+  }
+
+  @Override
+  public int compareTo(ReplicaPosition that) {
+    //this is to ensure that we try one replica from each shard first instead of
+    // all replicas from same shard
+    return that.index > index ? -1 : that.index == index ? 0 : 1;
+  }
+
+  @Override
+  public String toString() {
+    return shard + ":" + index;
+  }
+
+  public ReplicaPosition setNode(String node) {
+    this.node = node;
+    return this;
+  }
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/196d84b9/solr/core/src/test/org/apache/solr/cloud/rule/RuleEngineTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/rule/RuleEngineTest.java b/solr/core/src/test/org/apache/solr/cloud/rule/RuleEngineTest.java
index 8b0a788..6d460ed 100644
--- a/solr/core/src/test/org/apache/solr/cloud/rule/RuleEngineTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/rule/RuleEngineTest.java
@@ -28,7 +28,7 @@ import java.util.Set;
 
 import com.google.common.collect.ImmutableList;
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.cloud.rule.ReplicaAssigner.Position;
+import org.apache.solr.common.cloud.ReplicaPosition;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.cloud.rule.Snitch;
 import org.apache.solr.common.cloud.rule.SnitchContext;
@@ -73,7 +73,7 @@ public class RuleEngineTest extends SolrTestCaseJ4{
             "'replica':'1',shard:'*','node':'*'}," +
             " {'freedisk':'>1'}]");
 
-    Map<Position, String> mapping = new ReplicaAssigner(
+    Map<ReplicaPosition, String> mapping = new ReplicaAssigner(
         rules,
         shardVsReplicaCount, singletonList(MockSnitch.class.getName()),
         new HashMap(), new ArrayList<>(MockSnitch.nodeVsTags.keySet()), null, null ).getNodeMappings();
@@ -147,7 +147,7 @@ public class RuleEngineTest extends SolrTestCaseJ4{
             "{node:'!127.0.0.1:49947_'}," +
             "{freedisk:'>1'}]");
     Map shardVsReplicaCount = makeMap("shard1", 2, "shard2", 2);
-    Map<Position, String> mapping = new ReplicaAssigner(
+    Map<ReplicaPosition, String> mapping = new ReplicaAssigner(
         rules,
         shardVsReplicaCount, singletonList(MockSnitch.class.getName()),
         new HashMap(), new ArrayList<>(MockSnitch.nodeVsTags.keySet()), null, null).getNodeMappings();
@@ -236,7 +236,7 @@ public class RuleEngineTest extends SolrTestCaseJ4{
         "node5:80", makeMap("rack", "182")
     );
     MockSnitch.nodeVsTags = nodeVsTags;
-    Map<Position, String> mapping = new ReplicaAssigner(
+    Map<ReplicaPosition, String> mapping = new ReplicaAssigner(
         rules,
         shardVsReplicaCount, singletonList(MockSnitch.class.getName()),
         new HashMap(), new ArrayList<>(MockSnitch.nodeVsTags.keySet()), null, null).getNodeMappings0();


[05/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10970: Randomize PointFields in all tests using schema-*sort* files

Posted by sh...@apache.org.
SOLR-10970: Randomize PointFields in all tests using schema-*sort* files


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/89abc989
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/89abc989
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/89abc989

Branch: refs/heads/feature/autoscaling
Commit: 89abc989075f3b213ffd84139b0798ced02a32cc
Parents: 82a44be
Author: Chris Hostetter <ho...@apache.org>
Authored: Wed Jun 28 14:52:40 2017 -0700
Committer: Chris Hostetter <ho...@apache.org>
Committed: Wed Jun 28 14:52:40 2017 -0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  1 +
 .../conf/schema-distributed-missing-sort.xml    | 28 ++++++++++----------
 .../conf/schema-field-sort-values.xml           |  4 +--
 .../collection1/conf/schema-sortingresponse.xml | 22 +++++++--------
 4 files changed, 28 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89abc989/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index be23b3a..bbda1a3 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -357,6 +357,7 @@ Other Changes
 * SOLR-10807: Randomize Points based numeric field types in (more) test schemas
   - SOLR-10946: Randomize the usage of Points based numerics in solrj test schemas (hossman)
   - SOLR-10947: Randomize the usage of Points based numerics in contrib test schemas (hossman)
+  - SOLR-10970: Randomize PointFields in all tests using schema-*sort* files (hossman)
 
 * SOLR-6807: Changed requestDispatcher's handleSelect to default to false, thus ignoring "qt".
   Simplified configs to not refer to handleSelect or "qt".  Switch all tests that assumed true to assume false

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89abc989/solr/core/src/test-files/solr/collection1/conf/schema-distributed-missing-sort.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-distributed-missing-sort.xml b/solr/core/src/test-files/solr/collection1/conf/schema-distributed-missing-sort.xml
index 13daf46..2187449 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-distributed-missing-sort.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-distributed-missing-sort.xml
@@ -17,29 +17,29 @@
 -->
 
 <schema name="test-distributed-missing-sort" version="1.6">
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="tint" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
 
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="tlong" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
 
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="float" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="tfloat" class="${solr.tests.FloatFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
 
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="double" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="tdouble" class="${solr.tests.DoubleFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
 
-  <fieldType name="date" class="solr.TrieDateField" precisionStep="0"/>
-  <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6"/>
+  <fieldType name="date" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0"/>
+  <fieldType name="tdate" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="6"/>
 
   <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
 
-  <fieldType name="int_ml" class="solr.TrieIntField" precisionStep="0" sortMissingLast="true"/>
-  <fieldType name="int_mf" class="solr.TrieIntField" precisionStep="0" sortMissingFirst="true"/>
+  <fieldType name="int_ml" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" sortMissingLast="true"/>
+  <fieldType name="int_mf" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" sortMissingFirst="true"/>
 
-  <fieldType name="long_ml" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"
+  <fieldType name="long_ml" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"
              sortMissingLast="true"/>
-  <fieldType name="long_mf" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"
+  <fieldType name="long_mf" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"
              sortMissingFirst="true"/>
 
   <fieldType name="string_ml" class="solr.StrField" sortMissingLast="true"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89abc989/solr/core/src/test-files/solr/collection1/conf/schema-field-sort-values.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-field-sort-values.xml b/solr/core/src/test-files/solr/collection1/conf/schema-field-sort-values.xml
index 94485f6..3a9cd3b 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-field-sort-values.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-field-sort-values.xml
@@ -17,8 +17,8 @@
 -->
 
 <schema name="test-custom-comparator" version="1.6">
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
   <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
   <fieldType name="text" class="solr.TextField">
     <analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89abc989/solr/core/src/test-files/solr/collection1/conf/schema-sortingresponse.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-sortingresponse.xml b/solr/core/src/test-files/solr/collection1/conf/schema-sortingresponse.xml
index 680a5d3..c45f178 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-sortingresponse.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-sortingresponse.xml
@@ -25,7 +25,7 @@
   <!-- format for date is 1995-12-31T23:59:59.999Z and only the fractional
        seconds part (.999) is optional.
     -->
-  <fieldType name="date" class="${solr.tests.DateFieldType}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="date" class="${solr.tests.DateFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
   
   <!-- Point Fields -->
   <fieldType name="pint" class="solr.IntPointField" docValues="true"/>
@@ -41,18 +41,18 @@
   <fieldType name="uuid" class="solr.UUIDField"/>
 
   <field name="id" type="string" required="true" indexed="true"/>
-  <field name="floatdv_m" type="${solr.tests.floatClass:pfloat}" indexed="false" stored="false" docValues="true" multiValued="true"/>
-  <field name="intdv_m" type="${solr.tests.intClass:pint}" indexed="false" stored="false" docValues="true" multiValued="true"/>
-  <field name="doubledv_m" type="${solr.tests.doubleClass:pdouble}" indexed="false" stored="false" docValues="true" multiValued="true"/>
-  <field name="longdv_m" type="${solr.tests.longClass:plong}" indexed="false" stored="false" docValues="true" multiValued="true"/>
-  <field name="datedv_m" type="${solr.tests.dateClass:pdate}" indexed="false" stored="false" docValues="true" multiValued="true"/>
+  <field name="floatdv_m" type="float" indexed="false" stored="false" docValues="true" multiValued="true"/>
+  <field name="intdv_m" type="int" indexed="false" stored="false" docValues="true" multiValued="true"/>
+  <field name="doubledv_m" type="double" indexed="false" stored="false" docValues="true" multiValued="true"/>
+  <field name="longdv_m" type="long" indexed="false" stored="false" docValues="true" multiValued="true"/>
+  <field name="datedv_m" type="date" indexed="false" stored="false" docValues="true" multiValued="true"/>
   <field name="stringdv_m" type="string" indexed="false" stored="false" docValues="true" multiValued="true"/>
 
-  <field name="floatdv" type="${solr.tests.floatClass:pfloat}" indexed="false" stored="false" docValues="true"/>
-  <field name="intdv" type="${solr.tests.intClass:pint}" indexed="false" stored="false" docValues="true"/>
-  <field name="doubledv" type="${solr.tests.doubleClass:pdouble}" indexed="false" stored="false" docValues="true"/>
-  <field name="longdv" type="${solr.tests.longClass:plong}" indexed="false" stored="false" docValues="true"/>
-  <field name="datedv" type="${solr.tests.dateClass:pdate}" indexed="false" stored="false" docValues="true"/>
+  <field name="floatdv" type="float" indexed="false" stored="false" docValues="true"/>
+  <field name="intdv" type="int" indexed="false" stored="false" docValues="true"/>
+  <field name="doubledv" type="double" indexed="false" stored="false" docValues="true"/>
+  <field name="longdv" type="long" indexed="false" stored="false" docValues="true"/>
+  <field name="datedv" type="date" indexed="false" stored="false" docValues="true"/>
   <field name="stringdv" type="string" indexed="false" stored="false" docValues="true"/>
 
    <!-- Point fields explicitly -->


[02/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-6807: requestDispatcher/@handleSelect now defaults to false; stop using it. Deprecated StandardRequestHandler; stop using it.

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java b/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java
index bf7925a..35bd107 100644
--- a/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java
+++ b/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java
@@ -134,7 +134,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
             );
     args = new HashMap<>();
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "standard", 2, 5 , args);
+                                    "/select", 2, 5 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=1] "
@@ -143,28 +143,28 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
             );
     args = new HashMap<>();
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "standard", 3, 5 , args);
+                                    "/select", 3, 5 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=0]"
             );
     args = new HashMap<>();
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "standard", 4, 5 , args);
+                                    "/select", 4, 5 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=0]"
             );
     args = new HashMap<>();
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "standard", 25, 5 , args);
+                                    "/select", 25, 5 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=0]"
             );
     args = new HashMap<>();
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "standard", 0, 1 , args);
+                                    "/select", 0, 1 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=1] "
@@ -172,7 +172,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
             );
     args = new HashMap<>();
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "standard", 0, 2 , args);
+                                    "/select", 0, 2 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=2] "
@@ -180,7 +180,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
             );
     args = new HashMap<>();
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "standard", 1, 1 , args);
+                                    "/select", 1, 1 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=1] "
@@ -188,28 +188,28 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
             );
     args = new HashMap<>();
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "standard", 3, 1 , args);
+                                    "/select", 3, 1 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=0]"
             );
     args = new HashMap<>();
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "standard", 4, 1 , args);
+                                    "/select", 4, 1 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=0]"
             );
     args = new HashMap<>();
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "standard", 1, 0 , args);
+                                    "/select", 1, 0 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=0]"
             );
     args = new HashMap<>();
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "standard", 0, 0 , args);
+                                    "/select", 0, 0 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=0]"
@@ -217,7 +217,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args = new HashMap<>();
     args.put("defType","lucenePlusSort");
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z];val_s1 asc",
-                                    "standard", 0, 0 , args);
+                                    "/select", 0, 0 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=0]"
@@ -225,7 +225,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args = new HashMap<>();
     args.put("defType","lucenePlusSort");
     req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z];val_s1 desc",
-                                    "standard", 0, 0 , args);
+                                    "/select", 0, 0 , args);
     assertQ(req
             ,"//*[@numFound='3'] "
             ,"*[count(//doc)=0]"
@@ -1109,7 +1109,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args = new HashMap<>();
     args.put("fl","fname_s,arr_f  ");
     req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "standard", 0, 10, args);
+                                    "/select", 0, 10, args);
     assertQ(req
             ,"//str[.='Yonik']  "
             ,"//float[.='1.4142135']"
@@ -1117,7 +1117,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args = new HashMap<>();
     args.put("fl","fname_s,score");
     req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "standard", 0, 10, args);
+                                    "/select", 0, 10, args);
     assertQ(req
             ,"//str[.='Yonik']"
             ,"//float[@name='score' and . > 0]"
@@ -1128,7 +1128,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args = new HashMap<>();
     args.put("fl","score,* ");
     req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "standard", 0, 10, args);
+                                    "/select", 0, 10, args);
     assertQ(req
             ,"//str[.='Yonik']  "
             ,"//float[.='1.4142135'] "
@@ -1138,7 +1138,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args = new HashMap<>();
     args.put("fl","*,score ");
     req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "standard", 0, 10, args);
+                                    "/select", 0, 10, args);
     assertQ(req
             ,"//str[.='Yonik']  "
             ,"//float[.='1.4142135'] "
@@ -1148,7 +1148,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args = new HashMap<>();
     args.put("fl","* ");
     req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "standard", 0, 10, args);
+                                    "/select", 0, 10, args);
     assertQ(req
             ,"//str[.='Yonik']  "
             ,"//float[.='1.4142135'] "
@@ -1160,7 +1160,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args = new HashMap<>();
     args.put("fl","score ");
     req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "standard", 0, 10, args);
+                                    "/select", 0, 10, args);
     assertQ(req
             ,"//result[@maxScore>0]"
             );
@@ -1168,7 +1168,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args.put("fl","score ");
     args.put("defType","lucenePlusSort");
     req = new LocalSolrQueryRequest(h.getCore(), "id:44;id desc;",
-                                    "standard", 0, 10, args);
+                                    "/select", 0, 10, args);
     assertQ(req
             ,"//result[@maxScore>0]"
             );
@@ -1176,7 +1176,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args.put("fl","score ");
     args.put("defType","lucenePlusSort");
     req = new LocalSolrQueryRequest(h.getCore(), "id:44;",
-                                    "standard", 0, 10, args);
+                                    "/select", 0, 10, args);
     assertQ(req
             ,"//@maxScore = //doc/float[@name='score']"
             );
@@ -1184,7 +1184,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args.put("fl","score ");
     args.put("defType","lucenePlusSort");
     req = new LocalSolrQueryRequest(h.getCore(), "id:44;id desc;",
-                                    "standard", 0, 10, args);
+                                    "/select", 0, 10, args);
     assertQ(req
             ,"//@maxScore = //doc/float[@name='score']"
             );
@@ -1192,7 +1192,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     args.put("fl","*,score");
     args.put("defType","lucenePlusSort");
     req = new LocalSolrQueryRequest(h.getCore(), "id:44;id desc;",
-                                    "standard", 0, 0 , args);
+                                    "/select", 0, 0 , args);
     assertQ(req
             ,"//result[@maxScore>0]"
             );

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/DisMaxRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/DisMaxRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/DisMaxRequestHandlerTest.java
index bdeeb40..386f690 100644
--- a/solr/core/src/test/org/apache/solr/DisMaxRequestHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/DisMaxRequestHandlerTest.java
@@ -30,7 +30,7 @@ public class DisMaxRequestHandlerTest extends SolrTestCaseJ4 {
   public static void beforeClass() throws Exception {
     initCore("solrconfig.xml","schema.xml");
     lrf = h.getRequestFactory
-      ("dismax", 0, 20,
+      ("/dismax", 0, 20,
        CommonParams.VERSION,"2.2",
        "facet", "true",
        "facet.field","t_s"
@@ -69,7 +69,7 @@ public class DisMaxRequestHandlerTest extends SolrTestCaseJ4 {
 
   @Test
   public void testSomeStuff() throws Exception {
-    doTestSomeStuff("dismax");
+    doTestSomeStuff("/dismax");
   }
   public void doTestSomeStuff(final String qt) throws Exception {
 
@@ -179,7 +179,7 @@ public class DisMaxRequestHandlerTest extends SolrTestCaseJ4 {
     Pattern p = Pattern.compile("subject:hell\\s*subject:cool");
     Pattern p_bool = Pattern.compile("\\(subject:hell\\s*subject:cool\\)");
     String resp = h.query(req("q", "cool stuff"
-                ,"qt", "dismax"
+                ,"qt", "/dismax"
                 ,CommonParams.VERSION, "2.2"
                 ,"bq", "subject:hell OR subject:cool"
                 ,CommonParams.DEBUG_QUERY, "true"
@@ -188,7 +188,7 @@ public class DisMaxRequestHandlerTest extends SolrTestCaseJ4 {
     assertFalse(p_bool.matcher(resp).find());
 
     resp = h.query(req("q", "cool stuff"
-                ,"qt", "dismax"
+                ,"qt", "/dismax"
                 ,CommonParams.VERSION, "2.2"
                 ,"bq", "subject:hell OR subject:cool"
                 ,"bq",""

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/EchoParamsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/EchoParamsTest.java b/solr/core/src/test/org/apache/solr/EchoParamsTest.java
index a89a512..44699e8 100644
--- a/solr/core/src/test/org/apache/solr/EchoParamsTest.java
+++ b/solr/core/src/test/org/apache/solr/EchoParamsTest.java
@@ -66,7 +66,7 @@ public class EchoParamsTest extends SolrTestCaseJ4 {
 
   private void allEchoParams() {
     lrf = h.getRequestFactory
-      ("crazy_custom_qt", 0, 20,
+      ("/crazy_custom_qt", 0, 20,
        CommonParams.VERSION,"2.2",
        "wt","xml",
        "echoParams", "all",
@@ -74,7 +74,7 @@ public class EchoParamsTest extends SolrTestCaseJ4 {
        );
 
     assertQ(req("foo"),HEADER_XPATH + "/lst[@name='params']/str[@name='fl'][.='implicit']");
-    assertQ(req("foo"),HEADER_XPATH + "/str[@name='handler'][.='org.apache.solr.handler.StandardRequestHandler']");
+    assertQ(req("foo"),HEADER_XPATH + "/str[@name='handler'][.='org.apache.solr.handler.component.SearchHandler']");
   }
 
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/SampleTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/SampleTest.java b/solr/core/src/test/org/apache/solr/SampleTest.java
index 244272f..407a483 100644
--- a/solr/core/src/test/org/apache/solr/SampleTest.java
+++ b/solr/core/src/test/org/apache/solr/SampleTest.java
@@ -102,7 +102,7 @@ public class SampleTest extends SolrTestCaseJ4 {
      * Note: the qt proves we are using our custom config...
      */
     TestHarness.LocalRequestFactory l = h.getRequestFactory
-      ("crazy_custom_qt",100,200,CommonParams.VERSION,"2.2");
+      ("/crazy_custom_qt",100,200,CommonParams.VERSION,"2.2");
     assertQ("how did i find Mack Daddy? ",
             l.makeRequest( "Mack Daddy" )
             ,"//result[@numFound=0]"

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/SolrInfoBeanTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/SolrInfoBeanTest.java b/solr/core/src/test/org/apache/solr/SolrInfoBeanTest.java
index d39c87f..72fdf25 100644
--- a/solr/core/src/test/org/apache/solr/SolrInfoBeanTest.java
+++ b/solr/core/src/test/org/apache/solr/SolrInfoBeanTest.java
@@ -18,9 +18,9 @@ package org.apache.solr;
 
 import org.apache.lucene.util.TestUtil;
 import org.apache.solr.core.SolrInfoBean;
-import org.apache.solr.handler.StandardRequestHandler;
 import org.apache.solr.handler.admin.LukeRequestHandler;
 import org.apache.solr.handler.component.SearchComponent;
+import org.apache.solr.handler.component.SearchHandler;
 import org.apache.solr.highlight.DefaultSolrHighlighter;
 import org.apache.solr.metrics.SolrMetricManager;
 import org.apache.solr.metrics.SolrMetricProducer;
@@ -49,7 +49,7 @@ public class SolrInfoBeanTest extends SolrTestCaseJ4
    */
   public void testCallMBeanInfo() throws Exception {
     List<Class> classes = new ArrayList<>();
-    classes.addAll(getClassesForPackage(StandardRequestHandler.class.getPackage().getName()));
+    classes.addAll(getClassesForPackage(SearchHandler.class.getPackage().getName()));
     classes.addAll(getClassesForPackage(SearchComponent.class.getPackage().getName()));
     classes.addAll(getClassesForPackage(LukeRequestHandler.class.getPackage().getName()));
     classes.addAll(getClassesForPackage(DefaultSolrHighlighter.class.getPackage().getName()));

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/TestDistributedSearch.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/TestDistributedSearch.java b/solr/core/src/test/org/apache/solr/TestDistributedSearch.java
index 9a821aa..02754f0 100644
--- a/solr/core/src/test/org/apache/solr/TestDistributedSearch.java
+++ b/solr/core/src/test/org/apache/solr/TestDistributedSearch.java
@@ -386,7 +386,7 @@ public class TestDistributedSearch extends BaseDistributedSearchTestCase {
     query("q","*:*", "fl","n_*","sort",i1 + " desc");
 
     // basic spellcheck testing
-    query("q", "toyata", "fl", "id,lowerfilt", "spellcheck", true, "spellcheck.q", "toyata", "qt", "spellCheckCompRH_Direct", "shards.qt", "spellCheckCompRH_Direct");
+    query("q", "toyata", "fl", "id,lowerfilt", "spellcheck", true, "spellcheck.q", "toyata", "qt", "/spellCheckCompRH_Direct", "shards.qt", "/spellCheckCompRH_Direct");
 
     stress=0;  // turn off stress... we want to tex max combos in min time
     for (int i=0; i<25*RANDOM_MULTIPLIER; i++) {
@@ -1012,8 +1012,8 @@ public class TestDistributedSearch extends BaseDistributedSearchTestCase {
           "q", "toyata",
           "spellcheck", "true",
           "spellcheck.q", "toyata",
-          "qt", "spellCheckCompRH_Direct",
-          "shards.qt", "spellCheckCompRH_Direct",
+          "qt", "/spellCheckCompRH_Direct",
+          "shards.qt", "/spellCheckCompRH_Direct",
           ShardParams.SHARDS_INFO, "true",
           ShardParams.SHARDS_TOLERANT, "true");
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/cloud/BasicZkTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/BasicZkTest.java b/solr/core/src/test/org/apache/solr/cloud/BasicZkTest.java
index 7a9dbdb..79b49dc 100644
--- a/solr/core/src/test/org/apache/solr/cloud/BasicZkTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/BasicZkTest.java
@@ -58,7 +58,7 @@ public class BasicZkTest extends AbstractZkTestCase {
     SolrCore core = h.getCore();
 
     // test that we got the expected config, not just hardcoded defaults
-    assertNotNull(core.getRequestHandler("mock"));
+    assertNotNull(core.getRequestHandler("/mock"));
 
     lrf.args.put(CommonParams.VERSION, "2.2");
     assertQ("test query on empty index", request("qlkciyopsbgzyvkylsjhchghjrdf"),

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/cloud/TestRandomRequestDistribution.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestRandomRequestDistribution.java b/solr/core/src/test/org/apache/solr/cloud/TestRandomRequestDistribution.java
index 30898b9..55cdee8 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestRandomRequestDistribution.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestRandomRequestDistribution.java
@@ -108,7 +108,7 @@ public class TestRandomRequestDistribution extends AbstractFullDistribZkTestBase
       SolrMetricManager metricManager = container.getMetricManager();
       for (SolrCore core : container.getCores()) {
         String registry = core.getCoreMetricManager().getRegistryName();
-        Counter cnt = metricManager.counter(null, registry, "requests", "QUERY.standard");
+        Counter cnt = metricManager.counter(null, registry, "requests", "QUERY./select");
         SolrRequestHandler select = core.getRequestHandler("");
 //        long c = (long) select.getStatistics().get("requests");
         shardVsCount.put(core.getName(), (int) cnt.getCount());
@@ -188,7 +188,7 @@ public class TestRandomRequestDistribution extends AbstractFullDistribZkTestBase
 
       SolrMetricManager leaderMetricManager = leaderCore.getCoreContainer().getMetricManager();
       String leaderRegistry = leaderCore.getCoreMetricManager().getRegistryName();
-      Counter cnt = leaderMetricManager.counter(null, leaderRegistry, "requests", "QUERY.standard");
+      Counter cnt = leaderMetricManager.counter(null, leaderRegistry, "requests", "QUERY./select");
 
       // All queries should be served by the active replica
       // To make sure that's true we keep querying the down replica

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/core/AlternateDirectoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/AlternateDirectoryTest.java b/solr/core/src/test/org/apache/solr/core/AlternateDirectoryTest.java
index cf8d7c6..9bf08a5 100644
--- a/solr/core/src/test/org/apache/solr/core/AlternateDirectoryTest.java
+++ b/solr/core/src/test/org/apache/solr/core/AlternateDirectoryTest.java
@@ -37,7 +37,7 @@ public class AlternateDirectoryTest extends SolrTestCaseJ4 {
   }
 
   public void testAltDirectoryUsed() throws Exception {
-    assertQ(req("q","*:*","qt","standard"));
+    assertQ(req("q","*:*","qt","/select"));
     assertTrue(TestFSDirectoryFactory.openCalled);
     assertTrue(TestIndexReaderFactory.newReaderCalled);
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/core/RequestHandlersTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/RequestHandlersTest.java b/solr/core/src/test/org/apache/solr/core/RequestHandlersTest.java
index 3c13645..637aa24 100644
--- a/solr/core/src/test/org/apache/solr/core/RequestHandlersTest.java
+++ b/solr/core/src/test/org/apache/solr/core/RequestHandlersTest.java
@@ -36,7 +36,7 @@ public class RequestHandlersTest extends SolrTestCaseJ4 {
   public void testInitCount() {
     String registry = h.getCore().getCoreMetricManager().getRegistryName();
     SolrMetricManager manager = h.getCoreContainer().getMetricManager();
-    Gauge<Number> g = (Gauge<Number>)manager.registry(registry).getMetrics().get("QUERY.mock.initCount");
+    Gauge<Number> g = (Gauge<Number>)manager.registry(registry).getMetrics().get("QUERY./mock.initCount");
     assertEquals("Incorrect init count",
                  1, g.getValue().intValue());
   }
@@ -52,7 +52,7 @@ public class RequestHandlersTest extends SolrTestCaseJ4 {
   @Test
   public void testLazyLoading() {
     SolrCore core = h.getCore();
-    PluginBag.PluginHolder<SolrRequestHandler> handler = core.getRequestHandlers().getRegistry().get("lazy");
+    PluginBag.PluginHolder<SolrRequestHandler> handler = core.getRequestHandlers().getRegistry().get("/lazy");
     assertFalse(handler.isLoaded());
     
     assertU(adoc("id", "42",
@@ -75,12 +75,12 @@ public class RequestHandlersTest extends SolrTestCaseJ4 {
 
         // But it should behave just like the 'defaults' request handler above
     assertQ("lazy handler returns fewer matches",
-            req("q", "id:[42 TO 47]", "qt","lazy"),
+            req("q", "id:[42 TO 47]", "qt","/lazy"),
             "*[count(//doc)=4]"
             );
 
     assertQ("lazy handler includes highlighting",
-            req("q", "name:Zapp OR title:General", "qt","lazy"),
+            req("q", "name:Zapp OR title:General", "qt","/lazy"),
             "//lst[@name='highlighting']"
             );
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java b/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
index c042bd6..62f4d2e 100644
--- a/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
+++ b/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
@@ -254,7 +254,7 @@ public class SolrCoreTest extends SolrTestCaseJ4 {
     bean = infoRegistry.get(QueryComponent.COMPONENT_NAME);
     assertNotNull("bean not registered", bean);
     //try a Req Handler, which are stored by name, not clas
-    bean = infoRegistry.get("standard");
+    bean = infoRegistry.get("/select");
     assertNotNull("bean not registered", bean);
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/core/TestConfig.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestConfig.java b/solr/core/src/test/org/apache/solr/core/TestConfig.java
index 87a453f..5a7b706 100644
--- a/solr/core/src/test/org/apache/solr/core/TestConfig.java
+++ b/solr/core/src/test/org/apache/solr/core/TestConfig.java
@@ -69,8 +69,8 @@ public class TestConfig extends SolrTestCaseJ4 {
   }
   @Test
   public void testDisableRequetsHandler() throws Exception {
-    assertNull(h.getCore().getRequestHandler("disabled"));
-    assertNotNull(h.getCore().getRequestHandler("enabled"));
+    assertNull(h.getCore().getRequestHandler("/disabled"));
+    assertNotNull(h.getCore().getRequestHandler("/enabled"));
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java b/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
index c1eb873..900f024 100644
--- a/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
+++ b/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
@@ -75,7 +75,7 @@ public class TestQuerySenderListener extends SolrTestCaseJ4 {
     RefCounted<SolrIndexSearcher> currentSearcherRef = core.getSearcher();
     SolrIndexSearcher currentSearcher = currentSearcherRef.get();
     qsl.newSearcher(currentSearcher, null);//test new Searcher
-    MockQuerySenderListenerReqHandler mock = (MockQuerySenderListenerReqHandler) core.getRequestHandler("mock");
+    MockQuerySenderListenerReqHandler mock = (MockQuerySenderListenerReqHandler) core.getRequestHandler("/mock");
     assertNotNull("Mock is null", mock);
     String evt = mock.req.getParams().get(EventParams.EVENT);
     assertNotNull("Event is null", evt);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java b/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java
index 425f04a..76ac7c3 100644
--- a/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java
+++ b/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java
@@ -70,7 +70,7 @@ public class TestQuerySenderNoQuery extends SolrTestCaseJ4 {
     SolrIndexSearcher currentSearcher = currentSearcherRef.get();
     SolrIndexSearcher dummy = null;
     qsl.newSearcher(currentSearcher, dummy);//test first Searcher (since param is null)
-    MockQuerySenderListenerReqHandler mock = (MockQuerySenderListenerReqHandler) core.getRequestHandler("mock");
+    MockQuerySenderListenerReqHandler mock = (MockQuerySenderListenerReqHandler) core.getRequestHandler("/mock");
     assertNotNull("Mock is null", mock);
     assertNull("Req (firstsearcher) is not null", mock.req);
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java b/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java
index 529fa06..32be46e 100644
--- a/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java
+++ b/solr/core/src/test/org/apache/solr/core/TestXIncludeConfig.java
@@ -52,7 +52,7 @@ public class TestXIncludeConfig extends AbstractSolrTestCase {
     SolrCore core = h.getCore();
 
     assertNotNull("includedHandler is null", 
-                  core.getRequestHandler("includedHandler"));
+                  core.getRequestHandler("/includedHandler"));
 
     UpdateRequestProcessorChain chain 
       = core.getUpdateProcessingChain("special-include");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
index 6da06b1..aa63ce3 100644
--- a/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
@@ -38,7 +38,6 @@ public class MoreLikeThisHandlerTest extends SolrTestCaseJ4 {
   @BeforeClass
   public static void moreLikeThisBeforeClass() throws Exception {
     initCore("solrconfig.xml", "schema.xml");
-    lrf = h.getRequestFactory("standard", 0, 20 );
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/handler/SearchHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/SearchHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/SearchHandlerTest.java
new file mode 100644
index 0000000..b35103b
--- /dev/null
+++ b/solr/core/src/test/org/apache/solr/handler/SearchHandlerTest.java
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+package org.apache.solr.handler;
+
+import org.apache.solr.util.AbstractSolrTestCase;
+import org.junit.BeforeClass;
+
+/**
+ * Most of the tests for {@link org.apache.solr.handler.component.SearchHandler} are in {@link org.apache.solr.ConvertedLegacyTest}.
+ */
+public class SearchHandlerTest extends AbstractSolrTestCase {
+  
+  @BeforeClass
+  public static void beforeClass() throws Exception {
+    initCore("solrconfig.xml", "schema.xml");
+  }
+  
+  public void testSorting() throws Exception {
+    assertU(adoc("id", "10", "title", "test", "val_s1", "aaa"));
+    assertU(adoc("id", "11", "title", "test", "val_s1", "bbb"));
+    assertU(adoc("id", "12", "title", "test", "val_s1", "ccc"));
+    assertU(commit());
+
+    assertQ(req("q", "title:test")
+            ,"//*[@numFound='3']"
+            );
+    
+    assertQ(req("q", "title:test", "sort","val_s1 asc")
+            ,"//*[@numFound='3']"
+            ,"//result/doc[1]/str[@name='id'][.='10']"
+            ,"//result/doc[2]/str[@name='id'][.='11']"
+            ,"//result/doc[3]/str[@name='id'][.='12']"
+            );
+
+    assertQ(req("q", "title:test", "sort","val_s1 desc")
+            ,"//*[@numFound='3']"
+            ,"//result/doc[1]/str[@name='id'][.='12']"
+            ,"//result/doc[2]/str[@name='id'][.='11']"
+            ,"//result/doc[3]/str[@name='id'][.='10']"
+            );
+    
+    // Make sure score parsing works
+    assertQ(req("q", "title:test", "sort","score desc")
+        ,"//*[@numFound='3']"
+    );
+
+    assertQ(req("q", "title:test", "sort","score asc")
+        ,"//*[@numFound='3']"
+    );
+    
+    // Using legacy ';' param
+    assertQ(req("q", "title:test; val_s1 desc", "defType","lucenePlusSort")
+            ,"//*[@numFound='3']"
+            ,"//result/doc[1]/str[@name='id'][.='12']"
+            ,"//result/doc[2]/str[@name='id'][.='11']"
+            ,"//result/doc[3]/str[@name='id'][.='10']"
+            );
+
+    assertQ(req("q", "title:test; val_s1 asc", "defType","lucenePlusSort")
+            ,"//*[@numFound='3']"
+            ,"//result/doc[1]/str[@name='id'][.='10']"
+            ,"//result/doc[2]/str[@name='id'][.='11']"
+            ,"//result/doc[3]/str[@name='id'][.='12']"
+            );
+  }
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/handler/StandardRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/StandardRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/StandardRequestHandlerTest.java
deleted file mode 100644
index 668fefd..0000000
--- a/solr/core/src/test/org/apache/solr/handler/StandardRequestHandlerTest.java
+++ /dev/null
@@ -1,88 +0,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.
- */
-package org.apache.solr.handler;
-
-import org.apache.solr.core.SolrCore;
-import org.apache.solr.util.AbstractSolrTestCase;
-import org.junit.BeforeClass;
-
-/**
- * Most of the tests for StandardRequestHandler are in ConvertedLegacyTest
- * 
- */
-public class StandardRequestHandlerTest extends AbstractSolrTestCase {
-  
-  @BeforeClass
-  public static void beforeClass() throws Exception {
-    initCore("solrconfig.xml", "schema.xml");
-  }
-  
-  @Override public void setUp() throws Exception {
-    super.setUp();
-    lrf = h.getRequestFactory("standard", 0, 20 );
-  }
-  
-  public void testSorting() throws Exception {
-    SolrCore core = h.getCore();
-    assertU(adoc("id", "10", "title", "test", "val_s1", "aaa"));
-    assertU(adoc("id", "11", "title", "test", "val_s1", "bbb"));
-    assertU(adoc("id", "12", "title", "test", "val_s1", "ccc"));
-    assertU(commit());
-
-    assertQ(req("q", "title:test")
-            ,"//*[@numFound='3']"
-            );
-    
-    assertQ(req("q", "title:test", "sort","val_s1 asc")
-            ,"//*[@numFound='3']"
-            ,"//result/doc[1]/str[@name='id'][.='10']"
-            ,"//result/doc[2]/str[@name='id'][.='11']"
-            ,"//result/doc[3]/str[@name='id'][.='12']"
-            );
-
-    assertQ(req("q", "title:test", "sort","val_s1 desc")
-            ,"//*[@numFound='3']"
-            ,"//result/doc[1]/str[@name='id'][.='12']"
-            ,"//result/doc[2]/str[@name='id'][.='11']"
-            ,"//result/doc[3]/str[@name='id'][.='10']"
-            );
-    
-    // Make sure score parsing works
-    assertQ(req("q", "title:test", "sort","score desc")
-        ,"//*[@numFound='3']"
-    );
-
-    assertQ(req("q", "title:test", "sort","score asc")
-        ,"//*[@numFound='3']"
-    );
-    
-    // Using legacy ';' param
-    assertQ(req("q", "title:test; val_s1 desc", "defType","lucenePlusSort")
-            ,"//*[@numFound='3']"
-            ,"//result/doc[1]/str[@name='id'][.='12']"
-            ,"//result/doc[2]/str[@name='id'][.='11']"
-            ,"//result/doc[3]/str[@name='id'][.='10']"
-            );
-
-    assertQ(req("q", "title:test; val_s1 asc", "defType","lucenePlusSort")
-            ,"//*[@numFound='3']"
-            ,"//result/doc[1]/str[@name='id'][.='10']"
-            ,"//result/doc[2]/str[@name='id'][.='11']"
-            ,"//result/doc[3]/str[@name='id'][.='12']"
-            );
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java
index 40e952a..9e84fd2 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java
@@ -124,11 +124,11 @@ public class DistributedSpellCheckComponentTest extends BaseDistributedSearchTes
     handle.put("grouped", SKIP);
     
     //Randomly select either IndexBasedSpellChecker or DirectSolrSpellChecker
-    String requestHandlerName = "spellCheckCompRH_Direct";
-    String reqHandlerWithWordbreak = "spellCheckWithWordbreak_Direct";
+    String requestHandlerName = "/spellCheckCompRH_Direct";
+    String reqHandlerWithWordbreak = "/spellCheckWithWordbreak_Direct";
     if(random().nextBoolean()) {
-      requestHandlerName = "spellCheckCompRH";
-      reqHandlerWithWordbreak = "spellCheckWithWordbreak";   
+      requestHandlerName = "/spellCheckCompRH";
+      reqHandlerWithWordbreak = "/spellCheckWithWordbreak";
     } 
     
     //Shortcut names
@@ -143,7 +143,7 @@ public class DistributedSpellCheckComponentTest extends BaseDistributedSearchTes
     String maxResults = SpellingParams.SPELLCHECK_MAX_RESULTS_FOR_SUGGEST;
      
     //Build the dictionary for IndexBasedSpellChecker
-    q(buildRequest("*:*", false, "spellCheckCompRH", false, build, "true"));
+    q(buildRequest("*:*", false, "/spellCheckCompRH", false, build, "true"));
     
     //Test Basic Functionality
     query(buildRequest("toyata", true, requestHandlerName, random().nextBoolean(), (String[]) null));

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/handler/component/FacetPivotSmallTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/FacetPivotSmallTest.java b/solr/core/src/test/org/apache/solr/handler/component/FacetPivotSmallTest.java
index 4b5e8a7..0f4ec06 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/FacetPivotSmallTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/FacetPivotSmallTest.java
@@ -40,7 +40,6 @@ public class FacetPivotSmallTest extends SolrTestCaseJ4 {
     super.setUp();
     clearIndex();
     assertU(commit());
-    lrf = h.getRequestFactory("standard", 0, 20);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java
index 7e309fc..cf657da 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/ResponseLogComponentTest.java
@@ -38,8 +38,8 @@ public class ResponseLogComponentTest extends SolrTestCaseJ4 {
   public void testToLogIds() throws Exception {
     SolrQueryRequest req = null;
     try {
-      String handler="withlog";
-      req = req("indent","true", "qt","withlog",  "q","aa", "rows","2",
+      String handler="/withlog";
+      req = req("indent","true", "qt","/withlog",  "q","aa", "rows","2",
           "fl","id,subject", "responseLog","true");
       SolrQueryResponse qr = h.queryAndResponse(handler, req);
       NamedList<Object> entries = qr.getToLog();
@@ -55,8 +55,8 @@ public class ResponseLogComponentTest extends SolrTestCaseJ4 {
   public void testToLogScores() throws Exception {
     SolrQueryRequest req = null;
     try {
-      String handler="withlog";
-      req = req("indent","true", "qt","withlog",  "q","aa", "rows","2",
+      String handler="/withlog";
+      req = req("indent","true", "qt","/withlog",  "q","aa", "rows","2",
           "fl","id,subject,score", "responseLog","true");
       SolrQueryResponse qr = h.queryAndResponse(handler, req);
       NamedList<Object> entries = qr.getToLog();
@@ -72,8 +72,8 @@ public class ResponseLogComponentTest extends SolrTestCaseJ4 {
   public void testDisabling() throws Exception {
     SolrQueryRequest req = null;
     try {
-      String handler="withlog";
-      req = req("indent","true", "qt","withlog",  "q","aa", "rows","2", 
+      String handler="/withlog";
+      req = req("indent","true", "qt","/withlog",  "q","aa", "rows","2",
           "fl","id,subject", "responseLog","false");
       SolrQueryResponse qr = h.queryAndResponse(handler, req);
       NamedList<Object> entries = qr.getToLog();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java
index 37d02d9..d3b0828 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java
@@ -43,7 +43,7 @@ import org.junit.Test;
 @Slow
 @SuppressTempFileChecks(bugUrl = "https://issues.apache.org/jira/browse/SOLR-1877 Spellcheck IndexReader leak bug?")
 public class SpellCheckComponentTest extends SolrTestCaseJ4 {
-  static String rh = "spellCheckCompRH";
+  static String rh = "/spellCheckCompRH";
 
 
   @BeforeClass
@@ -254,7 +254,7 @@ public class SpellCheckComponentTest extends SolrTestCaseJ4 {
   public void testReloadOnStart() throws Exception {
     assertU(adoc("id", "0", "lowerfilt", "This is a title"));
     assertU(commit());
-    SolrQueryRequest request = req("qt", "spellCheckCompRH", "q", "*:*",
+    SolrQueryRequest request = req("qt", "/spellCheckCompRH", "q", "*:*",
         "spellcheck.q", "ttle", "spellcheck", "true", "spellcheck.dictionary",
         "default", "spellcheck.build", "true");
     assertQ(request, "//arr[@name='suggestion'][.='title']");
@@ -271,7 +271,7 @@ public class SpellCheckComponentTest extends SolrTestCaseJ4 {
     checker.init(args);
     checker.inform(h.getCore());
 
-    request = req("qt", "spellCheckCompRH", "q", "*:*", "spellcheck.q", "ttle",
+    request = req("qt", "/spellCheckCompRH", "q", "*:*", "spellcheck.q", "ttle",
         "spellcheck", "true", "spellcheck.dictionary", "default",
         "spellcheck.reload", "true");
     List<SearchComponent> components = new ArrayList<>();
@@ -293,7 +293,7 @@ public class SpellCheckComponentTest extends SolrTestCaseJ4 {
     @SuppressWarnings("unchecked")
     @Test
   public void testRebuildOnCommit() throws Exception {
-    SolrQueryRequest req = req("q", "lowerfilt:lucenejavt", "qt", "spellCheckCompRH", "spellcheck", "true");
+    SolrQueryRequest req = req("q", "lowerfilt:lucenejavt", "qt", "/spellCheckCompRH", "spellcheck", "true");
     String response = h.query(req);
     assertFalse("No suggestions should be returned", response.contains("lucenejava"));
     
@@ -330,7 +330,7 @@ public class SpellCheckComponentTest extends SolrTestCaseJ4 {
         params.add(SpellingParams.SPELLCHECK_EXTENDED_RESULTS,"true");
         params.add(CommonParams.Q, "anotheq");
 
-        SolrRequestHandler handler = core.getRequestHandler("spellCheckCompRH");
+        SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH");
         SolrQueryResponse rsp = new SolrQueryResponse();
         rsp.addResponseHeader(new SimpleOrderedMap());
         SolrQueryRequest req = new LocalSolrQueryRequest(core, params);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java
index 3bb4974..cee1ab5 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java
@@ -78,7 +78,6 @@ public class StatsComponentTest extends AbstractSolrTestCase {
     super.setUp();
     clearIndex();
     assertU(commit());
-    lrf = h.getRequestFactory("standard", 0, 20);
   }
 
   public void testStats() throws Exception {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java
index ed7a9e7..b15e167 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java
@@ -516,7 +516,7 @@ public class SuggestComponentTest extends SolrTestCaseJ4 {
       waitForWarming();
     }
     
-    assertQ(req("qt", "standard", 
+    assertQ(req("qt", "/select",
         "q", "*:*"), 
         "//*[@numFound='11']"
         );

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentTest.java
index abee4bd..91a5869 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentTest.java
@@ -118,7 +118,7 @@ public class TermVectorComponentTest extends SolrTestCaseJ4 {
     assertNull(h.validateUpdate(commit()));
   }
 
-  static String tv = "tvrh";
+  static String tv = "/tvrh";
 
   @Test
   public void testBasics() throws Exception {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/highlight/FastVectorHighlighterTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/highlight/FastVectorHighlighterTest.java b/solr/core/src/test/org/apache/solr/highlight/FastVectorHighlighterTest.java
index aafe3f5..99868a7 100644
--- a/solr/core/src/test/org/apache/solr/highlight/FastVectorHighlighterTest.java
+++ b/solr/core/src/test/org/apache/solr/highlight/FastVectorHighlighterTest.java
@@ -77,7 +77,7 @@ public class FastVectorHighlighterTest extends SolrTestCaseJ4 {
       args.put("hl.method", "fastVector"); // the new way
     }
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard",0,200,args);
+      "",0,200,args);
     
     assertU(adoc("tv_text", "basic fast vector highlighter test", 
                  "id", "1"));

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/highlight/HighlighterConfigTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/highlight/HighlighterConfigTest.java b/solr/core/src/test/org/apache/solr/highlight/HighlighterConfigTest.java
index f022e96..5832132 100644
--- a/solr/core/src/test/org/apache/solr/highlight/HighlighterConfigTest.java
+++ b/solr/core/src/test/org/apache/solr/highlight/HighlighterConfigTest.java
@@ -62,7 +62,7 @@ public class HighlighterConfigTest extends AbstractSolrTestCase {
     args.put("df", "t_text");
     args.put("hl.fl", "");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
 
     assertU(adoc("t_text", "a long day's night", "id", "1"));
     assertU(commit());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java b/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java
index f0b58cd..759de00 100644
--- a/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java
+++ b/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java
@@ -119,7 +119,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put(HighlightParams.MERGE_CONTIGUOUS_FRAGMENTS, "true");
     args.put(HighlightParams.METHOD, "original"); // test works; no complaints
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     String input = "this is some long text.  It has the word long in many places.  In fact, it has long on some different fragments.  " +
             "Let us see what happens to long in this case.";
     String gold = "this is some <em>long</em> text.  It has the word <em>long</em> in many places.  In fact, it has <em>long</em> on some different fragments.  " +
@@ -145,7 +145,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put(HighlightParams.MERGE_CONTIGUOUS_FRAGMENTS, "false");
     args.put("f.t_text." + HighlightParams.MERGE_CONTIGUOUS_FRAGMENTS, "false");
     sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     assertQ("Merge Contiguous",
         sumLRF.makeRequest("t_text:long"),
         "//lst[@name='highlighting']/lst[@name='1']",
@@ -165,7 +165,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.fl", "tv_text");
     args.put("hl.snippets", "2");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard",0,200,args);
+      "",0,200,args);
     
     assertU(adoc("tv_text", LONG_TEXT, 
                  "id", "1"));
@@ -186,7 +186,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl", "true");
     args.put("hl.fl", "tv_no_off_text");
 
-    TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory("", 0, 200, args);
 
     assertU(adoc("tv_no_off_text", "Crackerjack Cameron", "id", "1"));
     assertU(commit());
@@ -229,7 +229,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.fl", "tv_mv_text");
     args.put("hl.snippets", "2");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard",0,200,args);
+      "",0,200,args);
     
     assertU(adoc("tv_mv_text", LONG_TEXT, 
                  "tv_mv_text", LONG_TEXT, 
@@ -256,7 +256,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.fl", "tv_mv_text");
     args.put("hl.snippets", "2");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard",0,200,args);
+      "",0,200,args);
 
     String shortText = "short";
     assertU(adoc("tv_mv_text", shortText,
@@ -282,7 +282,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("qf", "tv_text");
     args.put("q.alt", "*:*");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "dismax",0,200,args);
+      "/dismax",0,200,args);
     
     assertU(adoc("tv_text", "a long day's night", "id", "1"));
     assertU(commit());
@@ -309,7 +309,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.fl", "textgap");
     args.put("df", "textgap");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     
     assertU(adoc("textgap", "first entry hasnt queryword",
         "textgap", "second entry has queryword long",
@@ -331,7 +331,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.fl", "textgap");
     args.put("df", "textgap");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-        "standard", 0, 200, args);
+        "", 0, 200, args);
     
     assertU(adoc("textgap", "first entry has one word foo", 
         "textgap", "second entry has both words foo bar",
@@ -370,7 +370,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("df", "t_text");
     args.put("hl.fl", "");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     
     assertU(adoc("t_text", "a long day's night", "id", "1"));
     assertU(commit());
@@ -392,7 +392,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl", "false");
     args.put("hl.fl", "t_text");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     
     assertU(adoc("t_text", "a long day's night", "id", "1"));
     assertU(commit());
@@ -410,7 +410,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl", "true");
     args.put("hl.fl", "t_text tv_text");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     
     assertU(adoc("t_text", "a long day's night", "id", "1",
                  "tv_text", "a long night's day"));
@@ -437,7 +437,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
      args.put("hl.fl", "t_text1 t_text2");
      
      TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-           "standard", 0, 200, args);
+           "", 0, 200, args);
      // default should highlight both random and words in both fields
      assertQ("Test Default",
            sumLRF.makeRequest("t_text1:random OR t_text2:words"),
@@ -449,7 +449,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
      // requireFieldMatch=true - highlighting should only occur if term matched in that field
      args.put("hl.requireFieldMatch", "true");
      sumLRF = h.getRequestFactory(
-           "standard", 0, 200, args);
+           "", 0, 200, args);
      assertQ("Test RequireFieldMatch",
          sumLRF.makeRequest("t_text1:random OR t_text2:words"),
          "//lst[@name='highlighting']/lst[@name='1']",
@@ -463,7 +463,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
      assertU(delI("1"));
      assertU(commit());
      sumLRF = h.getRequestFactory(
-           "standard", 0, 200, args);
+           "", 0, 200, args);
      assertQ("Test RequireFieldMatch on un-optimized index",
            sumLRF.makeRequest("t_text1:random OR t_text2:words"),
            "//lst[@name='highlighting']/lst[@name='2']",
@@ -482,7 +482,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.simple.pre","<B>");
     args.put("hl.simple.post", "</B>");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     
     assertU(adoc("t_text", "a long days night", "id", "1"));
     assertU(commit());
@@ -497,7 +497,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("f.t_text.hl.simple.pre", "<I>");
     args.put("f.t_text.hl.simple.post", "</I>");
     sumLRF = h.getRequestFactory(
-          "standard", 0, 200, args);
+          "", 0, 200, args);
     assertQ("Basic summarization",
           sumLRF.makeRequest("t_text:long"),
           "//lst[@name='highlighting']/lst[@name='1']",
@@ -513,7 +513,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl", "true");
     args.put("hl.fl", "tv_text");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     
 
     String text = 
@@ -537,7 +537,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     final String field = random().nextBoolean() ? "t_text" : "tv_text";
     args.put("hl.fl", field);
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     
 
     assertU(adoc(field, LONG_TEXT, "id", "1"));
@@ -549,14 +549,14 @@ public class HighlighterTest extends SolrTestCaseJ4 {
             "//lst[@name='1']/arr[count(str)=1]"
             );
     args.put("hl.maxAnalyzedChars", "20");
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     assertQ("token at end of text",
         sumLRF.makeRequest(field + ":disjoint"),
         "//lst[@name='highlighting']/lst[@name='1']",
         "//lst[@name='1'][not(*)]"
     );
     args.put("hl.maxAnalyzedChars", "-1");
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     assertQ("token at start of text",
         sumLRF.makeRequest(field + ":disjoint"),
         "//lst[@name='highlighting']/lst[@name='1']",
@@ -598,7 +598,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.regex.pattern", "[-\\w ,\"']{20,200}");
     args.put("hl.regex.slop", ".9");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     
     String t = "This is an example of a sentence. Another example \"sentence\" with " +
       "special characters\nand a line-break! Miscellaneous character like ^ are " +
@@ -617,7 +617,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
             );
     // try with some punctuation included
     args.put("hl.regex.pattern", "[-\\w ,^/\\n\"']{20,200}");
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     assertQ("regex fragmenter 2",
             sumLRF.makeRequest("t_text:example"),
             "//lst[@name='highlighting']/lst[@name='1']",
@@ -640,7 +640,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
      args.put("hl", "true");
      args.put("hl.fl", "tv_text");
      TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-       "standard", 0, 200, args);
+       "", 0, 200, args);
      assertQ("Basic summarization",
            sumLRF.makeRequest("tv_text:long"),
            "//lst[@name='highlighting']/lst[@name='1']",
@@ -650,7 +650,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
      // 25
      args.put("hl.fragsize","25");
      sumLRF = h.getRequestFactory(
-           "standard", 0, 200, args);
+           "", 0, 200, args);
      assertQ("Basic summarization",
            sumLRF.makeRequest("tv_text:long"),
            "//lst[@name='highlighting']/lst[@name='1']",
@@ -660,7 +660,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
      // 0 - NullFragmenter
      args.put("hl.fragsize","0");
      sumLRF = h.getRequestFactory(
-           "standard", 0, 200, args);
+           "", 0, 200, args);
      assertQ("Basic summarization",
            sumLRF.makeRequest("tv_text:long"),
            "//lst[@name='highlighting']/lst[@name='1']",
@@ -684,7 +684,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.fragsize","0");
     args.put("hl.fl", "t_text");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
 
     // no alternate
     assertQ("Alternate summarization",
@@ -695,7 +695,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
 
     // with an alternate
     args.put("hl.alternateField", "foo_t");
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     assertQ("Alternate summarization",
             sumLRF.makeRequest("tv_text:keyword"),
             "//lst[@name='highlighting']/lst[@name='1' and count(*)=1]",
@@ -705,7 +705,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     // with an alternate + max length
     args.put("hl.alternateField", "t_text");
     args.put("hl.maxAlternateFieldLength", "15");
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     assertQ("Alternate summarization",
             sumLRF.makeRequest("tv_text:keyword"),
             "//lst[@name='highlighting']/lst[@name='1' and count(*)=1]",
@@ -715,7 +715,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     // with a non-existing alternate field + max length
     args.put("hl.alternateField", "NonExistingField");
     args.put("hl.maxAlternateFieldLength", "15");
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     assertQ("Alternate summarization",
             sumLRF.makeRequest("tv_text:keyword"),
             "//lst[@name='highlighting']/lst[@name='1' and count(*)=1]",
@@ -744,7 +744,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.alternateField", "tv_text");
     args.put("hl.maxAlternateFieldLength", "39");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     assertQ("Alternate summarization with highlighting",
             sumLRF.makeRequest("tv_text:keyword"),
             "//lst[@name='highlighting']/lst[@name='1' and count(*)=1]",
@@ -761,7 +761,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     // With hl.requireFieldMatch, will not highlight but fall back to plain-text alternate
     args.put("hl.requireFieldMatch", "true");
     sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     assertQ("Alternate summarization with highlighting, requireFieldMatch",
             sumLRF.makeRequest("other_t:keyword"),
             "//lst[@name='highlighting']/lst[@name='1' and count(*)=1]",
@@ -774,7 +774,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.remove("hl.alternateField");
     args.put("f.t_text.hl.alternateField", "tv_text");
     args.put("f.t_text.hl.maxAlternateFieldLength", "0");
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     assertQ("Alternate summarization with highlighting",
             sumLRF.makeRequest("tv_text:keyword"),
             "//lst[@name='highlighting']/lst[@name='1' and count(*)=1]",
@@ -786,7 +786,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.tag.pre", "<fvhpre>");
     args.put("hl.tag.post", "</fvhpost>");
     args.put("f.t_text.hl.maxAlternateFieldLength", "18");
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     assertQ("Alternate summarization with highlighting using FVH",
             sumLRF.makeRequest("tv_text:keyword"),
             "//lst[@name='highlighting']/lst[@name='1' and count(*)=1]",
@@ -795,7 +795,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
 
     // Prove it is possible to turn off highlighting of alternate field
     args.put("hl.highlightAlternate", "false");
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     assertQ("Alternate summarization without highlighting",
             sumLRF.makeRequest("tv_text:keyword"),
             "//lst[@name='highlighting']/lst[@name='1' and count(*)=1]",
@@ -813,7 +813,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.usePhraseHighlighter", "false");
 
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
 
     // String borrowed from Lucene's HighlighterTest
     String t = "This piece of text refers to Kennedy at the beginning then has a longer piece of text that is very long in the middle and finally ends with another reference to Kennedy";
@@ -843,7 +843,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     // now check if Lucene-794 highlighting works as expected
     args.put("hl.usePhraseHighlighter", "true");
 
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     
     // check phrase highlighting
     assertQ("Phrase highlighting - Lucene-794",
@@ -877,7 +877,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     assertU(commit());
     assertU(optimize());
 
-    TestHarness.LocalRequestFactory lrf = h.getRequestFactory("standard", 0,
+    TestHarness.LocalRequestFactory lrf = h.getRequestFactory("", 0,
         10, args);
 
     SolrQueryRequest request = lrf.makeRequest("test");
@@ -893,7 +893,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     request.close();
 
     args.put("hl.fl", "foo_*");
-    lrf = h.getRequestFactory("standard", 0, 10, args);
+    lrf = h.getRequestFactory("", 0, 10, args);
     request = lrf.makeRequest("test");
     highlighter = HighlightComponent.getHighlighter(h.getCore());
     highlightFieldNames = Arrays.asList(highlighter.getHighlightFields(null,
@@ -906,7 +906,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
 
     // SOLR-5127
     args.put("hl.fl", (random().nextBoolean() ? "foo_*,bar_*" : "bar_*,foo_*"));
-    lrf = h.getRequestFactory("standard", 0, 10, args);
+    lrf = h.getRequestFactory("", 0, 10, args);
     // hl.fl ordering need not be preserved in output
     final Set<String> highlightedSetExpected = new HashSet<String>();
     highlightedSetExpected.add("foo_s");
@@ -931,7 +931,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.usePhraseHighlighter", "true");
     args.put("hl.highlightMultiTerm", "true");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     
     assertU(adoc("t_text", "a long day's night", "id", "1"));
     assertU(commit());
@@ -955,7 +955,7 @@ public class HighlighterTest extends SolrTestCaseJ4 {
     args.put("hl.usePhraseHighlighter", "true");
     args.put("hl.highlightMultiTerm", "true");
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-      "standard", 0, 200, args);
+      "", 0, 200, args);
     
     assertU(adoc("t_text", "a long day's night", "id", "1"));
     assertU(commit());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java b/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
index a8e7ecd..b2cb5f3 100644
--- a/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java
@@ -43,7 +43,7 @@ public class SolrMetricsIntegrationTest extends SolrTestCaseJ4 {
   private static final int MAX_ITERATIONS = 20;
   private static final String CORE_NAME = "metrics_integration";
   private static final String METRIC_NAME = "requestTimes";
-  private static final String HANDLER_NAME = "standard";
+  private static final String HANDLER_NAME = "/select";
   private static final String[] REPORTER_NAMES = {"reporter1", "reporter2"};
   private static final String UNIVERSAL = "universal";
   private static final String SPECIFIC = "specific";

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java b/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java
index 0ee345e..35a66c3 100644
--- a/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java
+++ b/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java
@@ -3312,7 +3312,7 @@ public class SimpleFacetsTest extends SolrTestCaseJ4 {
       SolrQueryRequest req = req(params);
       log.info("Using Params: " + params);
       try {
-        SolrQueryResponse rsp = h.queryAndResponse("standard", req);
+        SolrQueryResponse rsp = h.queryAndResponse("", req);
         rangeFacetsFilter = (NamedList<Object>) ((NamedList<Object>) rsp.getValues().get("facet_counts")).get("facet_ranges");
       } finally {
         req.close();
@@ -3320,7 +3320,7 @@ public class SimpleFacetsTest extends SolrTestCaseJ4 {
       params.add("facet.range.method", FacetRangeMethod.DV.toString());
       req = req(params);
       try {
-        SolrQueryResponse rsp = h.queryAndResponse("standard", req);
+        SolrQueryResponse rsp = h.queryAndResponse("", req);
         rangeFacetsDv = (NamedList<Object>) ((NamedList<Object>) rsp.getValues().get("facet_counts")).get("facet_ranges");
       } finally {
         req.close();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java b/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
index fc8ddff..df0031f 100644
--- a/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
+++ b/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
@@ -326,7 +326,7 @@ public class TestIntervalFaceting extends SolrTestCaseJ4 {
     }
     SolrQueryRequest req = req(params);
     try {
-      SolrQueryResponse rsp = h.queryAndResponse("standard", req);
+      SolrQueryResponse rsp = h.queryAndResponse("", req);
       NamedList<Object> facetQueries = (NamedList<Object>) ((NamedList<Object>) rsp.getValues().get("facet_counts")).get("facet_queries");
       NamedList<Object> facetIntervals = (NamedList<Object>) ((NamedList<Object>) (NamedList<Object>) ((NamedList<Object>) rsp.getValues().get("facet_counts"))
           .get("facet_intervals")).get(field);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/search/TestComplexPhraseQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestComplexPhraseQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestComplexPhraseQParserPlugin.java
index 8c59281..02060a9 100644
--- a/solr/core/src/test/org/apache/solr/search/TestComplexPhraseQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestComplexPhraseQParserPlugin.java
@@ -102,7 +102,7 @@ public class TestComplexPhraseQParserPlugin extends AbstractSolrTestCase {
     args.put(CommonParams.FL, "id");
 
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-            "standard", 0, 200, args);
+            "", 0, 200, args);
 
     assertU(adoc("name", "john smith", "id", "1"));
     assertU(adoc("name", "johathon smith", "id", "2"));
@@ -181,7 +181,7 @@ public class TestComplexPhraseQParserPlugin extends AbstractSolrTestCase {
 
 
     TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory(
-            "standard", 0, 200, args);
+            "", 0, 200, args);
 
     assertU(adoc("name", "john smith smith john", "id", "1"));
     assertU(adoc("name", "johathon smith smith johathon", "id", "2"));
@@ -198,7 +198,7 @@ public class TestComplexPhraseQParserPlugin extends AbstractSolrTestCase {
     );
 
 
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     assertQ("PhraseHighlighter=true Test",
             sumLRF.makeRequest("name:\"(john johathon) smith\""),
             "//lst[@name='highlighting']/lst[@name='1']",
@@ -209,7 +209,7 @@ public class TestComplexPhraseQParserPlugin extends AbstractSolrTestCase {
 
 
     args.put(HighlightParams.USE_PHRASE_HIGHLIGHTER, Boolean.FALSE.toString());
-    sumLRF = h.getRequestFactory("standard", 0, 200, args);
+    sumLRF = h.getRequestFactory("", 0, 200, args);
     assertQ("PhraseHighlighter=false Test",
             sumLRF.makeRequest("name:\"(john johathon) smith\""),
             "//lst[@name='highlighting']/lst[@name='1']",

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetDistribTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetDistribTest.java b/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetDistribTest.java
index 1b12657..123ce97 100644
--- a/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetDistribTest.java
+++ b/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetDistribTest.java
@@ -137,7 +137,7 @@ public class BlockJoinFacetDistribTest extends SolrCloudTestCase{
               oldFacetsEnabled&&usually() ? "facet.limit" : "ignore" , "1",
               oldFacetsEnabled&&usually() ? "facet.mincount" : "ignore" , "2",
               oldFacetsEnabled&&usually() ? "facet.overrequest.count" : "ignore" , "0",
-          "qt",  random().nextBoolean() ? "blockJoinDocSetFacetRH" : "blockJoinFacetRH",
+          "qt",  random().nextBoolean() ? "/blockJoinDocSetFacetRH" : "/blockJoinFacetRH",
           "child.facet.field", "COLOR_s",
           "child.facet.field", "SIZE_s",
           "distrib.singlePass", random().nextBoolean() ? "true":"false",

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetRandomTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetRandomTest.java b/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetRandomTest.java
index 1b04d79..21ec780 100644
--- a/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetRandomTest.java
+++ b/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetRandomTest.java
@@ -46,7 +46,7 @@ public class BlockJoinFacetRandomTest extends SolrTestCaseJ4 {
   @BeforeClass
   public static void beforeClass() throws Exception {
     initCore("solrconfig-blockjoinfacetcomponent.xml", "schema-blockjoinfacetcomponent.xml");
-    handler = random().nextBoolean() ? "blockJoinDocSetFacetRH":"blockJoinFacetRH";
+    handler = random().nextBoolean() ? "/blockJoinDocSetFacetRH":"/blockJoinFacetRH";
     facets = createFacets();
     createIndex();
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetSimpleTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetSimpleTest.java b/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetSimpleTest.java
index 5e610cf..c4d3a64 100644
--- a/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetSimpleTest.java
+++ b/solr/core/src/test/org/apache/solr/search/join/BlockJoinFacetSimpleTest.java
@@ -32,7 +32,7 @@ public class BlockJoinFacetSimpleTest extends SolrTestCaseJ4 {
   @BeforeClass
   public static void beforeClass() throws Exception {
     initCore("solrconfig-blockjoinfacetcomponent.xml", "schema-blockjoinfacetcomponent.xml");
-    handler = random().nextBoolean() ? "blockJoinDocSetFacetRH":"blockJoinFacetRH";
+    handler = random().nextBoolean() ? "/blockJoinDocSetFacetRH":"/blockJoinFacetRH";
     createIndex();
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/spelling/DirectSolrSpellCheckerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/spelling/DirectSolrSpellCheckerTest.java b/solr/core/src/test/org/apache/solr/spelling/DirectSolrSpellCheckerTest.java
index cb5bba7..29551de 100644
--- a/solr/core/src/test/org/apache/solr/spelling/DirectSolrSpellCheckerTest.java
+++ b/solr/core/src/test/org/apache/solr/spelling/DirectSolrSpellCheckerTest.java
@@ -83,7 +83,7 @@ public class DirectSolrSpellCheckerTest extends SolrTestCaseJ4 {
   
   @Test
   public void testOnlyMorePopularWithExtendedResults() throws Exception {
-    assertQ(req("q", "teststop:fox", "qt", "spellCheckCompRH", SpellCheckComponent.COMPONENT_NAME, "true", SpellingParams.SPELLCHECK_DICT, "direct", SpellingParams.SPELLCHECK_EXTENDED_RESULTS, "true", SpellingParams.SPELLCHECK_ONLY_MORE_POPULAR, "true"),
+    assertQ(req("q", "teststop:fox", "qt", "/spellCheckCompRH", SpellCheckComponent.COMPONENT_NAME, "true", SpellingParams.SPELLCHECK_DICT, "direct", SpellingParams.SPELLCHECK_EXTENDED_RESULTS, "true", SpellingParams.SPELLCHECK_ONLY_MORE_POPULAR, "true"),
         "//lst[@name='spellcheck']/lst[@name='suggestions']/lst[@name='fox']/int[@name='origFreq']=1",
         "//lst[@name='spellcheck']/lst[@name='suggestions']/lst[@name='fox']/arr[@name='suggestion']/lst/str[@name='word']='foo'",
         "//lst[@name='spellcheck']/lst[@name='suggestions']/lst[@name='fox']/arr[@name='suggestion']/lst/int[@name='freq']=2",

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorTest.java b/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorTest.java
index 5428044..06f18fc 100644
--- a/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorTest.java
+++ b/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorTest.java
@@ -115,7 +115,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
     params.add(SpellingParams.SPELLCHECK_ALTERNATIVE_TERM_COUNT, "10"); 
     params.add(CommonParams.Q, "id:[1 TO 10] AND lowerfilt:lovw");
     {
-      SolrRequestHandler handler = core.getRequestHandler("spellCheckCompRH");
+      SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH");
       SolrQueryResponse rsp = new SolrQueryResponse();
       rsp.addResponseHeader(new SimpleOrderedMap());
       SolrQueryRequest req = new LocalSolrQueryRequest(core, params);
@@ -147,7 +147,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
     
     params.add(CommonParams.Q, "lowerfilt:(hypenated-wotd)");
     {
-      SolrRequestHandler handler = core.getRequestHandler("spellCheckCompRH");
+      SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH");
       SolrQueryResponse rsp = new SolrQueryResponse();
       rsp.addResponseHeader(new SimpleOrderedMap());
       SolrQueryRequest req = new LocalSolrQueryRequest(core, params);
@@ -164,10 +164,10 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
 
     params.remove(CommonParams.Q);
     params.add("defType", "dismax");
-    params.add("qf", "lowerfilt");
+    params.add("qf", "/lowerfilt");
     params.add(CommonParams.Q, "hypenated-wotd");
     {
-      SolrRequestHandler handler = core.getRequestHandler("spellCheckCompRH");
+      SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH");
       SolrQueryResponse rsp = new SolrQueryResponse();
       rsp.add("responseHeader", new SimpleOrderedMap());
       SolrQueryRequest req = new LocalSolrQueryRequest(core, params);
@@ -194,7 +194,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
         SpellingParams.SPELLCHECK_COLLATE, "true",
         SpellingParams.SPELLCHECK_MAX_COLLATION_TRIES, "10",
         SpellingParams.SPELLCHECK_MAX_COLLATIONS, "10",
-        "qt", "spellCheckCompRH",
+        "qt", "/spellCheckCompRH",
         "defType", "edismax",
         "qf", "teststop",
         "mm", "1",
@@ -210,7 +210,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
           SpellingParams.SPELLCHECK_COLLATE, "true",
           SpellingParams.SPELLCHECK_MAX_COLLATION_TRIES, "10",
           SpellingParams.SPELLCHECK_MAX_COLLATIONS, "10",
-          "qt", "spellCheckCompRH",
+          "qt", "/spellCheckCompRH",
           "defType", "edismax",
           "qf", "teststop",
           "mm", "1",
@@ -241,7 +241,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
 
     //Because a FilterQuery is applied which removes doc id#1 from possible hits, we would
     //not want the collations to return us "lowerfilt:(+faith +hope +loaves)" as this only matches doc id#1.
-    SolrRequestHandler handler = core.getRequestHandler("spellCheckCompRH");
+    SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH");
     SolrQueryResponse rsp = new SolrQueryResponse();
     rsp.addResponseHeader(new SimpleOrderedMap());
     SolrQueryRequest req = new LocalSolrQueryRequest(core, params);
@@ -276,7 +276,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
 
     //SpellCheckCompRH has no "qf" defined.  It will not find "peace" from "peac" despite it being in the dictionary
     //because requrying against this Request Handler results in 0 hits.
-    SolrRequestHandler handler = core.getRequestHandler("spellCheckCompRH");
+    SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH");
     SolrQueryResponse rsp = new SolrQueryResponse();
     rsp.addResponseHeader(new SimpleOrderedMap());
     SolrQueryRequest req = new LocalSolrQueryRequest(core, params);
@@ -291,7 +291,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
     //SpellCheckCompRH1 has "lowerfilt1" defined in the "qf" param.  It will find "peace" from "peac" because
     //requrying field "lowerfilt1" returns the hit.
     params.remove(SpellingParams.SPELLCHECK_BUILD);
-    handler = core.getRequestHandler("spellCheckCompRH1");
+    handler = core.getRequestHandler("/spellCheckCompRH1");
     rsp = new SolrQueryResponse();
     rsp.addResponseHeader(new SimpleOrderedMap());
     req = new LocalSolrQueryRequest(core, params);
@@ -323,7 +323,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
     // Returns 1 collation as a single string.
     // All words are "correct" per the dictionary, but this collation would
     // return no results if tried.
-    SolrRequestHandler handler = core.getRequestHandler("spellCheckCompRH");
+    SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH");
     SolrQueryResponse rsp = new SolrQueryResponse();
     rsp.addResponseHeader(new SimpleOrderedMap());
     SolrQueryRequest req = new LocalSolrQueryRequest(core, params);
@@ -340,7 +340,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
     params.remove(SpellingParams.SPELLCHECK_BUILD);
     params.add(SpellingParams.SPELLCHECK_MAX_COLLATION_TRIES, "5");
     params.add(SpellingParams.SPELLCHECK_MAX_COLLATIONS, "1");
-    handler = core.getRequestHandler("spellCheckCompRH");
+    handler = core.getRequestHandler("/spellCheckCompRH");
     rsp = new SolrQueryResponse();
     rsp.addResponseHeader(new SimpleOrderedMap());
     req = new LocalSolrQueryRequest(core, params);
@@ -358,7 +358,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
     params.remove(SpellingParams.SPELLCHECK_MAX_COLLATIONS);
     params.add(SpellingParams.SPELLCHECK_MAX_COLLATION_TRIES, "10");
     params.add(SpellingParams.SPELLCHECK_MAX_COLLATIONS, "2");
-    handler = core.getRequestHandler("spellCheckCompRH");
+    handler = core.getRequestHandler("/spellCheckCompRH");
     rsp = new SolrQueryResponse();
     rsp.addResponseHeader(new SimpleOrderedMap());
     req = new LocalSolrQueryRequest(core, params);
@@ -377,7 +377,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
     // Testing return multiple collations with expanded collation response
     // format.
     params.add(SpellingParams.SPELLCHECK_COLLATE_EXTENDED_RESULTS, "true");
-    handler = core.getRequestHandler("spellCheckCompRH");
+    handler = core.getRequestHandler("/spellCheckCompRH");
     rsp = new SolrQueryResponse();
     rsp.addResponseHeader(new SimpleOrderedMap());
     req = new LocalSolrQueryRequest(core, params);
@@ -430,7 +430,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
 
     //Because a FilterQuery is applied which removes doc id#1 from possible hits, we would
     //not want the collations to return us "lowerfilt:(+faith +hope +loaves)" as this only matches doc id#1.
-    SolrRequestHandler handler = core.getRequestHandler("spellCheckCompRH");
+    SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH");
     SolrQueryResponse rsp = new SolrQueryResponse();
     rsp.addResponseHeader(new SimpleOrderedMap());
     SolrQueryRequest req = new LocalSolrQueryRequest(core, params);
@@ -451,7 +451,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
       assertQ(
         req(
           "q", "teststop:(flew AND form AND heathrow)",
-          "qt", "spellCheckCompRH",
+          "qt", "/spellCheckCompRH",
           "indent", "true",
           SpellCheckComponent.COMPONENT_NAME, "true",
           SpellCheckComponent.SPELLCHECK_BUILD, "true",
@@ -479,7 +479,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
       assertQ(
         req(
           "q", "teststop:(june AND customs)",
-          "qt", "spellCheckCompRH",
+          "qt", "/spellCheckCompRH",
           "indent", "true",
           SpellCheckComponent.COMPONENT_NAME, "true",
           SpellCheckComponent.SPELLCHECK_DICT, dictionary[i],
@@ -500,8 +500,9 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
         "//lst[@name='spellcheck']/lst[@name='collations']/lst[@name='collation']/lst[@name='misspellingsAndCorrections']/str[@name='june']='jane'"
       );
       //SOLR-5090, alternativeTermCount==0 was being evaluated, sometimes would throw NPE
-      assertQ(req("q", "teststop:(june customs)", "mm", "2", "qt",
-          "spellCheckCompRH", "indent", "true",
+      assertQ(req("q", "teststop:(june customs)", "mm", "2",
+          "qt", "/spellCheckCompRH",
+          "indent", "true",
           SpellCheckComponent.COMPONENT_NAME, "true",
           SpellCheckComponent.SPELLCHECK_DICT, dictionary[i],
           SpellCheckComponent.SPELLCHECK_COUNT, "10",
@@ -522,7 +523,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
        SpellingParams.SPELLCHECK_MAX_COLLATION_TRIES, "1",
        SpellingParams.SPELLCHECK_MAX_COLLATIONS, "1",
        SpellingParams.SPELLCHECK_COLLATE_EXTENDED_RESULTS, "true",          
-       "qt", "spellCheckCompRH");       
+       "qt", "/spellCheckCompRH");
 
     // default case, no SPELLCHECK_COLLATE_MAX_COLLECT_DOCS should be exact num hits
     assertQ(req(reusedParams, 
@@ -589,7 +590,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
     params.add(SpellCheckComponent.SPELLCHECK_MAX_COLLATION_TRIES, "0");
     params.add(SpellCheckComponent.SPELLCHECK_MAX_COLLATIONS, "2");
     params.add(CommonParams.Q, "lowerfilt:(+fauth)");
-    SolrRequestHandler handler = core.getRequestHandler("spellCheckCompRH");
+    SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH");
     SolrQueryResponse rsp = new SolrQueryResponse();
     rsp.addResponseHeader(new SimpleOrderedMap());
     SolrQueryRequest req = new LocalSolrQueryRequest(core, params);
@@ -618,7 +619,7 @@ public class SpellCheckCollatorTest extends SolrTestCaseJ4 {
     params.add(CommonParams.Q, "lowerfilt:(+fauth)");
     params.add(CommonParams.SORT, "id asc");
     params.add(CursorMarkParams.CURSOR_MARK_PARAM, CursorMarkParams.CURSOR_MARK_START);
-    SolrRequestHandler handler = core.getRequestHandler("spellCheckCompRH");
+    SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH");
     SolrQueryResponse rsp = new SolrQueryResponse();
     rsp.addResponseHeader(new SimpleOrderedMap());
     SolrQueryRequest req = new LocalSolrQueryRequest(core, params);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/82a44beb/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorWithCollapseTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorWithCollapseTest.java b/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorWithCollapseTest.java
index f985b41..fe8e787 100644
--- a/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorWithCollapseTest.java
+++ b/solr/core/src/test/org/apache/solr/spelling/SpellCheckCollatorWithCollapseTest.java
@@ -57,7 +57,7 @@ public class SpellCheckCollatorWithCollapseTest  extends SolrTestCaseJ4 {
             SpellingParams.SPELLCHECK_MAX_COLLATION_TRIES, "5",
             SpellingParams.SPELLCHECK_MAX_COLLATIONS, "1",
             CommonParams.Q, "a_s:lpve",
-            CommonParams.QT, "spellCheckCompRH_Direct",
+            CommonParams.QT, "/spellCheckCompRH_Direct",
             SpellingParams.SPELLCHECK_COLLATE_MAX_COLLECT_DOCS, "5",
             CommonParams.FQ, "{!collapse field=group_i}",
             "expand", "true"),


[53/53] [abbrv] lucene-solr:feature/autoscaling: Merge branch 'master' into feature/autoscaling

Posted by sh...@apache.org.
Merge branch 'master' into feature/autoscaling

# Conflicts:
#	solr/CHANGES.txt
#	solr/core/src/java/org/apache/solr/cloud/Assign.java


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/2e19a94f
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/2e19a94f
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/2e19a94f

Branch: refs/heads/feature/autoscaling
Commit: 2e19a94fcb95308c709b56d4cd378f64b027f4ef
Parents: 8e0247e 8218a5b
Author: Shalin Shekhar Mangar <sh...@apache.org>
Authored: Tue Jul 4 06:49:13 2017 +0530
Committer: Shalin Shekhar Mangar <sh...@apache.org>
Committed: Tue Jul 4 06:49:13 2017 +0530

----------------------------------------------------------------------
 README.md                                       |  103 +
 README.txt                                      |   13 -
 .../lucene/classification/classification.iml    |    1 -
 dev-tools/scripts/smokeTestRelease.py           |   12 +-
 lucene/CHANGES.txt                              |    8 +
 .../analysis/custom/TestCustomAnalyzer.java     |    8 +-
 .../lucene50/Lucene50SegmentInfoFormat.java     |   90 -
 .../apache/lucene/codecs/lucene50/package.html  |   25 -
 .../codecs/lucene53/Lucene53NormsFormat.java    |   91 -
 .../codecs/lucene53/Lucene53NormsProducer.java  |  236 --
 .../lucene/codecs/lucene53/package-info.java    |   23 -
 .../lucene54/Lucene54DocValuesConsumer.java     |  797 -----
 .../lucene54/Lucene54DocValuesFormat.java       |  186 -
 .../lucene54/Lucene54DocValuesProducer.java     | 1803 ----------
 .../lucene/codecs/lucene54/package-info.java    |  403 ---
 .../lucene/codecs/lucene60/Lucene60Codec.java   |  177 -
 .../apache/lucene/codecs/lucene60/package.html  |   25 -
 .../lucene/codecs/lucene62/Lucene62Codec.java   |  176 -
 .../apache/lucene/codecs/lucene62/package.html  |   25 -
 .../apache/lucene/index/FixBrokenOffsets.java   |  138 -
 .../java/org/apache/lucene/index/package.html   |   27 -
 .../services/org.apache.lucene.codecs.Codec     |    2 -
 .../org.apache.lucene.codecs.DocValuesFormat    |    1 -
 .../lucene50/Lucene50RWSegmentInfoFormat.java   |  125 -
 .../lucene50/TestLucene50SegmentInfoFormat.java |   50 -
 .../codecs/lucene53/Lucene53NormsConsumer.java  |  159 -
 .../codecs/lucene53/Lucene53RWNormsFormat.java  |   31 -
 .../lucene53/TestLucene53NormsFormat.java       |   44 -
 .../lucene54/TestLucene54DocValuesFormat.java   |  640 ----
 .../lucene/codecs/lucene60/Lucene60RWCodec.java |   38 -
 .../lucene/codecs/lucene62/Lucene62RWCodec.java |   44 -
 .../lucene62/Lucene62RWSegmentInfoFormat.java   |  193 --
 .../lucene62/TestLucene62SegmentInfoFormat.java |   48 -
 .../index/TestBackwardsCompatibility.java       |   64 +-
 .../lucene/index/TestFixBrokenOffsets.java      |  112 -
 .../lucene/index/TestIndexWriterOnOldIndex.java |    7 +-
 .../lucene/index/TestManyPointsInOldIndex.java  |    1 +
 .../org/apache/lucene/index/dvupdates.6.0.0.zip |  Bin 3420 -> 0 bytes
 .../org/apache/lucene/index/empty.6.0.0.zip     |  Bin 225 -> 0 bytes
 .../org/apache/lucene/index/index.6.0.0-cfs.zip |  Bin 15807 -> 0 bytes
 .../apache/lucene/index/index.6.0.0-nocfs.zip   |  Bin 15806 -> 0 bytes
 .../org/apache/lucene/index/index.6.0.1-cfs.zip |  Bin 15820 -> 0 bytes
 .../apache/lucene/index/index.6.0.1-nocfs.zip   |  Bin 15823 -> 0 bytes
 .../org/apache/lucene/index/index.6.1.0-cfs.zip |  Bin 15803 -> 0 bytes
 .../apache/lucene/index/index.6.1.0-nocfs.zip   |  Bin 15829 -> 0 bytes
 .../org/apache/lucene/index/index.6.2.0-cfs.zip |  Bin 15880 -> 0 bytes
 .../apache/lucene/index/index.6.2.0-nocfs.zip   |  Bin 15867 -> 0 bytes
 .../org/apache/lucene/index/index.6.2.1-cfs.zip |  Bin 15851 -> 0 bytes
 .../apache/lucene/index/index.6.2.1-nocfs.zip   |  Bin 15845 -> 0 bytes
 .../org/apache/lucene/index/index.6.3.0-cfs.zip |  Bin 15869 -> 0 bytes
 .../apache/lucene/index/index.6.3.0-nocfs.zip   |  Bin 15876 -> 0 bytes
 .../org/apache/lucene/index/index.6.4.0-cfs.zip |  Bin 15829 -> 0 bytes
 .../apache/lucene/index/index.6.4.0-nocfs.zip   |  Bin 15831 -> 0 bytes
 .../org/apache/lucene/index/index.6.4.1-cfs.zip |  Bin 15848 -> 0 bytes
 .../apache/lucene/index/index.6.4.1-nocfs.zip   |  Bin 15838 -> 0 bytes
 .../org/apache/lucene/index/index.6.4.2-cfs.zip |  Bin 15856 -> 0 bytes
 .../apache/lucene/index/index.6.4.2-nocfs.zip   |  Bin 15886 -> 0 bytes
 .../org/apache/lucene/index/index.6.5.0-cfs.zip |  Bin 15832 -> 0 bytes
 .../apache/lucene/index/index.6.5.0-nocfs.zip   |  Bin 15836 -> 0 bytes
 .../org/apache/lucene/index/index.6.5.1-cfs.zip |  Bin 15842 -> 0 bytes
 .../apache/lucene/index/index.6.5.1-nocfs.zip   |  Bin 15827 -> 0 bytes
 .../org/apache/lucene/index/index.6.6.0-cfs.zip |  Bin 15875 -> 0 bytes
 .../apache/lucene/index/index.6.6.0-nocfs.zip   |  Bin 15883 -> 0 bytes
 .../lucene/index/index.630.brokenoffsets.zip    |  Bin 3203 -> 0 bytes
 .../lucene/index/index.single-empty-doc.630.zip |  Bin 1363 -> 0 bytes
 .../org/apache/lucene/index/manypointsindex.zip |  Bin 3739 -> 0 bytes
 .../org/apache/lucene/index/maxposindex.zip     |  Bin 1702 -> 0 bytes
 .../org/apache/lucene/index/moreterms.6.0.0.zip |  Bin 157215 -> 0 bytes
 .../org/apache/lucene/index/sorted.6.2.0.zip    |  Bin 157007 -> 0 bytes
 .../org/apache/lucene/index/sorted.6.2.1.zip    |  Bin 100974 -> 0 bytes
 .../org/apache/lucene/index/sorted.6.3.0.zip    |  Bin 71090 -> 0 bytes
 .../lucene/index/unsupported.6.0.0-cfs.zip      |  Bin 0 -> 15807 bytes
 .../lucene/index/unsupported.6.0.0-nocfs.zip    |  Bin 0 -> 15806 bytes
 .../lucene/index/unsupported.6.0.1-cfs.zip      |  Bin 0 -> 15820 bytes
 .../lucene/index/unsupported.6.0.1-nocfs.zip    |  Bin 0 -> 15823 bytes
 .../lucene/index/unsupported.6.1.0-cfs.zip      |  Bin 0 -> 15803 bytes
 .../lucene/index/unsupported.6.1.0-nocfs.zip    |  Bin 0 -> 15829 bytes
 .../lucene/index/unsupported.6.2.0-cfs.zip      |  Bin 0 -> 15880 bytes
 .../lucene/index/unsupported.6.2.0-nocfs.zip    |  Bin 0 -> 15867 bytes
 .../lucene/index/unsupported.6.2.1-cfs.zip      |  Bin 0 -> 15851 bytes
 .../lucene/index/unsupported.6.2.1-nocfs.zip    |  Bin 0 -> 15845 bytes
 .../lucene/index/unsupported.6.3.0-cfs.zip      |  Bin 0 -> 15869 bytes
 .../lucene/index/unsupported.6.3.0-nocfs.zip    |  Bin 0 -> 15876 bytes
 .../lucene/index/unsupported.6.4.0-cfs.zip      |  Bin 0 -> 15829 bytes
 .../lucene/index/unsupported.6.4.0-nocfs.zip    |  Bin 0 -> 15831 bytes
 .../lucene/index/unsupported.6.4.1-cfs.zip      |  Bin 0 -> 15848 bytes
 .../lucene/index/unsupported.6.4.1-nocfs.zip    |  Bin 0 -> 15838 bytes
 .../lucene/index/unsupported.6.4.2-cfs.zip      |  Bin 0 -> 15856 bytes
 .../lucene/index/unsupported.6.4.2-nocfs.zip    |  Bin 0 -> 15886 bytes
 .../lucene/index/unsupported.6.5.0-cfs.zip      |  Bin 0 -> 15832 bytes
 .../lucene/index/unsupported.6.5.0-nocfs.zip    |  Bin 0 -> 15836 bytes
 .../lucene/index/unsupported.6.5.1-cfs.zip      |  Bin 0 -> 15842 bytes
 .../lucene/index/unsupported.6.5.1-nocfs.zip    |  Bin 0 -> 15827 bytes
 .../lucene/index/unsupported.6.6.0-cfs.zip      |  Bin 0 -> 15875 bytes
 .../lucene/index/unsupported.6.6.0-nocfs.zip    |  Bin 0 -> 15883 bytes
 lucene/classification/build.xml                 |    6 +-
 .../classification/KNearestFuzzyClassifier.java |   29 +-
 .../classification/utils/NearestFuzzyQuery.java |  333 ++
 .../KNearestFuzzyClassifierTest.java            |    2 +-
 .../lucene/index/BufferedUpdatesStream.java     |    3 +
 .../org/apache/lucene/index/CheckIndex.java     |   47 +-
 .../apache/lucene/index/DocumentsWriter.java    |   20 +-
 .../lucene/index/DocumentsWriterFlushQueue.java |    4 +
 .../lucene/index/FrozenBufferedUpdates.java     |   25 +-
 .../index/IndexFormatTooOldException.java       |    2 +-
 .../org/apache/lucene/index/IndexWriter.java    |   13 +-
 .../apache/lucene/index/ReadersAndUpdates.java  |    8 +-
 .../org/apache/lucene/index/SegmentInfos.java   |    2 +-
 .../search/similarities/BM25Similarity.java     |   38 +-
 .../search/similarities/SimilarityBase.java     |   25 +-
 .../search/similarities/TFIDFSimilarity.java    |   25 +-
 .../java/org/apache/lucene/util/Version.java    |  101 +-
 .../lucene/index/TestIndexManyDocuments.java    |   71 +
 .../apache/lucene/index/TestSegmentInfos.java   |   14 +-
 .../search/similarities/TestBM25Similarity.java |   42 -
 .../similarities/TestClassicSimilarity.java     |   59 +-
 .../search/similarities/TestSimilarityBase.java |   39 -
 .../org/apache/lucene/util/TestVersion.java     |   71 +-
 .../lucene/search/join/BlockJoinSelector.java   |  328 +-
 .../lucene/search/join/ToParentDocValues.java   |  296 ++
 .../search/join/TestBlockJoinSelector.java      |   76 +-
 .../apache/lucene/index/memory/MemoryIndex.java |    6 +-
 .../lucene/index/memory/TestMemoryIndex.java    |   40 +
 .../java/org/apache/lucene/util/TestUtil.java   |    4 +-
 lucene/version.properties                       |    2 +-
 solr/CHANGES.txt                                |   62 +
 solr/bin/solr                                   |   12 +-
 solr/bin/solr.cmd                               |    4 +-
 solr/common-build.xml                           |    5 +-
 .../collection1/conf/solrconfig-icucollate.xml  |    2 +-
 .../apache/solr/analytics/AnalyticsDriver.java  |   82 +
 .../solr/analytics/AnalyticsExpression.java     |   64 +
 .../analytics/AnalyticsGroupingManager.java     |  239 ++
 .../solr/analytics/AnalyticsRequestManager.java |  279 ++
 .../solr/analytics/AnalyticsRequestParser.java  |  549 +++
 .../solr/analytics/ExpressionFactory.java       |  821 +++++
 .../analytics/accumulator/BasicAccumulator.java |  173 -
 .../accumulator/FacetingAccumulator.java        |  730 ----
 .../analytics/accumulator/ValueAccumulator.java |   40 -
 .../facet/FacetValueAccumulator.java            |   35 -
 .../facet/FieldFacetAccumulator.java            |  153 -
 .../facet/QueryFacetAccumulator.java            |   72 -
 .../facet/RangeFacetAccumulator.java            |   49 -
 .../accumulator/facet/package-info.java         |   24 -
 .../analytics/accumulator/package-info.java     |   23 -
 .../analytics/expression/BaseExpression.java    |   88 -
 .../expression/DualDelegateExpression.java      |   99 -
 .../solr/analytics/expression/Expression.java   |   39 -
 .../analytics/expression/ExpressionFactory.java |  175 -
 .../expression/MultiDelegateExpression.java     |  131 -
 .../expression/SingleDelegateExpression.java    |   88 -
 .../solr/analytics/expression/package-info.java |   23 -
 .../analytics/facet/AbstractSolrQueryFacet.java |  104 +
 .../solr/analytics/facet/AnalyticsFacet.java    |  166 +
 .../apache/solr/analytics/facet/PivotFacet.java |  114 +
 .../apache/solr/analytics/facet/PivotNode.java  |  263 ++
 .../apache/solr/analytics/facet/QueryFacet.java |   64 +
 .../apache/solr/analytics/facet/RangeFacet.java |  119 +
 .../solr/analytics/facet/SortableFacet.java     |  178 +
 .../solr/analytics/facet/StreamingFacet.java    |   32 +
 .../apache/solr/analytics/facet/ValueFacet.java |   60 +
 .../facet/compare/ConstantComparator.java       |   30 +
 .../facet/compare/DelegatingComparator.java     |   62 +
 .../facet/compare/ExpressionComparator.java     |   46 +
 .../facet/compare/FacetResultsComparator.java   |   52 +
 .../facet/compare/FacetValueComparator.java     |   37 +
 .../analytics/facet/compare/package-info.java   |   23 +
 .../solr/analytics/facet/package-info.java      |   23 +
 .../function/ExpressionCalculator.java          |   71 +
 .../MergingReductionCollectionManager.java      |   46 +
 .../function/ReductionCollectionManager.java    |  320 ++
 .../analytics/function/ReductionFunction.java   |   37 +
 .../function/field/AnalyticsField.java          |   69 +
 .../analytics/function/field/BooleanField.java  |  111 +
 .../function/field/BooleanMultiField.java       |  101 +
 .../analytics/function/field/DateField.java     |  108 +
 .../function/field/DateMultiField.java          |   47 +
 .../function/field/DateMultiPointField.java     |   47 +
 .../analytics/function/field/DoubleField.java   |   97 +
 .../function/field/DoubleMultiField.java        |   85 +
 .../function/field/DoubleMultiPointField.java   |   81 +
 .../analytics/function/field/FloatField.java    |  108 +
 .../function/field/FloatMultiField.java         |   91 +
 .../function/field/FloatMultiPointField.java    |   87 +
 .../solr/analytics/function/field/IntField.java |  129 +
 .../analytics/function/field/IntMultiField.java |  100 +
 .../function/field/IntMultiPointField.java      |   96 +
 .../analytics/function/field/LongField.java     |  107 +
 .../function/field/LongMultiField.java          |   89 +
 .../function/field/LongMultiPointField.java     |   86 +
 .../analytics/function/field/StringField.java   |   85 +
 .../function/field/StringMultiField.java        |   66 +
 .../analytics/function/field/package-info.java  |   23 +
 .../function/mapping/AbsoluteValueFunction.java |   54 +
 .../analytics/function/mapping/AddFunction.java |   68 +
 .../function/mapping/BottomFunction.java        |  163 +
 .../function/mapping/CompareFunction.java       |  614 ++++
 .../function/mapping/ConcatFunction.java        |   78 +
 .../function/mapping/DateMathFunction.java      |  156 +
 .../function/mapping/DateParseFunction.java     |  210 ++
 .../function/mapping/DivideFunction.java        |   51 +
 .../function/mapping/FillMissingFunction.java   |  842 +++++
 .../function/mapping/FilterFunction.java        |  722 ++++
 .../analytics/function/mapping/IfFunction.java  |  892 +++++
 .../function/mapping/JoinFunction.java          |   57 +
 .../function/mapping/LambdaFunction.java        | 3220 ++++++++++++++++++
 .../analytics/function/mapping/LogFunction.java |   51 +
 .../function/mapping/LogicFunction.java         |   90 +
 .../function/mapping/MultFunction.java          |   68 +
 .../function/mapping/NegateFunction.java        |   58 +
 .../mapping/NumericConvertFunction.java         |  256 ++
 .../function/mapping/PowerFunction.java         |   51 +
 .../function/mapping/RemoveFunction.java        |  796 +++++
 .../function/mapping/ReplaceFunction.java       |  914 +++++
 .../function/mapping/StringCastFunction.java    |   42 +
 .../function/mapping/SubtractFunction.java      |   51 +
 .../analytics/function/mapping/TopFunction.java |  163 +
 .../function/mapping/package-info.java          |   23 +
 .../solr/analytics/function/package-info.java   |   23 +
 .../function/reduction/CountFunction.java       |   87 +
 .../function/reduction/DocCountFunction.java    |   87 +
 .../function/reduction/MaxFunction.java         |  298 ++
 .../function/reduction/MedianFunction.java      |  200 ++
 .../function/reduction/MinFunction.java         |  298 ++
 .../function/reduction/MissingFunction.java     |   76 +
 .../function/reduction/OrdinalFunction.java     |  386 +++
 .../function/reduction/PercentileFunction.java  |  337 ++
 .../function/reduction/SumFunction.java         |   92 +
 .../function/reduction/UniqueFunction.java      |  101 +
 .../function/reduction/data/CountCollector.java |  188 +
 .../function/reduction/data/MaxCollector.java   |  476 +++
 .../function/reduction/data/MinCollector.java   |  476 +++
 .../function/reduction/data/ReductionData.java  |   24 +
 .../reduction/data/ReductionDataCollector.java  |  183 +
 .../reduction/data/SortedListCollector.java     |  363 ++
 .../function/reduction/data/SumCollector.java   |  124 +
 .../reduction/data/UniqueCollector.java         |  241 ++
 .../function/reduction/data/package-info.java   |   24 +
 .../function/reduction/package-info.java        |   23 +
 .../org/apache/solr/analytics/package-info.java |   23 +
 .../request/AbstractFieldFacetRequest.java      |   42 -
 .../request/AnalyticsContentHandler.java        |  314 --
 .../analytics/request/AnalyticsRequest.java     |  114 -
 .../request/AnalyticsRequestFactory.java        |  308 --
 .../solr/analytics/request/AnalyticsStats.java  |  138 -
 .../analytics/request/ExpressionRequest.java    |   72 -
 .../solr/analytics/request/FacetRequest.java    |   26 -
 .../analytics/request/FieldFacetRequest.java    |  172 -
 .../analytics/request/QueryFacetRequest.java    |   74 -
 .../analytics/request/RangeFacetRequest.java    |  129 -
 .../solr/analytics/request/package-info.java    |   24 -
 .../AbstractDelegatingStatsCollector.java       |   74 -
 .../statistics/MedianStatsCollector.java        |   76 -
 .../statistics/MinMaxStatsCollector.java        |  114 -
 .../statistics/NumericStatsCollector.java       |   68 -
 .../statistics/PercentileStatsCollector.java    |   80 -
 .../analytics/statistics/StatsCollector.java    |   69 -
 .../StatsCollectorSupplierFactory.java          |  646 ----
 .../statistics/UniqueStatsCollector.java        |   53 -
 .../solr/analytics/statistics/package-info.java |   24 -
 .../stream/AnalyticsShardRequestManager.java    |  245 ++
 .../stream/AnalyticsShardResponseParser.java    |   89 +
 .../solr/analytics/stream/package-info.java     |   23 +
 .../reservation/BooleanArrayReservation.java    |   44 +
 .../reservation/BooleanCheckedReservation.java  |   42 +
 .../stream/reservation/BooleanReservation.java  |   42 +
 .../reservation/DoubleArrayReservation.java     |   44 +
 .../reservation/DoubleCheckedReservation.java   |   43 +
 .../stream/reservation/DoubleReservation.java   |   42 +
 .../reservation/FloatArrayReservation.java      |   44 +
 .../reservation/FloatCheckedReservation.java    |   43 +
 .../stream/reservation/FloatReservation.java    |   42 +
 .../stream/reservation/IntArrayReservation.java |   42 +
 .../reservation/IntCheckedReservation.java      |   43 +
 .../stream/reservation/IntReservation.java      |   42 +
 .../reservation/LongArrayReservation.java       |   45 +
 .../reservation/LongCheckedReservation.java     |   43 +
 .../stream/reservation/LongReservation.java     |   42 +
 .../ReductionCheckedDataReservation.java        |   35 +
 .../ReductionDataArrayReservation.java          |   36 +
 .../reservation/ReductionDataReservation.java   |   53 +
 .../reservation/StringArrayReservation.java     |   45 +
 .../reservation/StringCheckedReservation.java   |   44 +
 .../stream/reservation/StringReservation.java   |   43 +
 .../stream/reservation/package-info.java        |   24 +
 .../read/BooleanCheckedDataReader.java          |   33 +
 .../read/BooleanDataArrayReader.java            |   36 +
 .../reservation/read/BooleanDataReader.java     |   33 +
 .../read/DoubleCheckedDataReader.java           |   32 +
 .../reservation/read/DoubleDataArrayReader.java |   35 +
 .../reservation/read/DoubleDataReader.java      |   32 +
 .../read/FloatCheckedDataReader.java            |   33 +
 .../reservation/read/FloatDataArrayReader.java  |   36 +
 .../reservation/read/FloatDataReader.java       |   33 +
 .../reservation/read/IntCheckedDataReader.java  |   32 +
 .../reservation/read/IntDataArrayReader.java    |   34 +
 .../stream/reservation/read/IntDataReader.java  |   32 +
 .../reservation/read/LongCheckedDataReader.java |   32 +
 .../reservation/read/LongDataArrayReader.java   |   35 +
 .../stream/reservation/read/LongDataReader.java |   32 +
 .../read/ReductionCheckedDataReader.java        |   54 +
 .../read/ReductionDataArrayReader.java          |   54 +
 .../reservation/read/ReductionDataReader.java   |   40 +
 .../read/StringCheckedDataReader.java           |   32 +
 .../reservation/read/StringDataArrayReader.java |   35 +
 .../reservation/read/StringDataReader.java      |   34 +
 .../stream/reservation/read/package-info.java   |   24 +
 .../write/BooleanCheckedDataWriter.java         |   33 +
 .../write/BooleanDataArrayWriter.java           |   36 +
 .../reservation/write/BooleanDataWriter.java    |   33 +
 .../write/DoubleCheckedDataWriter.java          |   34 +
 .../write/DoubleDataArrayWriter.java            |   36 +
 .../reservation/write/DoubleDataWriter.java     |   33 +
 .../write/FloatCheckedDataWriter.java           |   35 +
 .../reservation/write/FloatDataArrayWriter.java |   37 +
 .../reservation/write/FloatDataWriter.java      |   34 +
 .../reservation/write/IntCheckedDataWriter.java |   34 +
 .../reservation/write/IntDataArrayWriter.java   |   35 +
 .../stream/reservation/write/IntDataWriter.java |   33 +
 .../write/LongCheckedDataWriter.java            |   34 +
 .../reservation/write/LongDataArrayWriter.java  |   36 +
 .../reservation/write/LongDataWriter.java       |   33 +
 .../write/ReductionCheckedDataWriter.java       |   60 +
 .../write/ReductionDataArrayWriter.java         |   53 +
 .../reservation/write/ReductionDataWriter.java  |   40 +
 .../write/StringCheckedDataWriter.java          |   34 +
 .../write/StringDataArrayWriter.java            |   36 +
 .../reservation/write/StringDataWriter.java     |   37 +
 .../stream/reservation/write/package-info.java  |   24 +
 .../solr/analytics/util/AnalyticsParams.java    |  114 -
 .../solr/analytics/util/AnalyticsParsers.java   |  171 -
 .../util/AnalyticsResponseHeadings.java         |   36 +
 .../analytics/util/FacetRangeGenerator.java     |  356 ++
 .../solr/analytics/util/MedianCalculator.java   |    4 +
 .../solr/analytics/util/OldAnalyticsParams.java |  177 +
 .../util/OldAnalyticsRequestConverter.java      |  177 +
 .../solr/analytics/util/OrdinalCalculator.java  |  173 +
 .../analytics/util/PercentileCalculator.java    |  176 -
 .../analytics/util/RangeEndpointCalculator.java |  354 --
 .../util/function/BooleanConsumer.java          |   59 +
 .../analytics/util/function/FloatConsumer.java  |   59 +
 .../analytics/util/function/FloatSupplier.java  |   41 +
 .../analytics/util/function/package-info.java   |   23 +
 .../solr/analytics/util/package-info.java       |    3 +-
 .../AbsoluteValueDoubleFunction.java            |   60 -
 .../util/valuesource/AddDoubleFunction.java     |   49 -
 .../util/valuesource/ConstDateSource.java       |  112 -
 .../util/valuesource/ConstDoubleSource.java     |  104 -
 .../util/valuesource/ConstStringSource.java     |   50 -
 .../util/valuesource/DateFieldSource.java       |  131 -
 .../util/valuesource/DateMathFunction.java      |   71 -
 .../util/valuesource/DivDoubleFunction.java     |   48 -
 .../util/valuesource/DualDoubleFunction.java    |   94 -
 .../util/valuesource/FilterFieldSource.java     |  154 -
 .../util/valuesource/LogDoubleFunction.java     |   43 -
 .../util/valuesource/MultiDateFunction.java     |  133 -
 .../util/valuesource/MultiDoubleFunction.java   |  119 -
 .../valuesource/MultiplyDoubleFunction.java     |   49 -
 .../util/valuesource/NegateDoubleFunction.java  |   55 -
 .../util/valuesource/PowDoubleFunction.java     |   48 -
 .../util/valuesource/ReverseStringFunction.java |   45 -
 .../util/valuesource/SingleDoubleFunction.java  |   79 -
 .../util/valuesource/SingleStringFunction.java  |  117 -
 .../util/valuesource/package-info.java          |   24 -
 .../solr/analytics/value/AnalyticsValue.java    |   55 +
 .../analytics/value/AnalyticsValueStream.java   |  133 +
 .../solr/analytics/value/BooleanValue.java      |   85 +
 .../analytics/value/BooleanValueStream.java     |   55 +
 .../solr/analytics/value/ComparableValue.java   |   32 +
 .../apache/solr/analytics/value/DateValue.java  |  102 +
 .../solr/analytics/value/DateValueStream.java   |   62 +
 .../solr/analytics/value/DoubleValue.java       |   86 +
 .../solr/analytics/value/DoubleValueStream.java |   54 +
 .../apache/solr/analytics/value/FloatValue.java |   97 +
 .../solr/analytics/value/FloatValueStream.java  |   60 +
 .../apache/solr/analytics/value/IntValue.java   |  121 +
 .../solr/analytics/value/IntValueStream.java    |   71 +
 .../apache/solr/analytics/value/LongValue.java  |   97 +
 .../solr/analytics/value/LongValueStream.java   |   60 +
 .../solr/analytics/value/StringValue.java       |   71 +
 .../solr/analytics/value/StringValueStream.java |   49 +
 .../value/constant/ConstantBooleanValue.java    |   91 +
 .../value/constant/ConstantDateValue.java       |  103 +
 .../value/constant/ConstantDoubleValue.java     |   90 +
 .../value/constant/ConstantFloatValue.java      |   99 +
 .../value/constant/ConstantIntValue.java        |  118 +
 .../value/constant/ConstantLongValue.java       |  100 +
 .../value/constant/ConstantStringValue.java     |   79 +
 .../analytics/value/constant/ConstantValue.java |  128 +
 .../analytics/value/constant/package-info.java  |   23 +
 .../solr/analytics/value/package-info.java      |   23 +
 .../apache/solr/handler/AnalyticsHandler.java   |  147 +
 .../handler/component/AnalyticsComponent.java   |  119 +-
 .../java/org/apache/solr/handler/package.html   |   28 +
 .../response/AnalyticsShardResponseWriter.java  |   91 +
 .../java/org/apache/solr/response/package.html  |   28 +
 .../analytics/requestFiles/expressions.txt      |   70 -
 .../analytics/requestFiles/fieldFacetExtras.txt |   66 -
 .../analytics/requestFiles/fieldFacets.txt      |  132 -
 .../analytics/requestFiles/functions.txt        |   62 -
 .../analytics/requestFiles/noFacets.txt         |   74 -
 .../analytics/requestFiles/queryFacets.txt      |   45 -
 .../analytics/requestFiles/rangeFacets.txt      |  170 -
 .../analytics/requestXMLFiles/expressions.xml   |  285 --
 .../requestXMLFiles/fieldFacetExtras.xml        |  101 -
 .../analytics/requestXMLFiles/fieldFacets.xml   |  496 ---
 .../analytics/requestXMLFiles/functions.xml     |  246 --
 .../analytics/requestXMLFiles/noFacets.xml      |  310 --
 .../analytics/requestXMLFiles/queryFacets.xml   |   94 -
 .../analytics/requestXMLFiles/rangeFacets.xml   |  319 --
 .../test-files/solr/analytics/expressions.txt   |   65 +
 .../test-files/solr/analytics/facetSorting.txt  |    4 +
 .../solr/analytics/fieldFacetExtras.txt         |   66 +
 .../test-files/solr/analytics/fieldFacets.txt   |  132 +
 .../src/test-files/solr/analytics/functions.txt |   57 +
 .../src/test-files/solr/analytics/noFacets.txt  |   74 +
 .../test-files/solr/analytics/queryFacets.txt   |   27 +
 .../test-files/solr/analytics/rangeFacets.txt   |  161 +
 .../solr/collection1/conf/schema-analytics.xml  |    7 +-
 .../collection1/conf/solrconfig-analytics.xml   |   42 +
 .../solr/collection1/conf/solrconfig-basic.xml  |   40 -
 .../configsets/cloud-analytics/conf/schema.xml  |   63 +
 .../cloud-analytics/conf/solrconfig.xml         |   59 +
 .../AbstractAnalyticsStatsCloudTest.java        |  187 +
 .../analytics/AbstractAnalyticsStatsTest.java   |   14 +-
 .../apache/solr/analytics/NoFacetCloudTest.java |  557 +++
 .../org/apache/solr/analytics/NoFacetTest.java  |   46 +-
 .../analytics/expression/ExpressionTest.java    |   70 +-
 .../solr/analytics/expression/FunctionTest.java |  221 ++
 .../facet/AbstractAnalyticsFacetCloudTest.java  |  284 ++
 .../facet/AbstractAnalyticsFacetTest.java       |   37 +-
 .../solr/analytics/facet/FacetSortingTest.java  |   53 +
 .../analytics/facet/FieldFacetCloudTest.java    | 1214 +++++++
 .../facet/FieldFacetExtrasCloudTest.java        |  253 ++
 .../analytics/facet/FieldFacetExtrasTest.java   |    6 +-
 .../solr/analytics/facet/FieldFacetTest.java    |   63 +-
 .../analytics/facet/QueryFacetCloudTest.java    |  159 +
 .../solr/analytics/facet/QueryFacetTest.java    |   10 +-
 .../analytics/facet/RangeFacetCloudTest.java    |  588 ++++
 .../solr/analytics/facet/RangeFacetTest.java    |   43 +-
 .../util/valuesource/FunctionTest.java          |  233 --
 .../solr/collection1/conf/solrconfig.xml        |   20 +-
 .../clustering/ClusteringComponentTest.java     |    2 +-
 .../collection1/conf/dataimport-solrconfig.xml  |   40 +-
 .../conf/contentstream-solrconfig.xml           |   42 +-
 .../conf/dataimport-nodatasource-solrconfig.xml |   42 +-
 .../collection1/conf/dataimport-solrconfig.xml  |   42 +-
 .../solr/collection1/conf/solrconfig.xml        |   37 +-
 .../extraction/TestXLSXResponseWriter.java      |    2 +-
 .../conf/solrconfig-languageidentifier.xml      |    4 +-
 .../uima/solr/collection1/conf/solrconfig.xml   |   25 +-
 .../uima/uima-tokenizers-solrconfig.xml         |   15 +-
 .../src/java/org/apache/solr/cloud/Assign.java  |    1 -
 .../org/apache/solr/cloud/RecoveryStrategy.java |   27 +-
 .../org/apache/solr/core/CoreContainer.java     |   56 +-
 .../java/org/apache/solr/core/SolrConfig.java   |    3 +-
 .../src/java/org/apache/solr/core/SolrCore.java |    2 +-
 .../java/org/apache/solr/core/SolrCores.java    |   91 +-
 .../apache/solr/core/SolrResourceLoader.java    |    1 -
 .../solr/handler/MoreLikeThisHandler.java       |    2 +-
 .../apache/solr/handler/RequestHandlerBase.java |    1 -
 .../solr/handler/StandardRequestHandler.java    |   19 +-
 .../solr/handler/component/ResponseBuilder.java |    3 +
 .../solr/schema/FieldTypePluginLoader.java      |    6 +-
 .../org/apache/solr/schema/IndexSchema.java     |    4 +-
 .../apache/solr/schema/IndexSchemaFactory.java  |    9 +-
 .../similarities/SchemaSimilarityFactory.java   |    4 +-
 .../org/apache/solr/servlet/BaseSolrFilter.java |    3 +
 .../apache/solr/servlet/BaseSolrServlet.java    |    3 +
 .../org/apache/solr/servlet/HttpSolrCall.java   |   13 +-
 .../org/apache/solr/util/Java9InitHack.java     |   78 +
 .../org/apache/solr/util/SolrPluginUtils.java   |   12 +-
 .../org/apache/solr/util/TestInjection.java     |    2 +-
 .../resources/SystemCollectionSolrConfig.xml    |    2 +-
 .../collection1/conf/bad-error-solrconfig.xml   |    2 +-
 .../collection1/conf/bad-mpf-solrconfig.xml     |    2 +-
 .../conf/bad-schema-dup-fieldType.xml           |    4 +-
 .../collection1/conf/schema-binaryfield.xml     |   36 -
 .../collection1/conf/schema-copyfield-test.xml  |   34 +-
 .../collection1/conf/schema-customfield.xml     |   29 +-
 .../conf/schema-distributed-missing-sort.xml    |   28 +-
 .../solr/collection1/conf/schema-docValues.xml  |   10 +-
 .../conf/schema-docValuesFaceting.xml           |   10 +-
 .../collection1/conf/schema-docValuesJoin.xml   |   10 +-
 .../conf/schema-docValuesMissing.xml            |   10 +-
 .../collection1/conf/schema-docValuesMulti.xml  |   10 +-
 .../conf/schema-field-sort-values.xml           |    4 +-
 .../conf/schema-non-stored-docvalues.xml        |   47 +-
 .../conf/schema-not-required-unique-key.xml     |    1 -
 .../collection1/conf/schema-replication1.xml    |    1 -
 .../collection1/conf/schema-replication2.xml    |    1 -
 .../collection1/conf/schema-required-fields.xml |   34 +-
 .../solr/collection1/conf/schema-reversed.xml   |    5 +-
 .../collection1/conf/schema-sortingresponse.xml |   22 +-
 .../collection1/conf/schema-tokenizer-test.xml  |   21 +-
 .../solr/collection1/conf/schema-version-dv.xml |    5 +-
 .../collection1/conf/schema-version-indexed.xml |    5 +-
 .../solr/collection1/conf/schema15.xml          |   22 +-
 ...dd-schema-fields-update-processor-chains.xml |    2 +-
 .../conf/solrconfig-altdirectory.xml            |    2 +-
 .../conf/solrconfig-analytics-query.xml         |  227 +-
 .../solr/collection1/conf/solrconfig-basic.xml  |    2 +-
 .../conf/solrconfig-blockjoinfacetcomponent.xml |   11 +-
 .../conf/solrconfig-cache-enable-disable.xml    |    4 +-
 .../solr/collection1/conf/solrconfig-cdcr.xml   |    2 +-
 .../conf/solrconfig-cdcrupdatelog.xml           |    2 +-
 .../conf/solrconfig-classification.xml          |    2 +-
 .../conf/solrconfig-collapseqparser.xml         |  125 +-
 .../conf/solrconfig-components-name.xml         |    4 +-
 .../solrconfig-configurerecoverystrategy.xml    |    2 +-
 .../conf/solrconfig-customrecoverystrategy.xml  |    2 +-
 .../conf/solrconfig-delaying-component.xml      |    2 +-
 .../collection1/conf/solrconfig-delpolicy1.xml  |    2 +-
 .../collection1/conf/solrconfig-delpolicy2.xml  |    2 +-
 ...lrconfig-distrib-update-processor-chains.xml |    3 +-
 .../conf/solrconfig-doctransformers.xml         |    4 +-
 .../collection1/conf/solrconfig-elevate.xml     |    2 +-
 .../solrconfig-externalversionconstraint.xml    |    2 +-
 .../conf/solrconfig-functionquery.xml           |    4 +-
 .../solr/collection1/conf/solrconfig-hash.xml   |    4 +-
 .../collection1/conf/solrconfig-headers.xml     |    2 +-
 .../collection1/conf/solrconfig-highlight.xml   |    2 +-
 .../conf/solrconfig-implicitproperties.xml      |    2 +-
 .../conf/solrconfig-infixsuggesters.xml         |    2 +-
 .../conf/solrconfig-logmergepolicyfactory.xml   |    2 +-
 .../conf/solrconfig-managed-schema-test.xml     |    2 +-
 .../conf/solrconfig-managed-schema.xml          |    4 +-
 .../conf/solrconfig-master-throttled.xml        |    8 +-
 .../solr/collection1/conf/solrconfig-master.xml |    8 +-
 .../conf/solrconfig-master1-keepOneBackup.xml   |    4 +-
 .../collection1/conf/solrconfig-master1.xml     |    8 +-
 .../collection1/conf/solrconfig-master2.xml     |    8 +-
 .../collection1/conf/solrconfig-master3.xml     |    8 +-
 .../conf/solrconfig-mergepolicy-defaults.xml    |    2 +-
 .../conf/solrconfig-mergepolicy-legacy.xml      |    2 +-
 .../solrconfig-mergepolicyfactory-nocfs.xml     |    2 +-
 .../collection1/conf/solrconfig-nocache.xml     |    8 +-
 .../conf/solrconfig-nomergepolicyfactory.xml    |    2 +-
 .../collection1/conf/solrconfig-noopregen.xml   |    2 +-
 .../collection1/conf/solrconfig-paramset.xml    |    2 +-
 ...lrconfig-parsing-update-processor-chains.xml |    2 +-
 .../conf/solrconfig-phrasesuggest.xml           |    2 +-
 .../conf/solrconfig-plugcollector.xml           |   28 +-
 .../conf/solrconfig-postingshighlight.xml       |    2 +-
 .../conf/solrconfig-query-parser-init.xml       |    2 +-
 .../conf/solrconfig-querysender-noquery.xml     |    2 +-
 .../collection1/conf/solrconfig-querysender.xml |    8 +-
 .../collection1/conf/solrconfig-repeater.xml    |    8 +-
 .../collection1/conf/solrconfig-reqHandler.incl |    2 +-
 .../conf/solrconfig-response-log-component.xml  |   16 +-
 .../collection1/conf/solrconfig-schemaless.xml  |    2 +-
 .../conf/solrconfig-script-updateprocessor.xml  |    2 +-
 .../conf/solrconfig-searcher-listeners1.xml     |    2 +-
 .../solr/collection1/conf/solrconfig-slave.xml  |    8 +-
 .../solr/collection1/conf/solrconfig-slave1.xml |    8 +-
 .../conf/solrconfig-solcoreproperties.xml       |    2 +-
 .../solrconfig-sortingmergepolicyfactory.xml    |    4 +-
 .../conf/solrconfig-sortingresponse.xml         |    2 +-
 .../collection1/conf/solrconfig-spatial.xml     |    2 +-
 .../conf/solrconfig-spellcheckcomponent.xml     |   12 +-
 .../conf/solrconfig-spellchecker.xml            |    2 +-
 .../solr/collection1/conf/solrconfig-sql.xml    |    4 +-
 ...-suggestercomponent-context-filter-query.xml |    2 +-
 .../conf/solrconfig-suggestercomponent.xml      |    2 +-
 .../collection1/conf/solrconfig-test-misc.xml   |    4 +-
 .../conf/solrconfig-testxmlparser.xml           |    2 +-
 .../solrconfig-tieredmergepolicyfactory.xml     |    2 +-
 .../solr/collection1/conf/solrconfig-tlog.xml   |    5 +-
 ...nfig-uninvertdocvaluesmergepolicyfactory.xml |    2 +-
 .../conf/solrconfig-update-processor-chains.xml |    2 +-
 ...lrconfig-warmer-randommergepolicyfactory.xml |    2 +-
 .../solr/collection1/conf/solrconfig.xml        |   35 +-
 .../conf/solrconfig_SimpleTextCodec.xml         |    2 +-
 .../solr/collection1/conf/solrconfig_codec.xml  |    2 +-
 .../solr/collection1/conf/solrconfig_codec2.xml |    2 +-
 .../solr/collection1/conf/solrconfig_perf.xml   |    5 +-
 .../solr/configsets/_default/conf/currency.xml  |   67 +
 .../solr/configsets/_default/conf/elevate.xml   |   42 +
 .../_default/conf/lang/contractions_ca.txt      |    8 +
 .../_default/conf/lang/contractions_fr.txt      |   15 +
 .../_default/conf/lang/contractions_ga.txt      |    5 +
 .../_default/conf/lang/contractions_it.txt      |   23 +
 .../_default/conf/lang/hyphenations_ga.txt      |    5 +
 .../_default/conf/lang/stemdict_nl.txt          |    6 +
 .../_default/conf/lang/stoptags_ja.txt          |  420 +++
 .../_default/conf/lang/stopwords_ar.txt         |  125 +
 .../_default/conf/lang/stopwords_bg.txt         |  193 ++
 .../_default/conf/lang/stopwords_ca.txt         |  220 ++
 .../_default/conf/lang/stopwords_cz.txt         |  172 +
 .../_default/conf/lang/stopwords_da.txt         |  110 +
 .../_default/conf/lang/stopwords_de.txt         |  294 ++
 .../_default/conf/lang/stopwords_el.txt         |   78 +
 .../_default/conf/lang/stopwords_en.txt         |   54 +
 .../_default/conf/lang/stopwords_es.txt         |  356 ++
 .../_default/conf/lang/stopwords_eu.txt         |   99 +
 .../_default/conf/lang/stopwords_fa.txt         |  313 ++
 .../_default/conf/lang/stopwords_fi.txt         |   97 +
 .../_default/conf/lang/stopwords_fr.txt         |  186 +
 .../_default/conf/lang/stopwords_ga.txt         |  110 +
 .../_default/conf/lang/stopwords_gl.txt         |  161 +
 .../_default/conf/lang/stopwords_hi.txt         |  235 ++
 .../_default/conf/lang/stopwords_hu.txt         |  211 ++
 .../_default/conf/lang/stopwords_hy.txt         |   46 +
 .../_default/conf/lang/stopwords_id.txt         |  359 ++
 .../_default/conf/lang/stopwords_it.txt         |  303 ++
 .../_default/conf/lang/stopwords_ja.txt         |  127 +
 .../_default/conf/lang/stopwords_lv.txt         |  172 +
 .../_default/conf/lang/stopwords_nl.txt         |  119 +
 .../_default/conf/lang/stopwords_no.txt         |  194 ++
 .../_default/conf/lang/stopwords_pt.txt         |  253 ++
 .../_default/conf/lang/stopwords_ro.txt         |  233 ++
 .../_default/conf/lang/stopwords_ru.txt         |  243 ++
 .../_default/conf/lang/stopwords_sv.txt         |  133 +
 .../_default/conf/lang/stopwords_th.txt         |  119 +
 .../_default/conf/lang/stopwords_tr.txt         |  212 ++
 .../_default/conf/lang/userdict_ja.txt          |   29 +
 .../configsets/_default/conf/managed-schema     | 1076 ++++++
 .../solr/configsets/_default/conf/params.json   |   20 +
 .../solr/configsets/_default/conf/protwords.txt |   21 +
 .../solr/configsets/_default/conf/schema.xml    |   37 -
 .../configsets/_default/conf/solrconfig.xml     | 1355 +++++++-
 .../solr/configsets/_default/conf/stopwords.txt |   14 +
 .../solr/configsets/_default/conf/synonyms.txt  |   29 +
 .../bad-mergepolicy/conf/solrconfig.xml         |    2 +-
 .../cdcr-source-disabled/conf/schema.xml        |    2 +-
 .../solr/configsets/cdcr-source/conf/schema.xml |    2 +-
 .../configsets/cdcr-source/conf/solrconfig.xml  |    3 +-
 .../solr/configsets/cdcr-target/conf/schema.xml |    2 +-
 .../configsets/cdcr-target/conf/solrconfig.xml  |    3 +-
 .../exitable-directory/conf/solrconfig.xml      |    2 +-
 .../test-files/solr/crazy-path-to-config.xml    |   10 +-
 solr/core/src/test-files/solr/solr.xml          |    1 +
 .../org/apache/solr/BasicFunctionalityTest.java |    6 +-
 .../org/apache/solr/ConvertedLegacyTest.java    |   46 +-
 .../apache/solr/DisMaxRequestHandlerTest.java   |    8 +-
 .../test/org/apache/solr/EchoParamsTest.java    |    4 +-
 .../src/test/org/apache/solr/SampleTest.java    |    2 +-
 .../test/org/apache/solr/SolrInfoBeanTest.java  |    4 +-
 .../org/apache/solr/TestDistributedSearch.java  |    6 +-
 .../org/apache/solr/TestRandomDVFaceting.java   |   28 +-
 .../solr/cloud/BasicDistributedZkTest.java      |   29 +-
 .../test/org/apache/solr/cloud/BasicZkTest.java |    2 +-
 .../solr/cloud/CollectionsAPISolrJTest.java     |   27 +-
 .../apache/solr/cloud/TestCloudRecovery.java    |    8 -
 .../apache/solr/cloud/TestConfigSetsAPI.java    |   49 +
 .../org/apache/solr/cloud/TestPrepRecovery.java |  109 +
 .../cloud/TestRandomRequestDistribution.java    |    4 +-
 .../TestSolrCloudWithDelegationTokens.java      |    3 -
 .../solr/cloud/UnloadDistributedZkTest.java     |   12 +-
 .../org/apache/solr/cloud/ZkControllerTest.java |   19 +-
 .../solr/core/AlternateDirectoryTest.java       |    2 +-
 .../apache/solr/core/DirectoryFactoryTest.java  |   15 +-
 .../apache/solr/core/RequestHandlersTest.java   |    8 +-
 .../test/org/apache/solr/core/SolrCoreTest.java |    2 +-
 .../test/org/apache/solr/core/TestConfig.java   |    4 +-
 .../org/apache/solr/core/TestCoreDiscovery.java |    3 +-
 .../org/apache/solr/core/TestLazyCores.java     |   44 +-
 .../solr/core/TestQuerySenderListener.java      |    2 +-
 .../solr/core/TestQuerySenderNoQuery.java       |    2 +-
 .../apache/solr/core/TestXIncludeConfig.java    |    2 +-
 .../solr/handler/MoreLikeThisHandlerTest.java   |    1 -
 .../apache/solr/handler/SearchHandlerTest.java  |   80 +
 .../handler/StandardRequestHandlerTest.java     |   88 -
 .../solr/handler/V2ApiIntegrationTest.java      |    9 +-
 .../DistributedSpellCheckComponentTest.java     |   10 +-
 .../handler/component/FacetPivotSmallTest.java  |    1 -
 .../component/ResponseLogComponentTest.java     |   12 +-
 .../component/SpellCheckComponentTest.java      |   10 +-
 .../handler/component/StatsComponentTest.java   |    1 -
 .../handler/component/SuggestComponentTest.java |    2 +-
 .../component/TermVectorComponentTest.java      |    2 +-
 .../highlight/FastVectorHighlighterTest.java    |    2 +-
 .../solr/highlight/HighlighterConfigTest.java   |    2 +-
 .../apache/solr/highlight/HighlighterTest.java  |   84 +-
 .../metrics/SolrMetricsIntegrationTest.java     |    2 +-
 .../metrics/reporters/SolrJmxReporterTest.java  |   18 +-
 .../apache/solr/request/SimpleFacetsTest.java   |    4 +-
 .../solr/request/TestIntervalFaceting.java      |    2 +-
 .../apache/solr/schema/DocValuesMultiTest.java  |   10 +-
 .../search/TestComplexPhraseQParserPlugin.java  |    8 +-
 .../search/join/BlockJoinFacetDistribTest.java  |    2 +-
 .../search/join/BlockJoinFacetRandomTest.java   |    2 +-
 .../search/join/BlockJoinFacetSimpleTest.java   |    2 +-
 .../TestNonDefinedSimilarityFactory.java        |   10 -
 .../hadoop/TestDelegationWithHadoopAuth.java    |    1 -
 .../spelling/DirectSolrSpellCheckerTest.java    |    2 +-
 .../solr/spelling/SpellCheckCollatorTest.java   |   43 +-
 .../SpellCheckCollatorWithCollapseTest.java     |    2 +-
 .../spelling/WordBreakSolrSpellCheckerTest.java |   16 +-
 .../example-DIH/solr/atom/conf/solrconfig.xml   |    2 +-
 .../example-DIH/solr/db/conf/solrconfig.xml     |   26 +-
 .../example-DIH/solr/mail/conf/solrconfig.xml   |   26 +-
 .../example-DIH/solr/solr/conf/solrconfig.xml   |   26 +-
 .../example-DIH/solr/tika/conf/solrconfig.xml   |    2 +-
 solr/example/files/conf/solrconfig.xml          |   26 +-
 .../configsets/_default/conf/solrconfig.xml     |   25 +-
 .../conf/solrconfig.xml                         |   25 +-
 .../src/cross-data-center-replication-cdcr.adoc |    6 +-
 .../src/distributed-requests.adoc               |    4 +-
 .../src/the-dismax-query-parser.adoc            |   16 +-
 .../src/uploading-data-with-index-handlers.adoc |    2 +-
 .../solr/client/solrj/impl/HttpSolrClient.java  |    2 +-
 .../solr/common/params/MoreLikeThisParams.java  |    3 +-
 .../solr/collection1/conf/solrconfig-slave1.xml |    8 +-
 .../solr/collection1/conf/solrconfig-sql.xml    |    4 +-
 .../solrj/solr/collection1/conf/solrconfig.xml  |    4 +-
 .../solr/configsets/ml/conf/solrconfig.xml      |    4 +-
 .../solr/configsets/shared/conf/solrconfig.xml  |    8 +-
 .../configsets/streaming/conf/solrconfig.xml    |    6 +-
 .../solr/multicore/core0/conf/solrconfig.xml    |    8 +-
 .../solr/multicore/core1/conf/solrconfig.xml    |    8 +-
 .../embedded/SolrExampleStreamingTest.java      |    2 +-
 .../client/solrj/impl/CloudSolrClientTest.java  |    2 +-
 .../java/org/apache/solr/SolrTestCaseJ4.java    |   16 +-
 714 files changed, 41394 insertions(+), 18158 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2e19a94f/solr/CHANGES.txt
----------------------------------------------------------------------
diff --cc solr/CHANGES.txt
index d8c90a2,5e1481f..700f153
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@@ -185,9 -212,10 +222,13 @@@ New Feature
  
  * SOLR-10272: Use _default config set if no collection.configName is specified with CREATE (Ishan Chattopadhyaya)
  
 -* SOLR-10123: Upgraded the Analytics Component to version 2.0 which now supports distributed collections, expressions over 
 -  multivalued fields, a new JSON request language, and more. DocValues are now required for any field used in the analytics 
++* SOLR-10123: Upgraded the Analytics Component to version 2.0 which now supports distributed collections, expressions over
++  multivalued fields, a new JSON request language, and more. DocValues are now required for any field used in the analytics
+   expression  whereas previously docValues was not required. Please see SOLR-10123 for details. (Houston Putman)
+ 
 +* SOLR-10496: New ComputePlanAction for autoscaling which uses the policy framework to compute cluster
 +  operations upon a trigger fire. (Noble Paul, shalin)
 +
  Bug Fixes
  ----------------------
  * SOLR-9262: Connection and read timeouts are being ignored by UpdateShardHandler after SOLR-4509.
@@@ -227,13 -255,9 +268,16 @@@
  * SOLR-10506: Fix memory leak (upon collection reload or ZooKeeper session expiry) in ZkIndexSchemaReader.
    (Torsten Bøgh Köster, Christine Poerschke, Jörg Rathlev, Mike Drob)
  
 +* SOLR-10602: Triggers should be able to restore state from old instances when taking over. (shalin)
 +
 +* SOLR-10714: OverseerTriggerThread does not start triggers on overseer start until autoscaling
 +  config watcher is fired. (shalin)
 +
 +* SOLR-10738: TriggerAction is initialised even if the trigger is never scheduled. (shalin)
 +
+ * SOLR-6807: CloudSolrClient's ZK state version check with the server was ignored when handleSelect=false
+   (David Smiley)
+ 
  Optimizations
  ----------------------
  

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2e19a94f/solr/core/src/java/org/apache/solr/cloud/Assign.java
----------------------------------------------------------------------


[44/53] [abbrv] lucene-solr:feature/autoscaling: Remove FixBrokenOffsets since 7.0+ indices cannot have broken offsets.

Posted by sh...@apache.org.
Remove FixBrokenOffsets since 7.0+ indices cannot have broken offsets.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/869a48cc
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/869a48cc
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/869a48cc

Branch: refs/heads/feature/autoscaling
Commit: 869a48ccacddd3ad9e1dac68eee6d66b78a7049b
Parents: e809e09
Author: Adrien Grand <jp...@gmail.com>
Authored: Mon Jul 3 14:12:25 2017 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Mon Jul 3 14:12:25 2017 +0200

----------------------------------------------------------------------
 .../apache/lucene/index/FixBrokenOffsets.java   | 138 -------------------
 .../lucene/index/TestFixBrokenOffsets.java      | 112 ---------------
 2 files changed, 250 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/869a48cc/lucene/backward-codecs/src/java/org/apache/lucene/index/FixBrokenOffsets.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/index/FixBrokenOffsets.java b/lucene/backward-codecs/src/java/org/apache/lucene/index/FixBrokenOffsets.java
deleted file mode 100644
index 9b3615e..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/index/FixBrokenOffsets.java
+++ /dev/null
@@ -1,138 +0,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.
- */
-package org.apache.lucene.index;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.List;
-
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
-import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.SuppressForbidden;
-
-/**
- * Command-line tool that reads from a source index and
- * writes to a dest index, correcting any broken offsets
- * in the process.
- *
- * @lucene.experimental
- */
-public class FixBrokenOffsets {
-  public SegmentInfos infos;
-
-  FSDirectory fsDir;
-
-  Path dir;
-
-  @SuppressForbidden(reason = "System.out required: command line tool")
-  public static void main(String[] args) throws IOException {
-    if (args.length < 2) {
-      System.err.println("Usage: FixBrokenOffsetse <srcDir> <destDir>");
-      return;
-    }
-    Path srcPath = Paths.get(args[0]);
-    if (!Files.exists(srcPath)) {
-      throw new RuntimeException("srcPath " + srcPath.toAbsolutePath() + " doesn't exist");
-    }
-    Path destPath = Paths.get(args[1]);
-    if (Files.exists(destPath)) {
-      throw new RuntimeException("destPath " + destPath.toAbsolutePath() + " already exists; please remove it and re-run");
-    }
-    Directory srcDir = FSDirectory.open(srcPath);
-    DirectoryReader reader = DirectoryReader.open(srcDir);
-
-    List<LeafReaderContext> leaves = reader.leaves();
-    CodecReader[] filtered = new CodecReader[leaves.size()];
-    for(int i=0;i<leaves.size();i++) {
-      filtered[i] = SlowCodecReaderWrapper.wrap(new FilterLeafReader(leaves.get(i).reader()) {
-          @Override
-          public Fields getTermVectors(int docID) throws IOException {
-            Fields termVectors = in.getTermVectors(docID);
-            if (termVectors == null) {
-              return null;
-            }
-            return new FilterFields(termVectors) {
-              @Override
-              public Terms terms(String field) throws IOException {
-                return new FilterTerms(super.terms(field)) {
-                  @Override
-                  public TermsEnum iterator() throws IOException {
-                    return new FilterTermsEnum(super.iterator()) {
-                      @Override
-                      public PostingsEnum postings(PostingsEnum reuse, int flags) throws IOException {
-                        return new FilterPostingsEnum(super.postings(reuse, flags)) {
-                          int nextLastStartOffset = 0;
-                          int lastStartOffset = 0;
-
-                          @Override
-                          public int nextPosition() throws IOException {
-                            int pos = super.nextPosition();
-                            lastStartOffset = nextLastStartOffset;
-                            nextLastStartOffset = startOffset();
-                            return pos;
-                          }
-                          
-                          @Override
-                          public int startOffset() throws IOException {
-                            int offset = super.startOffset();
-                            if (offset < lastStartOffset) {
-                              offset = lastStartOffset;
-                            }
-                            return offset;
-                          }
-                          
-                          @Override
-                          public int endOffset() throws IOException {
-                            int offset = super.endOffset();
-                            if (offset < lastStartOffset) {
-                              offset = lastStartOffset;
-                            }
-                            return offset;
-                          }
-                        };
-                      }
-                    };
-                  }
-                };
-              }
-            };
-          }
-
-          @Override
-          public CacheHelper getCoreCacheHelper() {
-            return null;
-          }
-
-          @Override
-          public CacheHelper getReaderCacheHelper() {
-            return null;
-          }
-        });
-    }
-
-    Directory destDir = FSDirectory.open(destPath);
-    // We need to maintain the same major version
-    int createdMajor = SegmentInfos.readLatestCommit(srcDir).getIndexCreatedVersionMajor();
-    new SegmentInfos(createdMajor).commit(destDir);
-    IndexWriter writer = new IndexWriter(destDir, new IndexWriterConfig());
-    writer.addIndexes(filtered);
-    IOUtils.close(writer, reader, srcDir, destDir);
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/869a48cc/lucene/backward-codecs/src/test/org/apache/lucene/index/TestFixBrokenOffsets.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestFixBrokenOffsets.java b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestFixBrokenOffsets.java
deleted file mode 100644
index 46b30d3..0000000
--- a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestFixBrokenOffsets.java
+++ /dev/null
@@ -1,112 +0,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.
- */
-package org.apache.lucene.index;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Path;
-import java.util.List;
-
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
-import org.apache.lucene.store.MockDirectoryWrapper;
-import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
-
-public class TestFixBrokenOffsets extends LuceneTestCase {
-
-  // Run this in Lucene 6.x:
-  //
-  //     ant test -Dtestcase=TestFixBrokenOffsets -Dtestmethod=testCreateBrokenOffsetsIndex -Dtests.codec=default -Dtests.useSecurityManager=false
-  /*
-  public void testCreateBrokenOffsetsIndex() throws IOException {
-
-    Path indexDir = Paths.get("/tmp/brokenoffsets");
-    Files.deleteIfExists(indexDir);
-    Directory dir = newFSDirectory(indexDir);
-    IndexWriter writer = new IndexWriter(dir, new IndexWriterConfig());
-
-    Document doc = new Document();
-    FieldType fieldType = new FieldType(TextField.TYPE_STORED);
-    fieldType.setStoreTermVectors(true);
-    fieldType.setStoreTermVectorPositions(true);
-    fieldType.setStoreTermVectorOffsets(true);
-    Field field = new Field("foo", "bar", fieldType);
-    field.setTokenStream(new CannedTokenStream(new Token("foo", 10, 13), new Token("foo", 7, 9)));
-    doc.add(field);
-    writer.addDocument(doc);
-    writer.commit();
-
-    // 2nd segment
-    doc = new Document();
-    field = new Field("foo", "bar", fieldType);
-    field.setTokenStream(new CannedTokenStream(new Token("bar", 15, 17), new Token("bar", 1, 5)));
-    doc.add(field);
-    writer.addDocument(doc);
-    
-    writer.close();
-
-    dir.close();
-  }
-  */
-
-  public void testFixBrokenOffsetsIndex() throws IOException {
-    InputStream resource = getClass().getResourceAsStream("index.630.brokenoffsets.zip");
-    assertNotNull("Broken offsets index not found", resource);
-    Path path = createTempDir("brokenoffsets");
-    TestUtil.unzip(resource, path);
-    Directory dir = newFSDirectory(path);
-
-    // OK: index is 6.3.0 so offsets not checked:
-    TestUtil.checkIndex(dir);
-    
-    MockDirectoryWrapper tmpDir = newMockDirectory();
-    tmpDir.setCheckIndexOnClose(false);
-    IndexWriter w = new IndexWriter(tmpDir, new IndexWriterConfig());
-    IndexWriter finalW = w;
-    IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> finalW.addIndexes(dir));
-    assertTrue(e.getMessage(), e.getMessage().startsWith("Cannot use addIndexes(Directory) with indexes that have been created by a different Lucene version."));
-    w.close();
-    // OK: addIndexes(Directory...) refuses to execute if the index creation version is different so broken offsets are not carried over
-    tmpDir.close();
-
-    final MockDirectoryWrapper tmpDir2 = newMockDirectory();
-    tmpDir2.setCheckIndexOnClose(false);
-    w = new IndexWriter(tmpDir2, new IndexWriterConfig());
-    DirectoryReader reader = DirectoryReader.open(dir);
-    List<LeafReaderContext> leaves = reader.leaves();
-    CodecReader[] codecReaders = new CodecReader[leaves.size()];
-    for(int i=0;i<leaves.size();i++) {
-      codecReaders[i] = (CodecReader) leaves.get(i).reader();
-    }
-    IndexWriter finalW2 = w;
-    e = expectThrows(IllegalArgumentException.class, () -> finalW2.addIndexes(codecReaders));
-    assertEquals("Cannot merge a segment that has been created with major version 6 into this index which has been created by major version 7", e.getMessage());
-    reader.close();
-    w.close();
-    tmpDir2.close();
-
-    // Now run the tool and confirm the broken offsets are fixed:
-    Path path2 = createTempDir("fixedbrokenoffsets").resolve("subdir");
-    FixBrokenOffsets.main(new String[] {path.toString(), path2.toString()});
-    Directory tmpDir3 = FSDirectory.open(path2);
-    TestUtil.checkIndex(tmpDir3);
-    tmpDir3.close();
-    
-    dir.close();
-  }
-}


[41/53] [abbrv] lucene-solr:feature/autoscaling: LUCENE-7888: fix concurrency hazards between merge completing and DV updates applying

Posted by sh...@apache.org.
LUCENE-7888: fix concurrency hazards between merge completing and DV updates applying


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/eaf1d45a
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/eaf1d45a
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/eaf1d45a

Branch: refs/heads/feature/autoscaling
Commit: eaf1d45a1cad74a1037c7c4178fd2379a903f8cc
Parents: ee1edd9
Author: Mike McCandless <mi...@apache.org>
Authored: Sun Jul 2 15:58:53 2017 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Sun Jul 2 15:58:53 2017 -0400

----------------------------------------------------------------------
 .../lucene/index/FrozenBufferedUpdates.java      | 19 +++++++++++++++----
 .../org/apache/lucene/index/IndexWriter.java     |  5 +++--
 .../apache/lucene/index/ReadersAndUpdates.java   |  8 +++++---
 3 files changed, 23 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/eaf1d45a/lucene/core/src/java/org/apache/lucene/index/FrozenBufferedUpdates.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/FrozenBufferedUpdates.java b/lucene/core/src/java/org/apache/lucene/index/FrozenBufferedUpdates.java
index 8248841..c4e60db 100644
--- a/lucene/core/src/java/org/apache/lucene/index/FrozenBufferedUpdates.java
+++ b/lucene/core/src/java/org/apache/lucene/index/FrozenBufferedUpdates.java
@@ -262,6 +262,8 @@ class FrozenBufferedUpdates {
     int totalSegmentCount = 0;
     long totalDelCount = 0;
 
+    boolean finished = false;
+
     // Optimistic concurrency: assume we are free to resolve the deletes against all current segments in the index, despite that
     // concurrent merges are running.  Once we are done, we check to see if a merge completed while we were running.  If so, we must retry
     // resolving against the newly merged segment(s).  Eventually no merge finishes while we were running and we are done.
@@ -334,7 +336,7 @@ class FrozenBufferedUpdates {
 
       if (infoStream.isEnabled("BD")) {
         infoStream.message("BD", String.format(Locale.ROOT,
-                                               messagePrefix + "done apply del packet (%s) to %d segments; %d new deletes/updates; took %.3f sec",
+                                               messagePrefix + "done inner apply del packet (%s) to %d segments; %d new deletes/updates; took %.3f sec",
                                                this, segStates.length, delCount, (System.nanoTime() - iterStartNS) / 1000000000.));
       }
       
@@ -352,6 +354,13 @@ class FrozenBufferedUpdates {
 
         if (mergeGenCur == mergeGenStart) {
 
+          // Must do this while still holding IW lock else a merge could finish and skip carrying over our updates:
+          
+          // Record that this packet is finished:
+          writer.bufferedUpdatesStream.finished(this);
+
+          finished = true;
+
           // No merge finished while we were applying, so we are done!
           break;
         }
@@ -367,9 +376,11 @@ class FrozenBufferedUpdates {
       iter++;
     }
 
-    // Record that this packet is finished:
-    writer.bufferedUpdatesStream.finished(this);
-
+    if (finished == false) {
+      // Record that this packet is finished:
+      writer.bufferedUpdatesStream.finished(this);
+    }
+        
     if (infoStream.isEnabled("BD")) {
       String message = String.format(Locale.ROOT,
                                      "done apply del packet (%s) to %d segments; %d new deletes/updates; took %.3f sec",

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/eaf1d45a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
index 2ef928b..26a25a5 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
@@ -642,12 +642,13 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
       }
     }
 
-    void writeDocValuesUpdates(List<SegmentCommitInfo> infos) throws IOException {
+    void writeDocValuesUpdatesForMerge(List<SegmentCommitInfo> infos) throws IOException {
       boolean any = false;
       for (SegmentCommitInfo info : infos) {
         ReadersAndUpdates rld = get(info, false);
         if (rld != null) {
           any |= rld.writeFieldUpdates(directory, bufferedUpdatesStream.getCompletedDelGen(), infoStream);
+          rld.setIsMerging();
         }
       }
       if (any) {
@@ -4216,7 +4217,7 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
     // Must move the pending doc values updates to disk now, else the newly merged segment will not see them:
     // TODO: we could fix merging to pull the merged DV iterator so we don't have to move these updates to disk first, i.e. just carry them
     // in memory:
-    readerPool.writeDocValuesUpdates(merge.segments);
+    readerPool.writeDocValuesUpdatesForMerge(merge.segments);
     
     // Bind a new segment name here so even with
     // ConcurrentMergePolicy we keep deterministic segment

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/eaf1d45a/lucene/core/src/java/org/apache/lucene/index/ReadersAndUpdates.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/ReadersAndUpdates.java b/lucene/core/src/java/org/apache/lucene/index/ReadersAndUpdates.java
index 630131e..dd49fcb 100644
--- a/lucene/core/src/java/org/apache/lucene/index/ReadersAndUpdates.java
+++ b/lucene/core/src/java/org/apache/lucene/index/ReadersAndUpdates.java
@@ -808,14 +808,16 @@ class ReadersAndUpdates {
     return true;
   }
 
-  /** Returns a reader for merge, with the latest doc values updates and deletions. */
-  synchronized SegmentReader getReaderForMerge(IOContext context) throws IOException {
-
+  synchronized public void setIsMerging() {
     // This ensures any newly resolved doc value updates while we are merging are
     // saved for re-applying after this segment is done merging:
     isMerging = true;
 
     assert mergingDVUpdates.isEmpty();
+  }
+
+  /** Returns a reader for merge, with the latest doc values updates and deletions. */
+  synchronized SegmentReader getReaderForMerge(IOContext context) throws IOException {
 
     // We must carry over any still-pending DV updates because they were not
     // successfully written, e.g. because there was a hole in the delGens,


[35/53] [abbrv] lucene-solr:feature/autoscaling: SOLR-10954: this was supposed to be in the solrj package

Posted by sh...@apache.org.
SOLR-10954: this was supposed to be in the solrj package


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/2e56e7eb
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/2e56e7eb
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/2e56e7eb

Branch: refs/heads/feature/autoscaling
Commit: 2e56e7eb28a99109aa0b7c35a9698250f531b984
Parents: f3c851a
Author: Noble Paul <no...@apache.org>
Authored: Sat Jul 1 11:44:22 2017 +0930
Committer: Noble Paul <no...@apache.org>
Committed: Sat Jul 1 11:44:22 2017 +0930

----------------------------------------------------------------------
 .../solr/common/cloud/ReplicaPosition.java      | 55 --------------------
 .../solr/common/cloud/ReplicaPosition.java      | 55 ++++++++++++++++++++
 2 files changed, 55 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2e56e7eb/solr/core/src/java/org/apache/solr/common/cloud/ReplicaPosition.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/common/cloud/ReplicaPosition.java b/solr/core/src/java/org/apache/solr/common/cloud/ReplicaPosition.java
deleted file mode 100644
index d64d1d1..0000000
--- a/solr/core/src/java/org/apache/solr/common/cloud/ReplicaPosition.java
+++ /dev/null
@@ -1,55 +0,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.
- */
-
-package org.apache.solr.common.cloud;
-
-
-public class ReplicaPosition implements Comparable<ReplicaPosition> {
-  public final String shard;
-  public final int index;
-  public final Replica.Type type;
-  public String node;
-
-  public ReplicaPosition(String shard, int replicaIdx, Replica.Type type) {
-    this.shard = shard;
-    this.index = replicaIdx;
-    this.type = type;
-  }
-  public ReplicaPosition(String shard, int replicaIdx, Replica.Type type, String node) {
-    this.shard = shard;
-    this.index = replicaIdx;
-    this.type = type;
-    this.node = node;
-  }
-
-  @Override
-  public int compareTo(ReplicaPosition that) {
-    //this is to ensure that we try one replica from each shard first instead of
-    // all replicas from same shard
-    return that.index > index ? -1 : that.index == index ? 0 : 1;
-  }
-
-  @Override
-  public String toString() {
-    return shard + ":" + index;
-  }
-
-  public ReplicaPosition setNode(String node) {
-    this.node = node;
-    return this;
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2e56e7eb/solr/solrj/src/java/org/apache/solr/common/cloud/ReplicaPosition.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ReplicaPosition.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ReplicaPosition.java
new file mode 100644
index 0000000..d64d1d1
--- /dev/null
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ReplicaPosition.java
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+
+package org.apache.solr.common.cloud;
+
+
+public class ReplicaPosition implements Comparable<ReplicaPosition> {
+  public final String shard;
+  public final int index;
+  public final Replica.Type type;
+  public String node;
+
+  public ReplicaPosition(String shard, int replicaIdx, Replica.Type type) {
+    this.shard = shard;
+    this.index = replicaIdx;
+    this.type = type;
+  }
+  public ReplicaPosition(String shard, int replicaIdx, Replica.Type type, String node) {
+    this.shard = shard;
+    this.index = replicaIdx;
+    this.type = type;
+    this.node = node;
+  }
+
+  @Override
+  public int compareTo(ReplicaPosition that) {
+    //this is to ensure that we try one replica from each shard first instead of
+    // all replicas from same shard
+    return that.index > index ? -1 : that.index == index ? 0 : 1;
+  }
+
+  @Override
+  public String toString() {
+    return shard + ":" + index;
+  }
+
+  public ReplicaPosition setNode(String node) {
+    this.node = node;
+    return this;
+  }
+}


[32/53] [abbrv] lucene-solr:feature/autoscaling: Changes for version upgrade to 8.0 on master for the 7.0 release

Posted by sh...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesProducer.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesProducer.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesProducer.java
deleted file mode 100644
index a35f503..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/Lucene54DocValuesProducer.java
+++ /dev/null
@@ -1,1803 +0,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.
- */
-package org.apache.lucene.codecs.lucene54;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.apache.lucene.codecs.CodecUtil;
-import org.apache.lucene.codecs.DocValuesProducer;
-import org.apache.lucene.codecs.lucene54.Lucene54DocValuesConsumer.NumberType;
-import org.apache.lucene.index.*;
-import org.apache.lucene.index.NumericDocValues;
-import org.apache.lucene.store.ChecksumIndexInput;
-import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.store.RandomAccessInput;
-import org.apache.lucene.util.Accountable;
-import org.apache.lucene.util.Accountables;
-import org.apache.lucene.util.Bits;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.LongValues;
-import org.apache.lucene.util.PagedBytes;
-import org.apache.lucene.util.RamUsageEstimator;
-import org.apache.lucene.util.packed.DirectMonotonicReader;
-import org.apache.lucene.util.packed.DirectReader;
-import org.apache.lucene.util.packed.MonotonicBlockPackedReader;
-
-import static org.apache.lucene.codecs.lucene54.Lucene54DocValuesFormat.*;
-
-/** reader for {@link Lucene54DocValuesFormat} */
-final class Lucene54DocValuesProducer extends DocValuesProducer implements Closeable {
-  private final Map<String,NumericEntry> numerics = new HashMap<>();
-  private final Map<String,BinaryEntry> binaries = new HashMap<>();
-  private final Map<String,SortedSetEntry> sortedSets = new HashMap<>();
-  private final Map<String,SortedSetEntry> sortedNumerics = new HashMap<>();
-  private final Map<String,NumericEntry> ords = new HashMap<>();
-  private final Map<String,NumericEntry> ordIndexes = new HashMap<>();
-  private final int numFields;
-  private final AtomicLong ramBytesUsed;
-  private final IndexInput data;
-  private final int maxDoc;
-
-  // memory-resident structures
-  private final Map<String,MonotonicBlockPackedReader> addressInstances = new HashMap<>();
-  private final Map<String,ReverseTermsIndex> reverseIndexInstances = new HashMap<>();
-  private final Map<String,DirectMonotonicReader.Meta> directAddressesMeta = new HashMap<>();
-
-  private final boolean merging;
-
-  // clone for merge: when merging we don't do any instances.put()s
-  Lucene54DocValuesProducer(Lucene54DocValuesProducer original) throws IOException {
-    assert Thread.holdsLock(original);
-    numerics.putAll(original.numerics);
-    binaries.putAll(original.binaries);
-    sortedSets.putAll(original.sortedSets);
-    sortedNumerics.putAll(original.sortedNumerics);
-    ords.putAll(original.ords);
-    ordIndexes.putAll(original.ordIndexes);
-    numFields = original.numFields;
-    ramBytesUsed = new AtomicLong(original.ramBytesUsed.get());
-    data = original.data.clone();
-    maxDoc = original.maxDoc;
-
-    addressInstances.putAll(original.addressInstances);
-    reverseIndexInstances.putAll(original.reverseIndexInstances);
-    merging = true;
-  }
-
-  /** expert: instantiates a new reader */
-  Lucene54DocValuesProducer(SegmentReadState state, String dataCodec, String dataExtension, String metaCodec, String metaExtension) throws IOException {
-    String metaName = IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, metaExtension);
-    this.maxDoc = state.segmentInfo.maxDoc();
-    merging = false;
-    ramBytesUsed = new AtomicLong(RamUsageEstimator.shallowSizeOfInstance(getClass()));
-
-    int version = -1;
-    int numFields = -1;
-
-    // read in the entries from the metadata file.
-    try (ChecksumIndexInput in = state.directory.openChecksumInput(metaName, state.context)) {
-      Throwable priorE = null;
-      try {
-        version = CodecUtil.checkIndexHeader(in, metaCodec,
-                                        Lucene54DocValuesFormat.VERSION_START,
-                                        Lucene54DocValuesFormat.VERSION_CURRENT,
-                                        state.segmentInfo.getId(),
-                                        state.segmentSuffix);
-        numFields = readFields(in, state.fieldInfos);
-      } catch (Throwable exception) {
-        priorE = exception;
-      } finally {
-        CodecUtil.checkFooter(in, priorE);
-      }
-    }
-
-    this.numFields = numFields;
-    String dataName = IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, dataExtension);
-    this.data = state.directory.openInput(dataName, state.context);
-    boolean success = false;
-    try {
-      final int version2 = CodecUtil.checkIndexHeader(data, dataCodec,
-                                                 Lucene54DocValuesFormat.VERSION_START,
-                                                 Lucene54DocValuesFormat.VERSION_CURRENT,
-                                                 state.segmentInfo.getId(),
-                                                 state.segmentSuffix);
-      if (version != version2) {
-        throw new CorruptIndexException("Format versions mismatch: meta=" + version + ", data=" + version2, data);
-      }
-
-      // NOTE: data file is too costly to verify checksum against all the bytes on open,
-      // but for now we at least verify proper structure of the checksum footer: which looks
-      // for FOOTER_MAGIC + algorithmID. This is cheap and can detect some forms of corruption
-      // such as file truncation.
-      CodecUtil.retrieveChecksum(data);
-
-      success = true;
-    } finally {
-      if (!success) {
-        IOUtils.closeWhileHandlingException(this.data);
-      }
-    }
-  }
-
-  private void readSortedField(FieldInfo info, IndexInput meta) throws IOException {
-    // sorted = binary + numeric
-    if (meta.readVInt() != info.number) {
-      throw new CorruptIndexException("sorted entry for field: " + info.name + " is corrupt", meta);
-    }
-    if (meta.readByte() != Lucene54DocValuesFormat.BINARY) {
-      throw new CorruptIndexException("sorted entry for field: " + info.name + " is corrupt", meta);
-    }
-    BinaryEntry b = readBinaryEntry(info, meta);
-    binaries.put(info.name, b);
-
-    if (meta.readVInt() != info.number) {
-      throw new CorruptIndexException("sorted entry for field: " + info.name + " is corrupt", meta);
-    }
-    if (meta.readByte() != Lucene54DocValuesFormat.NUMERIC) {
-      throw new CorruptIndexException("sorted entry for field: " + info.name + " is corrupt", meta);
-    }
-    NumericEntry n = readNumericEntry(info, meta);
-    ords.put(info.name, n);
-  }
-
-  private void readSortedSetFieldWithAddresses(FieldInfo info, IndexInput meta) throws IOException {
-    // sortedset = binary + numeric (addresses) + ordIndex
-    if (meta.readVInt() != info.number) {
-      throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-    }
-    if (meta.readByte() != Lucene54DocValuesFormat.BINARY) {
-      throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-    }
-    BinaryEntry b = readBinaryEntry(info, meta);
-    binaries.put(info.name, b);
-
-    if (meta.readVInt() != info.number) {
-      throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-    }
-    if (meta.readByte() != Lucene54DocValuesFormat.NUMERIC) {
-      throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-    }
-    NumericEntry n1 = readNumericEntry(info, meta);
-    ords.put(info.name, n1);
-
-    if (meta.readVInt() != info.number) {
-      throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-    }
-    if (meta.readByte() != Lucene54DocValuesFormat.NUMERIC) {
-      throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-    }
-    NumericEntry n2 = readNumericEntry(info, meta);
-    ordIndexes.put(info.name, n2);
-  }
-
-  private void readSortedSetFieldWithTable(FieldInfo info, IndexInput meta) throws IOException {
-    // sortedset table = binary + ordset table + ordset index
-    if (meta.readVInt() != info.number) {
-      throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-    }
-    if (meta.readByte() != Lucene54DocValuesFormat.BINARY) {
-      throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-    }
-
-    BinaryEntry b = readBinaryEntry(info, meta);
-    binaries.put(info.name, b);
-
-    if (meta.readVInt() != info.number) {
-      throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-    }
-    if (meta.readByte() != Lucene54DocValuesFormat.NUMERIC) {
-      throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-    }
-    NumericEntry n = readNumericEntry(info, meta);
-    ords.put(info.name, n);
-  }
-
-  private int readFields(IndexInput meta, FieldInfos infos) throws IOException {
-    int numFields = 0;
-    int fieldNumber = meta.readVInt();
-    while (fieldNumber != -1) {
-      numFields++;
-      FieldInfo info = infos.fieldInfo(fieldNumber);
-      if (info == null) {
-        // trickier to validate more: because we use multiple entries for "composite" types like sortedset, etc.
-        throw new CorruptIndexException("Invalid field number: " + fieldNumber, meta);
-      }
-      byte type = meta.readByte();
-      if (type == Lucene54DocValuesFormat.NUMERIC) {
-        numerics.put(info.name, readNumericEntry(info, meta));
-      } else if (type == Lucene54DocValuesFormat.BINARY) {
-        BinaryEntry b = readBinaryEntry(info, meta);
-        binaries.put(info.name, b);
-      } else if (type == Lucene54DocValuesFormat.SORTED) {
-        readSortedField(info, meta);
-      } else if (type == Lucene54DocValuesFormat.SORTED_SET) {
-        SortedSetEntry ss = readSortedSetEntry(meta);
-        sortedSets.put(info.name, ss);
-        if (ss.format == SORTED_WITH_ADDRESSES) {
-          readSortedSetFieldWithAddresses(info, meta);
-        } else if (ss.format == SORTED_SET_TABLE) {
-          readSortedSetFieldWithTable(info, meta);
-        } else if (ss.format == SORTED_SINGLE_VALUED) {
-          if (meta.readVInt() != fieldNumber) {
-            throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-          }
-          if (meta.readByte() != Lucene54DocValuesFormat.SORTED) {
-            throw new CorruptIndexException("sortedset entry for field: " + info.name + " is corrupt", meta);
-          }
-          readSortedField(info, meta);
-        } else {
-          throw new AssertionError();
-        }
-      } else if (type == Lucene54DocValuesFormat.SORTED_NUMERIC) {
-        SortedSetEntry ss = readSortedSetEntry(meta);
-        sortedNumerics.put(info.name, ss);
-        if (ss.format == SORTED_WITH_ADDRESSES) {
-          if (meta.readVInt() != fieldNumber) {
-            throw new CorruptIndexException("sortednumeric entry for field: " + info.name + " is corrupt", meta);
-          }
-          if (meta.readByte() != Lucene54DocValuesFormat.NUMERIC) {
-            throw new CorruptIndexException("sortednumeric entry for field: " + info.name + " is corrupt", meta);
-          }
-          numerics.put(info.name, readNumericEntry(info, meta));
-          if (meta.readVInt() != fieldNumber) {
-            throw new CorruptIndexException("sortednumeric entry for field: " + info.name + " is corrupt", meta);
-          }
-          if (meta.readByte() != Lucene54DocValuesFormat.NUMERIC) {
-            throw new CorruptIndexException("sortednumeric entry for field: " + info.name + " is corrupt", meta);
-          }
-          NumericEntry ordIndex = readNumericEntry(info, meta);
-          ordIndexes.put(info.name, ordIndex);
-        } else if (ss.format == SORTED_SET_TABLE) {
-          if (meta.readVInt() != info.number) {
-            throw new CorruptIndexException("sortednumeric entry for field: " + info.name + " is corrupt", meta);
-          }
-          if (meta.readByte() != Lucene54DocValuesFormat.NUMERIC) {
-            throw new CorruptIndexException("sortednumeric entry for field: " + info.name + " is corrupt", meta);
-          }
-          NumericEntry n = readNumericEntry(info, meta);
-          ords.put(info.name, n);
-        } else if (ss.format == SORTED_SINGLE_VALUED) {
-          if (meta.readVInt() != fieldNumber) {
-            throw new CorruptIndexException("sortednumeric entry for field: " + info.name + " is corrupt", meta);
-          }
-          if (meta.readByte() != Lucene54DocValuesFormat.NUMERIC) {
-            throw new CorruptIndexException("sortednumeric entry for field: " + info.name + " is corrupt", meta);
-          }
-          numerics.put(info.name, readNumericEntry(info, meta));
-        } else {
-          throw new AssertionError();
-        }
-      } else {
-        throw new CorruptIndexException("invalid type: " + type, meta);
-      }
-      fieldNumber = meta.readVInt();
-    }
-    return numFields;
-  }
-
-  private NumericEntry readNumericEntry(FieldInfo info, IndexInput meta) throws IOException {
-    NumericEntry entry = new NumericEntry();
-    entry.format = meta.readVInt();
-    entry.missingOffset = meta.readLong();
-    if (entry.format == SPARSE_COMPRESSED) {
-      // sparse bits need a bit more metadata
-      entry.numDocsWithValue = meta.readVLong();
-      final int blockShift = meta.readVInt();
-      entry.monotonicMeta = DirectMonotonicReader.loadMeta(meta, entry.numDocsWithValue, blockShift);
-      ramBytesUsed.addAndGet(entry.monotonicMeta.ramBytesUsed());
-      directAddressesMeta.put(info.name, entry.monotonicMeta);
-    }
-    entry.offset = meta.readLong();
-    entry.count = meta.readVLong();
-    switch(entry.format) {
-      case CONST_COMPRESSED:
-        entry.minValue = meta.readLong();
-        if (entry.count > Integer.MAX_VALUE) {
-          // currently just a limitation e.g. of bits interface and so on.
-          throw new CorruptIndexException("illegal CONST_COMPRESSED count: " + entry.count, meta);
-        }
-        break;
-      case GCD_COMPRESSED:
-        entry.minValue = meta.readLong();
-        entry.gcd = meta.readLong();
-        entry.bitsPerValue = meta.readVInt();
-        break;
-      case TABLE_COMPRESSED:
-        final int uniqueValues = meta.readVInt();
-        if (uniqueValues > 256) {
-          throw new CorruptIndexException("TABLE_COMPRESSED cannot have more than 256 distinct values, got=" + uniqueValues, meta);
-        }
-        entry.table = new long[uniqueValues];
-        for (int i = 0; i < uniqueValues; ++i) {
-          entry.table[i] = meta.readLong();
-        }
-        ramBytesUsed.addAndGet(RamUsageEstimator.sizeOf(entry.table));
-        entry.bitsPerValue = meta.readVInt();
-        break;
-      case DELTA_COMPRESSED:
-        entry.minValue = meta.readLong();
-        entry.bitsPerValue = meta.readVInt();
-        break;
-      case MONOTONIC_COMPRESSED:
-        final int blockShift = meta.readVInt();
-        entry.monotonicMeta = DirectMonotonicReader.loadMeta(meta, maxDoc + 1, blockShift);
-        ramBytesUsed.addAndGet(entry.monotonicMeta.ramBytesUsed());
-        directAddressesMeta.put(info.name, entry.monotonicMeta);
-        break;
-      case SPARSE_COMPRESSED:
-        final byte numberType = meta.readByte();
-        switch (numberType) {
-          case 0:
-            entry.numberType = NumberType.VALUE;
-            break;
-          case 1:
-            entry.numberType = NumberType.ORDINAL;
-            break;
-          default:
-            throw new CorruptIndexException("Number type can only be 0 or 1, got=" + numberType, meta);
-        }
-
-        // now read the numeric entry for non-missing values
-        final int fieldNumber = meta.readVInt();
-        if (fieldNumber != info.number) {
-          throw new CorruptIndexException("Field numbers mistmatch: " + fieldNumber + " != " + info.number, meta);
-        }
-        final int dvFormat = meta.readByte();
-        if (dvFormat != NUMERIC) {
-          throw new CorruptIndexException("Formats mistmatch: " + dvFormat + " != " + NUMERIC, meta);
-        }
-        entry.nonMissingValues = readNumericEntry(info, meta);
-        break;
-      default:
-        throw new CorruptIndexException("Unknown format: " + entry.format + ", input=", meta);
-    }
-    entry.endOffset = meta.readLong();
-    return entry;
-  }
-
-  private BinaryEntry readBinaryEntry(FieldInfo info, IndexInput meta) throws IOException {
-    BinaryEntry entry = new BinaryEntry();
-    entry.format = meta.readVInt();
-    entry.missingOffset = meta.readLong();
-    entry.minLength = meta.readVInt();
-    entry.maxLength = meta.readVInt();
-    entry.count = meta.readVLong();
-    entry.offset = meta.readLong();
-    switch(entry.format) {
-      case BINARY_FIXED_UNCOMPRESSED:
-        break;
-      case BINARY_PREFIX_COMPRESSED:
-        entry.addressesOffset = meta.readLong();
-        entry.packedIntsVersion = meta.readVInt();
-        entry.blockSize = meta.readVInt();
-        entry.reverseIndexOffset = meta.readLong();
-        break;
-      case BINARY_VARIABLE_UNCOMPRESSED:
-        entry.addressesOffset = meta.readLong();
-        final int blockShift = meta.readVInt();
-        entry.addressesMeta = DirectMonotonicReader.loadMeta(meta, entry.count + 1, blockShift);
-        ramBytesUsed.addAndGet(entry.addressesMeta.ramBytesUsed());
-        directAddressesMeta.put(info.name, entry.addressesMeta);
-        entry.addressesEndOffset = meta.readLong();
-        break;
-      default:
-        throw new CorruptIndexException("Unknown format: " + entry.format, meta);
-    }
-    return entry;
-  }
-
-  SortedSetEntry readSortedSetEntry(IndexInput meta) throws IOException {
-    SortedSetEntry entry = new SortedSetEntry();
-    entry.format = meta.readVInt();
-    if (entry.format == SORTED_SET_TABLE) {
-      final int totalTableLength = meta.readInt();
-      if (totalTableLength > 256) {
-        throw new CorruptIndexException("SORTED_SET_TABLE cannot have more than 256 values in its dictionary, got=" + totalTableLength, meta);
-      }
-      entry.table = new long[totalTableLength];
-      for (int i = 0; i < totalTableLength; ++i) {
-        entry.table[i] = meta.readLong();
-      }
-      ramBytesUsed.addAndGet(RamUsageEstimator.sizeOf(entry.table));
-      final int tableSize = meta.readInt();
-      if (tableSize > totalTableLength + 1) { // +1 because of the empty set
-        throw new CorruptIndexException("SORTED_SET_TABLE cannot have more set ids than ords in its dictionary, got " + totalTableLength + " ords and " + tableSize + " sets", meta);
-      }
-      entry.tableOffsets = new int[tableSize + 1];
-      for (int i = 1; i < entry.tableOffsets.length; ++i) {
-        entry.tableOffsets[i] = entry.tableOffsets[i - 1] + meta.readInt();
-      }
-      ramBytesUsed.addAndGet(RamUsageEstimator.sizeOf(entry.tableOffsets));
-    } else if (entry.format != SORTED_SINGLE_VALUED && entry.format != SORTED_WITH_ADDRESSES) {
-      throw new CorruptIndexException("Unknown format: " + entry.format, meta);
-    }
-    return entry;
-  }
-
-  @Override
-  public NumericDocValues getNumeric(FieldInfo field) throws IOException {
-    NumericEntry entry = numerics.get(field.name);
-    Bits docsWithField;
-
-    if (entry.format == SPARSE_COMPRESSED) {
-      return getSparseNumericDocValues(entry);
-    } else {
-      if (entry.missingOffset == ALL_MISSING) {
-        return DocValues.emptyNumeric();
-      } else if (entry.missingOffset == ALL_LIVE) {
-        LongValues values = getNumeric(entry);
-        return new NumericDocValues() {
-          private int docID = -1;
-
-          @Override
-          public int docID() {
-            return docID;
-          }
-
-          @Override
-          public int nextDoc() {
-            docID++;
-            if (docID == maxDoc) {
-              docID = NO_MORE_DOCS;
-            }
-            return docID;
-          }
-
-          @Override
-          public int advance(int target) {
-            if (target >= maxDoc) {
-              docID = NO_MORE_DOCS;
-            } else {
-              docID = target;
-            }
-            return docID;
-          }
-
-          @Override
-          public boolean advanceExact(int target) throws IOException {
-            docID = target;
-            return true;
-          }
-
-          @Override
-          public long cost() {
-            // TODO
-            return 0;
-          }
-
-          @Override
-          public long longValue() {
-            return values.get(docID);
-          }
-        };
-      } else {
-        docsWithField = getLiveBits(entry.missingOffset, maxDoc);
-      }
-    }
-    final LongValues values = getNumeric(entry);
-    return new NumericDocValues() {
-
-      int doc = -1;
-      long value;
-
-      @Override
-      public long longValue() throws IOException {
-        return value;
-      }
-
-      @Override
-      public int docID() {
-        return doc;
-      }
-
-      @Override
-      public int nextDoc() throws IOException {
-        return advance(doc + 1);
-      }
-
-      @Override
-      public int advance(int target) throws IOException {
-        for (int doc = target; doc < maxDoc; ++doc) {
-          value = values.get(doc);
-          if (value != 0 || docsWithField.get(doc)) {
-            return this.doc = doc;
-          }
-        }
-        return doc = NO_MORE_DOCS;
-      }
-
-      @Override
-      public boolean advanceExact(int target) throws IOException {
-        doc = target;
-        value = values.get(doc);
-        return value != 0 || docsWithField.get(doc);
-      }
-
-      @Override
-      public long cost() {
-        return maxDoc;
-      }
-
-    };
-  }
-
-  @Override
-  public long ramBytesUsed() {
-    return ramBytesUsed.get();
-  }
-
-  @Override
-  public synchronized Collection<Accountable> getChildResources() {
-    List<Accountable> resources = new ArrayList<>();
-    resources.addAll(Accountables.namedAccountables("addresses field", addressInstances));
-    resources.addAll(Accountables.namedAccountables("reverse index field", reverseIndexInstances));
-    resources.addAll(Accountables.namedAccountables("direct addresses meta field", directAddressesMeta));
-    return Collections.unmodifiableList(resources);
-  }
-
-  @Override
-  public void checkIntegrity() throws IOException {
-    CodecUtil.checksumEntireFile(data);
-  }
-
-  @Override
-  public String toString() {
-    return getClass().getSimpleName() + "(fields=" + numFields + ")";
-  }
-
-  LongValues getNumeric(NumericEntry entry) throws IOException {
-    switch (entry.format) {
-      case CONST_COMPRESSED: {
-        final long constant = entry.minValue;
-        final Bits live = getLiveBits(entry.missingOffset, (int)entry.count);
-        return new LongValues() {
-          @Override
-          public long get(long index) {
-            return live.get((int)index) ? constant : 0;
-          }
-        };
-      }
-      case DELTA_COMPRESSED: {
-        RandomAccessInput slice = this.data.randomAccessSlice(entry.offset, entry.endOffset - entry.offset);
-        final long delta = entry.minValue;
-        final LongValues values = DirectReader.getInstance(slice, entry.bitsPerValue, 0);
-        return new LongValues() {
-          @Override
-          public long get(long id) {
-            return delta + values.get(id);
-          }
-        };
-      }
-      case GCD_COMPRESSED: {
-        RandomAccessInput slice = this.data.randomAccessSlice(entry.offset, entry.endOffset - entry.offset);
-        final long min = entry.minValue;
-        final long mult = entry.gcd;
-        final LongValues quotientReader = DirectReader.getInstance(slice, entry.bitsPerValue, 0);
-        return new LongValues() {
-          @Override
-          public long get(long id) {
-            return min + mult * quotientReader.get(id);
-          }
-        };
-      }
-      case TABLE_COMPRESSED: {
-        RandomAccessInput slice = this.data.randomAccessSlice(entry.offset, entry.endOffset - entry.offset);
-        final long table[] = entry.table;
-        final LongValues ords = DirectReader.getInstance(slice, entry.bitsPerValue, 0);
-        return new LongValues() {
-          @Override
-          public long get(long id) {
-            return table[(int) ords.get(id)];
-          }
-        };
-      }
-      case SPARSE_COMPRESSED:
-        final SparseNumericDocValues values = getSparseNumericDocValues(entry);
-        final long missingValue;
-        switch (entry.numberType) {
-          case ORDINAL:
-            missingValue = -1L;
-            break;
-          case VALUE:
-            missingValue = 0L;
-            break;
-          default:
-            throw new AssertionError();
-        }
-        return new SparseNumericDocValuesRandomAccessWrapper(values, missingValue);
-      default:
-        throw new AssertionError();
-    }
-  }
-
-  static final class SparseNumericDocValues extends NumericDocValues {
-
-    final int docIDsLength;
-    final LongValues docIds, values;
-
-    int index, doc;
-
-    SparseNumericDocValues(int docIDsLength, LongValues docIDs, LongValues values) {
-      this.docIDsLength = docIDsLength;
-      this.docIds = docIDs;
-      this.values = values;
-      reset();
-    }
-
-    void reset() {
-      index = -1;
-      doc = -1;
-    }
-
-    @Override
-    public int docID() {
-      return doc;
-    }
-
-    @Override
-    public int nextDoc() throws IOException {
-      if (index >= docIDsLength - 1) {
-        index = docIDsLength;
-        return doc = NO_MORE_DOCS;
-      }
-      return doc = (int) docIds.get(++index);
-    }
-
-    @Override
-    public int advance(int target) throws IOException {
-      long loIndex = index;
-      long step = 1;
-      long hiIndex;
-      int hiDoc;
-
-      // gallop forward by exponentially growing the interval
-      // in order to find an interval so that the target doc
-      // is in ]lo, hi]. Compared to a regular binary search,
-      // this optimizes the case that the caller performs many
-      // advance calls by small deltas
-      do {
-        hiIndex = index + step;
-        if (hiIndex >= docIDsLength) {
-          hiIndex = docIDsLength;
-          hiDoc = NO_MORE_DOCS;
-          break;
-        }
-        hiDoc = (int) docIds.get(hiIndex);
-        if (hiDoc >= target) {
-          break;
-        }
-        step <<= 1;
-      } while (true);
-
-      // now binary search
-      while (loIndex + 1 < hiIndex) {
-        final long midIndex = (loIndex + 1 + hiIndex) >>> 1;
-        final int midDoc = (int) docIds.get(midIndex);
-        if (midDoc >= target) {
-          hiIndex = midIndex;
-          hiDoc = midDoc;
-        } else {
-          loIndex = midIndex;
-        }
-      }
-
-      index = (int) hiIndex;
-      return doc = hiDoc;
-    }
-
-    @Override
-    public boolean advanceExact(int target) throws IOException {
-      if (advance(target) == target) {
-        return true;
-      }
-      --index;
-      doc = target;
-      return index >= 0 && docIds.get(index) == target;
-    }
-
-    @Override
-    public long longValue() {
-      assert index >= 0;
-      assert index < docIDsLength;
-      return values.get(index);
-    }
-
-    @Override
-    public long cost() {
-      return docIDsLength;
-    }
-  }
-
-  static class SparseNumericDocValuesRandomAccessWrapper extends LongValues {
-
-    final SparseNumericDocValues values;
-    final long missingValue;
-
-    SparseNumericDocValuesRandomAccessWrapper(SparseNumericDocValues values, long missingValue) {
-      this.values = values;
-      this.missingValue = missingValue;
-    }
-
-    @Override
-    public long get(long longIndex) {
-      final int index = Math.toIntExact(longIndex);
-      int doc = values.docID();
-      if (doc >= index) {
-        values.reset();
-      }
-      assert values.docID() < index;
-      try {
-        doc = values.advance(index);
-      } catch (IOException e) {
-        throw new RuntimeException(e);
-      }
-      if (doc == index) {
-        return values.longValue();
-      } else {
-        return missingValue;
-      }
-    }
-
-  }
-
-  LegacyBinaryDocValues getLegacyBinary(FieldInfo field) throws IOException {
-    BinaryEntry bytes = binaries.get(field.name);
-    switch(bytes.format) {
-      case BINARY_FIXED_UNCOMPRESSED:
-        return getFixedBinary(field, bytes);
-      case BINARY_VARIABLE_UNCOMPRESSED:
-        return getVariableBinary(field, bytes);
-      case BINARY_PREFIX_COMPRESSED:
-        return getCompressedBinary(field, bytes);
-      default:
-        throw new AssertionError();
-    }
-  }
-
-  @Override
-  public BinaryDocValues getBinary(FieldInfo field) throws IOException {
-    BinaryEntry be = binaries.get(field.name);
-    return new LegacyBinaryDocValuesWrapper(getLiveBits(be.missingOffset, maxDoc), getLegacyBinary(field));
-  }
-
-  private LegacyBinaryDocValues getFixedBinary(FieldInfo field, final BinaryEntry bytes) throws IOException {
-    final IndexInput data = this.data.slice("fixed-binary", bytes.offset, bytes.count * bytes.maxLength);
-
-    final BytesRef term = new BytesRef(bytes.maxLength);
-    final byte[] buffer = term.bytes;
-    final int length = term.length = bytes.maxLength;
-
-    return new LongBinaryDocValues() {
-      @Override
-      public BytesRef get(long id) {
-        try {
-          data.seek(id * length);
-          data.readBytes(buffer, 0, buffer.length);
-          return term;
-        } catch (IOException e) {
-          throw new RuntimeException(e);
-        }
-      }
-    };
-  }
-
-  private LegacyBinaryDocValues getVariableBinary(FieldInfo field, final BinaryEntry bytes) throws IOException {
-    final RandomAccessInput addressesData = this.data.randomAccessSlice(bytes.addressesOffset, bytes.addressesEndOffset - bytes.addressesOffset);
-    final LongValues addresses = DirectMonotonicReader.getInstance(bytes.addressesMeta, addressesData);
-
-    final IndexInput data = this.data.slice("var-binary", bytes.offset, bytes.addressesOffset - bytes.offset);
-    final BytesRef term = new BytesRef(Math.max(0, bytes.maxLength));
-    final byte buffer[] = term.bytes;
-
-    return new LongBinaryDocValues() {
-      @Override
-      public BytesRef get(long id) {
-        long startAddress = addresses.get(id);
-        long endAddress = addresses.get(id+1);
-        int length = (int) (endAddress - startAddress);
-        try {
-          data.seek(startAddress);
-          data.readBytes(buffer, 0, length);
-          term.length = length;
-          return term;
-        } catch (IOException e) {
-          throw new RuntimeException(e);
-        }
-      }
-    };
-  }
-
-  /** returns an address instance for prefix-compressed binary values. */
-  private synchronized MonotonicBlockPackedReader getIntervalInstance(FieldInfo field, BinaryEntry bytes) throws IOException {
-    MonotonicBlockPackedReader addresses = addressInstances.get(field.name);
-    if (addresses == null) {
-      data.seek(bytes.addressesOffset);
-      final long size = (bytes.count + INTERVAL_MASK) >>> INTERVAL_SHIFT;
-      addresses = MonotonicBlockPackedReader.of(data, bytes.packedIntsVersion, bytes.blockSize, size, false);
-      if (!merging) {
-        addressInstances.put(field.name, addresses);
-        ramBytesUsed.addAndGet(addresses.ramBytesUsed() + Integer.BYTES);
-      }
-    }
-    return addresses;
-  }
-
-  /** returns a reverse lookup instance for prefix-compressed binary values. */
-  private synchronized ReverseTermsIndex getReverseIndexInstance(FieldInfo field, BinaryEntry bytes) throws IOException {
-    ReverseTermsIndex index = reverseIndexInstances.get(field.name);
-    if (index == null) {
-      index = new ReverseTermsIndex();
-      data.seek(bytes.reverseIndexOffset);
-      long size = (bytes.count + REVERSE_INTERVAL_MASK) >>> REVERSE_INTERVAL_SHIFT;
-      index.termAddresses = MonotonicBlockPackedReader.of(data, bytes.packedIntsVersion, bytes.blockSize, size, false);
-      long dataSize = data.readVLong();
-      PagedBytes pagedBytes = new PagedBytes(15);
-      pagedBytes.copy(data, dataSize);
-      index.terms = pagedBytes.freeze(true);
-      if (!merging) {
-        reverseIndexInstances.put(field.name, index);
-        ramBytesUsed.addAndGet(index.ramBytesUsed());
-      }
-    }
-    return index;
-  }
-
-  private LegacyBinaryDocValues getCompressedBinary(FieldInfo field, final BinaryEntry bytes) throws IOException {
-    final MonotonicBlockPackedReader addresses = getIntervalInstance(field, bytes);
-    final ReverseTermsIndex index = getReverseIndexInstance(field, bytes);
-    assert addresses.size() > 0; // we don't have to handle empty case
-    IndexInput slice = data.slice("terms", bytes.offset, bytes.addressesOffset - bytes.offset);
-    return new CompressedBinaryDocValues(bytes, addresses, index, slice);
-  }
-
-  @Override
-  public SortedDocValues getSorted(FieldInfo field) throws IOException {
-    final int valueCount = (int) binaries.get(field.name).count;
-    final LegacyBinaryDocValues binary = getLegacyBinary(field);
-    NumericEntry entry = ords.get(field.name);
-    final LongValues ordinals = getNumeric(entry);
-    if (entry.format == SPARSE_COMPRESSED) {
-      final SparseNumericDocValues sparseValues = ((SparseNumericDocValuesRandomAccessWrapper) ordinals).values;
-      return new SortedDocValues() {
-
-        @Override
-        public int ordValue() {
-          return (int) sparseValues.longValue();
-        }
-
-        @Override
-        public BytesRef lookupOrd(int ord) {
-          return binary.get(ord);
-        }
-
-        @Override
-        public int getValueCount() {
-          return valueCount;
-        }
-
-        @Override
-        public int docID() {
-          return sparseValues.docID();
-        }
-
-        @Override
-        public int nextDoc() throws IOException {
-          return sparseValues.nextDoc();
-        }
-
-        @Override
-        public int advance(int target) throws IOException {
-          return sparseValues.advance(target);
-        }
-
-        @Override
-        public boolean advanceExact(int target) throws IOException {
-          return sparseValues.advanceExact(target);
-        }
-
-        @Override
-        public long cost() {
-          return sparseValues.cost();
-        }
-
-      };
-    }
-    return new SortedDocValues() {
-      private int docID = -1;
-      private int ord;
-
-      @Override
-      public int docID() {
-        return docID;
-      }
-
-      @Override
-      public int nextDoc() throws IOException {
-        assert docID != NO_MORE_DOCS;
-        while (true) {
-          docID++;
-          if (docID == maxDoc) {
-            docID = NO_MORE_DOCS;
-            break;
-          }
-          ord = (int) ordinals.get(docID);
-          if (ord != -1) {
-            break;
-          }
-        }
-        return docID;
-      }
-
-      @Override
-      public int advance(int target) throws IOException {
-        if (target >= maxDoc) {
-          docID = NO_MORE_DOCS;
-          return docID;
-        } else {
-          docID = target-1;
-          return nextDoc();
-        }
-      }
-
-      @Override
-      public boolean advanceExact(int target) throws IOException {
-        docID = target;
-        ord = (int) ordinals.get(target);
-        return ord != -1;
-      }
-
-      @Override
-      public int ordValue() {
-        return ord;
-      }
-
-      @Override
-      public long cost() {
-        // TODO
-        return 0;
-      }
-
-      @Override
-      public BytesRef lookupOrd(int ord) {
-        return binary.get(ord);
-      }
-
-      @Override
-      public int getValueCount() {
-        return valueCount;
-      }
-
-      @Override
-      public int lookupTerm(BytesRef key) throws IOException {
-        if (binary instanceof CompressedBinaryDocValues) {
-          return (int) ((CompressedBinaryDocValues)binary).lookupTerm(key);
-        } else {
-          return super.lookupTerm(key);
-        }
-      }
-
-      @Override
-      public TermsEnum termsEnum() throws IOException {
-        if (binary instanceof CompressedBinaryDocValues) {
-          return ((CompressedBinaryDocValues)binary).getTermsEnum();
-        } else {
-          return super.termsEnum();
-        }
-      }
-    };
-  }
-
-  /** returns an address instance for sortedset ordinal lists */
-  private LongValues getOrdIndexInstance(FieldInfo field, NumericEntry entry) throws IOException {
-    RandomAccessInput data = this.data.randomAccessSlice(entry.offset, entry.endOffset - entry.offset);
-    return DirectMonotonicReader.getInstance(entry.monotonicMeta, data);
-  }
-
-  @Override
-  public SortedNumericDocValues getSortedNumeric(FieldInfo field) throws IOException {
-    SortedSetEntry ss = sortedNumerics.get(field.name);
-    if (ss.format == SORTED_SINGLE_VALUED) {
-      NumericEntry numericEntry = numerics.get(field.name);
-      final LongValues values = getNumeric(numericEntry);
-      if (numericEntry.format == SPARSE_COMPRESSED) {
-        SparseNumericDocValues sparseValues = ((SparseNumericDocValuesRandomAccessWrapper) values).values;
-        return new SortedNumericDocValues() {
-
-          @Override
-          public long nextValue() throws IOException {
-            return sparseValues.longValue();
-          }
-
-          @Override
-          public int docValueCount() {
-            return 1;
-          }
-
-          @Override
-          public int docID() {
-            return sparseValues.docID();
-          }
-
-          @Override
-          public int nextDoc() throws IOException {
-            return sparseValues.nextDoc();
-          }
-
-          @Override
-          public int advance(int target) throws IOException {
-            return sparseValues.advance(target);
-          }
-
-          @Override
-          public boolean advanceExact(int target) throws IOException {
-            return sparseValues.advanceExact(target);
-          }
-
-          @Override
-          public long cost() {
-            return sparseValues.cost();
-          }
-
-        };
-      }
-      final Bits docsWithField = getLiveBits(numericEntry.missingOffset, maxDoc);
-      return new SortedNumericDocValues() {
-        int docID = -1;
-
-        @Override
-        public int docID() {
-          return docID;
-        }
-
-        @Override
-        public int nextDoc() {
-          while (true) {
-            docID++;
-            if (docID == maxDoc) {
-              docID = NO_MORE_DOCS;
-              break;
-            }
-
-            if (docsWithField.get(docID)) {
-              // TODO: use .nextSetBit here, at least!!
-              break;
-            }
-          }
-          return docID;
-        }
-
-        @Override
-        public int advance(int target) {
-          if (target >= maxDoc) {
-            docID = NO_MORE_DOCS;
-            return docID;
-          } else {
-            docID = target-1;
-            return nextDoc();
-          }
-        }
-
-        @Override
-        public boolean advanceExact(int target) throws IOException {
-          docID = target;
-          return docsWithField.get(docID);
-        }
-
-        @Override
-        public long cost() {
-          // TODO
-          return 0;
-        }
-
-        @Override
-        public int docValueCount() {
-          return 1;
-        }
-
-        @Override
-        public long nextValue() {
-          return values.get(docID);
-        }
-      };
-    } else if (ss.format == SORTED_WITH_ADDRESSES) {
-      NumericEntry numericEntry = numerics.get(field.name);
-      final LongValues values = getNumeric(numericEntry);
-      final LongValues ordIndex = getOrdIndexInstance(field, ordIndexes.get(field.name));
-
-      return new SortedNumericDocValues() {
-        long startOffset;
-        long endOffset;
-        int docID = -1;
-        long upto;
-
-        @Override
-        public int docID() {
-          return docID;
-        }
-
-        @Override
-        public int nextDoc() {
-          while (true) {
-            docID++;
-            if (docID == maxDoc) {
-              docID = NO_MORE_DOCS;
-              return docID;
-            }
-            startOffset = ordIndex.get(docID);
-            endOffset = ordIndex.get(docID+1L);
-            if (endOffset > startOffset) {
-              break;
-            }
-          }
-          upto = startOffset;
-          return docID;
-        }
-
-        @Override
-        public int advance(int target) {
-          if (target >= maxDoc) {
-            docID = NO_MORE_DOCS;
-            return docID;
-          } else {
-            docID = target-1;
-            return nextDoc();
-          }
-        }
-        
-        @Override
-        public boolean advanceExact(int target) throws IOException {
-          docID = target;
-          startOffset = ordIndex.get(docID);
-          endOffset = ordIndex.get(docID+1L);
-          return endOffset > startOffset;
-        }
-        
-        @Override
-        public long cost() {
-          // TODO
-          return 0;
-        }
-        
-        @Override
-        public int docValueCount() {
-          return (int) (endOffset - startOffset);
-        }
-        
-        @Override
-        public long nextValue() {
-          return values.get(upto++);
-        }
-      };
-    } else if (ss.format == SORTED_SET_TABLE) {
-      NumericEntry entry = ords.get(field.name);
-      final LongValues ordinals = getNumeric(entry);
-
-      final long[] table = ss.table;
-      final int[] offsets = ss.tableOffsets;
-      return new SortedNumericDocValues() {
-        int startOffset;
-        int endOffset;
-        int docID = -1;
-        int upto;
-
-        @Override
-        public int docID() {
-          return docID;
-        }
-
-        @Override
-        public int nextDoc() {
-          while (true) {
-            docID++;
-            if (docID == maxDoc) {
-              docID = NO_MORE_DOCS;
-              return docID;
-            }
-            int ord = (int) ordinals.get(docID);
-            startOffset = offsets[ord];
-            endOffset = offsets[ord+1];
-            if (endOffset > startOffset) {
-              break;
-            }
-          }
-          upto = startOffset;
-          return docID;
-        }
-
-        @Override
-        public int advance(int target) {
-          if (target >= maxDoc) {
-            docID = NO_MORE_DOCS;
-            return docID;
-          } else {
-            docID = target-1;
-            return nextDoc();
-          }
-        }
-        
-        @Override
-        public boolean advanceExact(int target) throws IOException {
-          docID = target;
-          int ord = (int) ordinals.get(docID);
-          startOffset = offsets[ord];
-          endOffset = offsets[ord+1];
-          return endOffset > startOffset;
-        }
-        
-        @Override
-        public long cost() {
-          // TODO
-          return 0;
-        }
-
-        @Override
-        public int docValueCount() {
-          return endOffset - startOffset;
-        }
-        
-        @Override
-        public long nextValue() {
-          return table[upto++];
-        }
-      };
-    } else {
-      throw new AssertionError();
-    }
-  }
-
-  @Override
-  public SortedSetDocValues getSortedSet(FieldInfo field) throws IOException {
-    SortedSetEntry ss = sortedSets.get(field.name);
-    switch (ss.format) {
-      case SORTED_SINGLE_VALUED:
-        return DocValues.singleton(getSorted(field));
-      case SORTED_WITH_ADDRESSES:
-        return getSortedSetWithAddresses(field);
-      case SORTED_SET_TABLE:
-        return getSortedSetTable(field, ss);
-      default:
-        throw new AssertionError();
-    }
-  }
-
-  private SortedSetDocValues getSortedSetWithAddresses(FieldInfo field) throws IOException {
-    final long valueCount = binaries.get(field.name).count;
-    // we keep the byte[]s and list of ords on disk, these could be large
-    final LongBinaryDocValues binary = (LongBinaryDocValues) getLegacyBinary(field);
-    final LongValues ordinals = getNumeric(ords.get(field.name));
-    // but the addresses to the ord stream are in RAM
-    final LongValues ordIndex = getOrdIndexInstance(field, ordIndexes.get(field.name));
-
-    return new LegacySortedSetDocValuesWrapper(new LegacySortedSetDocValues() {
-      long startOffset;
-      long offset;
-      long endOffset;
-
-      @Override
-      public long nextOrd() {
-        if (offset == endOffset) {
-          return NO_MORE_ORDS;
-        } else {
-          long ord = ordinals.get(offset);
-          offset++;
-          return ord;
-        }
-      }
-
-      @Override
-      public void setDocument(int docID) {
-        startOffset = offset = ordIndex.get(docID);
-        endOffset = ordIndex.get(docID+1L);
-      }
-
-      @Override
-      public BytesRef lookupOrd(long ord) {
-        return binary.get(ord);
-      }
-
-      @Override
-      public long getValueCount() {
-        return valueCount;
-      }
-
-      @Override
-      public long lookupTerm(BytesRef key) {
-        if (binary instanceof CompressedBinaryDocValues) {
-          return ((CompressedBinaryDocValues)binary).lookupTerm(key);
-        } else {
-          return super.lookupTerm(key);
-        }
-      }
-
-      @Override
-      public TermsEnum termsEnum() throws IOException {
-        if (binary instanceof CompressedBinaryDocValues) {
-          return ((CompressedBinaryDocValues)binary).getTermsEnum();
-        } else {
-          return super.termsEnum();
-        }
-      }
-      }, maxDoc);
-  }
-
-  private SortedSetDocValues getSortedSetTable(FieldInfo field, SortedSetEntry ss) throws IOException {
-    final long valueCount = binaries.get(field.name).count;
-    final LongBinaryDocValues binary = (LongBinaryDocValues) getLegacyBinary(field);
-    final NumericEntry ordinalsEntry = ords.get(field.name);
-    final LongValues ordinals = getNumeric(ordinalsEntry);
-
-    final long[] table = ss.table;
-    final int[] offsets = ss.tableOffsets;
-
-    return new LegacySortedSetDocValuesWrapper(new LegacySortedSetDocValues() {
-
-      int offset, startOffset, endOffset;
-
-      @Override
-      public void setDocument(int docID) {
-        final int ord = (int) ordinals.get(docID);
-        offset = startOffset = offsets[ord];
-        endOffset = offsets[ord + 1];
-      }
-
-      @Override
-      public long nextOrd() {
-        if (offset == endOffset) {
-          return NO_MORE_ORDS;
-        } else {
-          return table[offset++];
-        }
-      }
-
-      @Override
-      public BytesRef lookupOrd(long ord) {
-        return binary.get(ord);
-      }
-
-      @Override
-      public long getValueCount() {
-        return valueCount;
-      }
-
-      @Override
-      public long lookupTerm(BytesRef key) {
-        if (binary instanceof CompressedBinaryDocValues) {
-          return ((CompressedBinaryDocValues) binary).lookupTerm(key);
-        } else {
-          return super.lookupTerm(key);
-        }
-      }
-
-      @Override
-      public TermsEnum termsEnum() throws IOException {
-        if (binary instanceof CompressedBinaryDocValues) {
-          return ((CompressedBinaryDocValues) binary).getTermsEnum();
-        } else {
-          return super.termsEnum();
-        }
-      }
-      }, maxDoc);
-  }
-
-  private Bits getLiveBits(final long offset, final int count) throws IOException {
-    if (offset == ALL_MISSING) {
-      return new Bits.MatchNoBits(count);
-    } else if (offset == ALL_LIVE) {
-      return new Bits.MatchAllBits(count);
-    } else {
-      int length = (int) ((count + 7L) >>> 3);
-      final RandomAccessInput in = data.randomAccessSlice(offset, length);
-      return new Bits() {
-        @Override
-        public boolean get(int index) {
-          try {
-            return (in.readByte(index >> 3) & (1 << (index & 7))) != 0;
-          } catch (IOException e) {
-            throw new RuntimeException(e);
-          }
-        }
-
-        @Override
-        public int length() {
-          return count;
-        }
-      };
-    }
-  }
-
-  private SparseNumericDocValues getSparseNumericDocValues(NumericEntry entry) throws IOException {
-    final RandomAccessInput docIdsData = this.data.randomAccessSlice(entry.missingOffset, entry.offset - entry.missingOffset);
-    final LongValues docIDs = DirectMonotonicReader.getInstance(entry.monotonicMeta, docIdsData);
-    final LongValues values = getNumeric(entry.nonMissingValues); // cannot be sparse
-    return new SparseNumericDocValues(Math.toIntExact(entry.numDocsWithValue), docIDs, values);
-  }
-
-  @Override
-  public synchronized DocValuesProducer getMergeInstance() throws IOException {
-    return new Lucene54DocValuesProducer(this);
-  }
-
-  @Override
-  public void close() throws IOException {
-    data.close();
-  }
-
-  /** metadata entry for a numeric docvalues field */
-  static class NumericEntry {
-    private NumericEntry() {}
-    /** offset to the bitset representing docsWithField, or -1 if no documents have missing values */
-    long missingOffset;
-    /** offset to the actual numeric values */
-    public long offset;
-    /** end offset to the actual numeric values */
-    public long endOffset;
-    /** bits per value used to pack the numeric values */
-    public int bitsPerValue;
-
-    int format;
-    /** count of values written */
-    public long count;
-
-    /** monotonic meta */
-    public DirectMonotonicReader.Meta monotonicMeta;
-
-    long minValue;
-    long gcd;
-    long table[];
-
-    /** for sparse compression */
-    long numDocsWithValue;
-    NumericEntry nonMissingValues;
-    NumberType numberType;
-
-  }
-
-  /** metadata entry for a binary docvalues field */
-  static class BinaryEntry {
-    private BinaryEntry() {}
-    /** offset to the bitset representing docsWithField, or -1 if no documents have missing values */
-    long missingOffset;
-    /** offset to the actual binary values */
-    long offset;
-
-    int format;
-    /** count of values written */
-    public long count;
-    int minLength;
-    int maxLength;
-    /** offset to the addressing data that maps a value to its slice of the byte[] */
-    public long addressesOffset, addressesEndOffset;
-    /** meta data for addresses */
-    public DirectMonotonicReader.Meta addressesMeta;
-    /** offset to the reverse index */
-    public long reverseIndexOffset;
-    /** packed ints version used to encode addressing information */
-    public int packedIntsVersion;
-    /** packed ints blocksize */
-    public int blockSize;
-  }
-
-  /** metadata entry for a sorted-set docvalues field */
-  static class SortedSetEntry {
-    private SortedSetEntry() {}
-    int format;
-
-    long[] table;
-    int[] tableOffsets;
-  }
-
-  // internally we compose complex dv (sorted/sortedset) from other ones
-  static abstract class LongBinaryDocValues extends LegacyBinaryDocValues {
-    @Override
-    public final BytesRef get(int docID) {
-      return get((long)docID);
-    }
-
-    abstract BytesRef get(long id);
-  }
-
-  // used for reverse lookup to a small range of blocks
-  static class ReverseTermsIndex implements Accountable {
-    public MonotonicBlockPackedReader termAddresses;
-    public PagedBytes.Reader terms;
-
-    @Override
-    public long ramBytesUsed() {
-      return termAddresses.ramBytesUsed() + terms.ramBytesUsed();
-    }
-
-    @Override
-    public Collection<Accountable> getChildResources() {
-      List<Accountable> resources = new ArrayList<>();
-      resources.add(Accountables.namedAccountable("term bytes", terms));
-      resources.add(Accountables.namedAccountable("term addresses", termAddresses));
-      return Collections.unmodifiableList(resources);
-    }
-
-    @Override
-    public String toString() {
-      return getClass().getSimpleName() + "(size=" + termAddresses.size() + ")";
-    }
-  }
-
-  //in the compressed case, we add a few additional operations for
-  //more efficient reverse lookup and enumeration
-  static final class CompressedBinaryDocValues extends LongBinaryDocValues {
-    final long numValues;
-    final long numIndexValues;
-    final int maxTermLength;
-    final MonotonicBlockPackedReader addresses;
-    final IndexInput data;
-    final CompressedBinaryTermsEnum termsEnum;
-    final PagedBytes.Reader reverseTerms;
-    final MonotonicBlockPackedReader reverseAddresses;
-    final long numReverseIndexValues;
-
-    public CompressedBinaryDocValues(BinaryEntry bytes, MonotonicBlockPackedReader addresses, ReverseTermsIndex index, IndexInput data) throws IOException {
-      this.maxTermLength = bytes.maxLength;
-      this.numValues = bytes.count;
-      this.addresses = addresses;
-      this.numIndexValues = addresses.size();
-      this.data = data;
-      this.reverseTerms = index.terms;
-      this.reverseAddresses = index.termAddresses;
-      this.numReverseIndexValues = reverseAddresses.size();
-      this.termsEnum = getTermsEnum(data);
-    }
-
-    @Override
-    public BytesRef get(long id) {
-      try {
-        termsEnum.seekExact(id);
-        return termsEnum.term();
-      } catch (IOException e) {
-        throw new RuntimeException(e);
-      }
-    }
-
-    long lookupTerm(BytesRef key) {
-      try {
-        switch (termsEnum.seekCeil(key)) {
-          case FOUND: return termsEnum.ord();
-          case NOT_FOUND: return -termsEnum.ord()-1;
-          default: return -numValues-1;
-        }
-      } catch (IOException bogus) {
-        throw new RuntimeException(bogus);
-      }
-    }
-
-    TermsEnum getTermsEnum() throws IOException {
-      return getTermsEnum(data.clone());
-    }
-
-    private CompressedBinaryTermsEnum getTermsEnum(IndexInput input) throws IOException {
-      return new CompressedBinaryTermsEnum(input);
-    }
-
-    class CompressedBinaryTermsEnum extends TermsEnum {
-      private long currentOrd = -1;
-      // offset to the start of the current block
-      private long currentBlockStart;
-      private final IndexInput input;
-      // delta from currentBlockStart to start of each term
-      private final int offsets[] = new int[INTERVAL_COUNT];
-      private final byte buffer[] = new byte[2*INTERVAL_COUNT-1];
-
-      private final BytesRef term = new BytesRef(maxTermLength);
-      private final BytesRef firstTerm = new BytesRef(maxTermLength);
-      private final BytesRef scratch = new BytesRef();
-
-      CompressedBinaryTermsEnum(IndexInput input) throws IOException {
-        this.input = input;
-        input.seek(0);
-      }
-
-      private void readHeader() throws IOException {
-        firstTerm.length = input.readVInt();
-        input.readBytes(firstTerm.bytes, 0, firstTerm.length);
-        input.readBytes(buffer, 0, INTERVAL_COUNT-1);
-        if (buffer[0] == -1) {
-          readShortAddresses();
-        } else {
-          readByteAddresses();
-        }
-        currentBlockStart = input.getFilePointer();
-      }
-
-      // read single byte addresses: each is delta - 2
-      // (shared prefix byte and length > 0 are both implicit)
-      private void readByteAddresses() throws IOException {
-        int addr = 0;
-        for (int i = 1; i < offsets.length; i++) {
-          addr += 2 + (buffer[i-1] & 0xFF);
-          offsets[i] = addr;
-        }
-      }
-
-      // read double byte addresses: each is delta - 2
-      // (shared prefix byte and length > 0 are both implicit)
-      private void readShortAddresses() throws IOException {
-        input.readBytes(buffer, INTERVAL_COUNT-1, INTERVAL_COUNT);
-        int addr = 0;
-        for (int i = 1; i < offsets.length; i++) {
-          int x = i<<1;
-          addr += 2 + ((buffer[x-1] << 8) | (buffer[x] & 0xFF));
-          offsets[i] = addr;
-        }
-      }
-
-      // set term to the first term
-      private void readFirstTerm() throws IOException {
-        term.length = firstTerm.length;
-        System.arraycopy(firstTerm.bytes, firstTerm.offset, term.bytes, 0, term.length);
-      }
-
-      // read term at offset, delta encoded from first term
-      private void readTerm(int offset) throws IOException {
-        int start = input.readByte() & 0xFF;
-        System.arraycopy(firstTerm.bytes, firstTerm.offset, term.bytes, 0, start);
-        int suffix = offsets[offset] - offsets[offset-1] - 1;
-        input.readBytes(term.bytes, start, suffix);
-        term.length = start + suffix;
-      }
-
-      @Override
-      public BytesRef next() throws IOException {
-        currentOrd++;
-        if (currentOrd >= numValues) {
-          return null;
-        } else {
-          int offset = (int) (currentOrd & INTERVAL_MASK);
-          if (offset == 0) {
-            // switch to next block
-            readHeader();
-            readFirstTerm();
-          } else {
-            readTerm(offset);
-          }
-          return term;
-        }
-      }
-
-      // binary search reverse index to find smaller
-      // range of blocks to search
-      long binarySearchIndex(BytesRef text) throws IOException {
-        long low = 0;
-        long high = numReverseIndexValues - 1;
-        while (low <= high) {
-          long mid = (low + high) >>> 1;
-          reverseTerms.fill(scratch, reverseAddresses.get(mid));
-          int cmp = scratch.compareTo(text);
-
-          if (cmp < 0) {
-            low = mid + 1;
-          } else if (cmp > 0) {
-            high = mid - 1;
-          } else {
-            return mid;
-          }
-        }
-        return high;
-      }
-
-      // binary search against first term in block range
-      // to find term's block
-      long binarySearchBlock(BytesRef text, long low, long high) throws IOException {
-        while (low <= high) {
-          long mid = (low + high) >>> 1;
-          input.seek(addresses.get(mid));
-          term.length = input.readVInt();
-          input.readBytes(term.bytes, 0, term.length);
-          int cmp = term.compareTo(text);
-
-          if (cmp < 0) {
-            low = mid + 1;
-          } else if (cmp > 0) {
-            high = mid - 1;
-          } else {
-            return mid;
-          }
-        }
-        return high;
-      }
-
-      @Override
-      public SeekStatus seekCeil(BytesRef text) throws IOException {
-        // locate block: narrow to block range with index, then search blocks
-        final long block;
-        long indexPos = binarySearchIndex(text);
-        if (indexPos < 0) {
-          block = 0;
-        } else {
-          long low = indexPos << BLOCK_INTERVAL_SHIFT;
-          long high = Math.min(numIndexValues - 1, low + BLOCK_INTERVAL_MASK);
-          block = Math.max(low, binarySearchBlock(text, low, high));
-        }
-
-        // position before block, then scan to term.
-        input.seek(addresses.get(block));
-        currentOrd = (block << INTERVAL_SHIFT) - 1;
-
-        while (next() != null) {
-          int cmp = term.compareTo(text);
-          if (cmp == 0) {
-            return SeekStatus.FOUND;
-          } else if (cmp > 0) {
-            return SeekStatus.NOT_FOUND;
-          }
-        }
-        return SeekStatus.END;
-      }
-
-      @Override
-      public void seekExact(long ord) throws IOException {
-        long block = ord >>> INTERVAL_SHIFT;
-        if (block != currentOrd >>> INTERVAL_SHIFT) {
-          // switch to different block
-          input.seek(addresses.get(block));
-          readHeader();
-        }
-
-        currentOrd = ord;
-
-        int offset = (int) (ord & INTERVAL_MASK);
-        if (offset == 0) {
-          readFirstTerm();
-        } else {
-          input.seek(currentBlockStart + offsets[offset-1]);
-          readTerm(offset);
-        }
-      }
-
-      @Override
-      public BytesRef term() throws IOException {
-        return term;
-      }
-
-      @Override
-      public long ord() throws IOException {
-        return currentOrd;
-      }
-
-      @Override
-      public int docFreq() throws IOException {
-        throw new UnsupportedOperationException();
-      }
-
-      @Override
-      public long totalTermFreq() throws IOException {
-        return -1;
-      }
-
-      @Override
-      public PostingsEnum postings(PostingsEnum reuse, int flags) throws IOException {
-        throw new UnsupportedOperationException();
-      }
-
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/package-info.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/package-info.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/package-info.java
deleted file mode 100644
index 2c19222..0000000
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene54/package-info.java
+++ /dev/null
@@ -1,403 +0,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.
- */
-
-/**
- * Lucene 5.4 file format.
- * 
- * <h1>Apache Lucene - Index File Formats</h1>
- * <div>
- * <ul>
- * <li><a href="#Introduction">Introduction</a></li>
- * <li><a href="#Definitions">Definitions</a>
- *   <ul>
- *   <li><a href="#Inverted_Indexing">Inverted Indexing</a></li>
- *   <li><a href="#Types_of_Fields">Types of Fields</a></li>
- *   <li><a href="#Segments">Segments</a></li>
- *   <li><a href="#Document_Numbers">Document Numbers</a></li>
- *   </ul>
- * </li>
- * <li><a href="#Overview">Index Structure Overview</a></li>
- * <li><a href="#File_Naming">File Naming</a></li>
- * <li><a href="#file-names">Summary of File Extensions</a>
- *   <ul>
- *   <li><a href="#Lock_File">Lock File</a></li>
- *   <li><a href="#History">History</a></li>
- *   <li><a href="#Limitations">Limitations</a></li>
- *   </ul>
- * </li>
- * </ul>
- * </div>
- * <a name="Introduction"></a>
- * <h2>Introduction</h2>
- * <div>
- * <p>This document defines the index file formats used in this version of Lucene.
- * If you are using a different version of Lucene, please consult the copy of
- * <code>docs/</code> that was distributed with
- * the version you are using.</p>
- * <p>Apache Lucene is written in Java, but several efforts are underway to write
- * <a href="http://wiki.apache.org/lucene-java/LuceneImplementations">versions of
- * Lucene in other programming languages</a>. If these versions are to remain
- * compatible with Apache Lucene, then a language-independent definition of the
- * Lucene index format is required. This document thus attempts to provide a
- * complete and independent definition of the Apache Lucene file formats.</p>
- * <p>As Lucene evolves, this document should evolve. Versions of Lucene in
- * different programming languages should endeavor to agree on file formats, and
- * generate new versions of this document.</p>
- * </div>
- * <a name="Definitions"></a>
- * <h2>Definitions</h2>
- * <div>
- * <p>The fundamental concepts in Lucene are index, document, field and term.</p>
- * <p>An index contains a sequence of documents.</p>
- * <ul>
- * <li>A document is a sequence of fields.</li>
- * <li>A field is a named sequence of terms.</li>
- * <li>A term is a sequence of bytes.</li>
- * </ul>
- * <p>The same sequence of bytes in two different fields is considered a different 
- * term. Thus terms are represented as a pair: the string naming the field, and the
- * bytes within the field.</p>
- * <a name="Inverted_Indexing"></a>
- * <h3>Inverted Indexing</h3>
- * <p>The index stores statistics about terms in order to make term-based search
- * more efficient. Lucene's index falls into the family of indexes known as an
- * <i>inverted index.</i> This is because it can list, for a term, the documents
- * that contain it. This is the inverse of the natural relationship, in which
- * documents list terms.</p>
- * <a name="Types_of_Fields"></a>
- * <h3>Types of Fields</h3>
- * <p>In Lucene, fields may be <i>stored</i>, in which case their text is stored
- * in the index literally, in a non-inverted manner. Fields that are inverted are
- * called <i>indexed</i>. A field may be both stored and indexed.</p>
- * <p>The text of a field may be <i>tokenized</i> into terms to be indexed, or the
- * text of a field may be used literally as a term to be indexed. Most fields are
- * tokenized, but sometimes it is useful for certain identifier fields to be
- * indexed literally.</p>
- * <p>See the {@link org.apache.lucene.document.Field Field}
- * java docs for more information on Fields.</p>
- * <a name="Segments"></a>
- * <h3>Segments</h3>
- * <p>Lucene indexes may be composed of multiple sub-indexes, or <i>segments</i>.
- * Each segment is a fully independent index, which could be searched separately.
- * Indexes evolve by:</p>
- * <ol>
- * <li>Creating new segments for newly added documents.</li>
- * <li>Merging existing segments.</li>
- * </ol>
- * <p>Searches may involve multiple segments and/or multiple indexes, each index
- * potentially composed of a set of segments.</p>
- * <a name="Document_Numbers"></a>
- * <h3>Document Numbers</h3>
- * <p>Internally, Lucene refers to documents by an integer <i>document number</i>.
- * The first document added to an index is numbered zero, and each subsequent
- * document added gets a number one greater than the previous.</p>
- * <p>Note that a document's number may change, so caution should be taken when
- * storing these numbers outside of Lucene. In particular, numbers may change in
- * the following situations:</p>
- * <ul>
- * <li>
- * <p>The numbers stored in each segment are unique only within the segment, and
- * must be converted before they can be used in a larger context. The standard
- * technique is to allocate each segment a range of values, based on the range of
- * numbers used in that segment. To convert a document number from a segment to an
- * external value, the segment's <i>base</i> document number is added. To convert
- * an external value back to a segment-specific value, the segment is identified
- * by the range that the external value is in, and the segment's base value is
- * subtracted. For example two five document segments might be combined, so that
- * the first segment has a base value of zero, and the second of five. Document
- * three from the second segment would have an external value of eight.</p>
- * </li>
- * <li>
- * <p>When documents are deleted, gaps are created in the numbering. These are
- * eventually removed as the index evolves through merging. Deleted documents are
- * dropped when segments are merged. A freshly-merged segment thus has no gaps in
- * its numbering.</p>
- * </li>
- * </ul>
- * </div>
- * <a name="Overview"></a>
- * <h2>Index Structure Overview</h2>
- * <div>
- * <p>Each segment index maintains the following:</p>
- * <ul>
- * <li>
- * {@link org.apache.lucene.codecs.lucene62.Lucene62SegmentInfoFormat Segment info}.
- *    This contains metadata about a segment, such as the number of documents,
- *    what files it uses, 
- * </li>
- * <li>
- * {@link org.apache.lucene.codecs.lucene50.Lucene50FieldInfosFormat Field names}. 
- *    This contains the set of field names used in the index.
- * </li>
- * <li>
- * {@link org.apache.lucene.codecs.lucene50.Lucene50StoredFieldsFormat Stored Field values}. 
- * This contains, for each document, a list of attribute-value pairs, where the attributes 
- * are field names. These are used to store auxiliary information about the document, such as 
- * its title, url, or an identifier to access a database. The set of stored fields are what is 
- * returned for each hit when searching. This is keyed by document number.
- * </li>
- * <li>
- * {@link org.apache.lucene.codecs.lucene50.Lucene50PostingsFormat Term dictionary}. 
- * A dictionary containing all of the terms used in all of the
- * indexed fields of all of the documents. The dictionary also contains the number
- * of documents which contain the term, and pointers to the term's frequency and
- * proximity data.
- * </li>
- * <li>
- * {@link org.apache.lucene.codecs.lucene50.Lucene50PostingsFormat Term Frequency data}. 
- * For each term in the dictionary, the numbers of all the
- * documents that contain that term, and the frequency of the term in that
- * document, unless frequencies are omitted (IndexOptions.DOCS_ONLY)
- * </li>
- * <li>
- * {@link org.apache.lucene.codecs.lucene50.Lucene50PostingsFormat Term Proximity data}. 
- * For each term in the dictionary, the positions that the
- * term occurs in each document. Note that this will not exist if all fields in
- * all documents omit position data.
- * </li>
- * <li>
- * {@link org.apache.lucene.codecs.lucene53.Lucene53NormsFormat Normalization factors}. 
- * For each field in each document, a value is stored
- * that is multiplied into the score for hits on that field.
- * </li>
- * <li>
- * {@link org.apache.lucene.codecs.lucene50.Lucene50TermVectorsFormat Term Vectors}. 
- * For each field in each document, the term vector (sometimes
- * called document vector) may be stored. A term vector consists of term text and
- * term frequency. To add Term Vectors to your index see the 
- * {@link org.apache.lucene.document.Field Field} constructors
- * </li>
- * <li>
- * {@link org.apache.lucene.codecs.lucene54.Lucene54DocValuesFormat Per-document values}. 
- * Like stored values, these are also keyed by document
- * number, but are generally intended to be loaded into main memory for fast
- * access. Whereas stored values are generally intended for summary results from
- * searches, per-document values are useful for things like scoring factors.
- * </li>
- * <li>
- * {@link org.apache.lucene.codecs.lucene50.Lucene50LiveDocsFormat Live documents}. 
- * An optional file indicating which documents are live.
- * </li>
- * </ul>
- * <p>Details on each of these are provided in their linked pages.</p>
- * </div>
- * <a name="File_Naming"></a>
- * <h2>File Naming</h2>
- * <div>
- * <p>All files belonging to a segment have the same name with varying extensions.
- * The extensions correspond to the different file formats described below. When
- * using the Compound File format (default in 1.4 and greater) these files (except
- * for the Segment info file, the Lock file, and Deleted documents file) are collapsed 
- * into a single .cfs file (see below for details)</p>
- * <p>Typically, all segments in an index are stored in a single directory,
- * although this is not required.</p>
- * <p>As of version 2.1 (lock-less commits), file names are never re-used.
- * That is, when any file is saved
- * to the Directory it is given a never before used filename. This is achieved
- * using a simple generations approach. For example, the first segments file is
- * segments_1, then segments_2, etc. The generation is a sequential long integer
- * represented in alpha-numeric (base 36) form.</p>
- * </div>
- * <a name="file-names"></a>
- * <h2>Summary of File Extensions</h2>
- * <div>
- * <p>The following table summarizes the names and extensions of the files in
- * Lucene:</p>
- * <table cellspacing="1" cellpadding="4" summary="lucene filenames by extension">
- * <tr>
- * <th>Name</th>
- * <th>Extension</th>
- * <th>Brief Description</th>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.index.SegmentInfos Segments File}</td>
- * <td>segments_N</td>
- * <td>Stores information about a commit point</td>
- * </tr>
- * <tr>
- * <td><a href="#Lock_File">Lock File</a></td>
- * <td>write.lock</td>
- * <td>The Write lock prevents multiple IndexWriters from writing to the same
- * file.</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene62.Lucene62SegmentInfoFormat Segment Info}</td>
- * <td>.si</td>
- * <td>Stores metadata about a segment</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50CompoundFormat Compound File}</td>
- * <td>.cfs, .cfe</td>
- * <td>An optional "virtual" file consisting of all the other index files for
- * systems that frequently run out of file handles.</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50FieldInfosFormat Fields}</td>
- * <td>.fnm</td>
- * <td>Stores information about the fields</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50StoredFieldsFormat Field Index}</td>
- * <td>.fdx</td>
- * <td>Contains pointers to field data</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50StoredFieldsFormat Field Data}</td>
- * <td>.fdt</td>
- * <td>The stored fields for documents</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50PostingsFormat Term Dictionary}</td>
- * <td>.tim</td>
- * <td>The term dictionary, stores term info</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50PostingsFormat Term Index}</td>
- * <td>.tip</td>
- * <td>The index into the Term Dictionary</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50PostingsFormat Frequencies}</td>
- * <td>.doc</td>
- * <td>Contains the list of docs which contain each term along with frequency</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50PostingsFormat Positions}</td>
- * <td>.pos</td>
- * <td>Stores position information about where a term occurs in the index</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50PostingsFormat Payloads}</td>
- * <td>.pay</td>
- * <td>Stores additional per-position metadata information such as character offsets and user payloads</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene53.Lucene53NormsFormat Norms}</td>
- * <td>.nvd, .nvm</td>
- * <td>Encodes length and boost factors for docs and fields</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene54.Lucene54DocValuesFormat Per-Document Values}</td>
- * <td>.dvd, .dvm</td>
- * <td>Encodes additional scoring factors or other per-document information.</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50TermVectorsFormat Term Vector Index}</td>
- * <td>.tvx</td>
- * <td>Stores offset into the document data file</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50TermVectorsFormat Term Vector Documents}</td>
- * <td>.tvd</td>
- * <td>Contains information about each document that has term vectors</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50TermVectorsFormat Term Vector Fields}</td>
- * <td>.tvf</td>
- * <td>The field level info about term vectors</td>
- * </tr>
- * <tr>
- * <td>{@link org.apache.lucene.codecs.lucene50.Lucene50LiveDocsFormat Live Documents}</td>
- * <td>.liv</td>
- * <td>Info about what files are live</td>
- * </tr>
- * </table>
- * </div>
- * <a name="Lock_File"></a>
- * <h2>Lock File</h2>
- * The write lock, which is stored in the index directory by default, is named
- * "write.lock". If the lock directory is different from the index directory then
- * the write lock will be named "XXXX-write.lock" where XXXX is a unique prefix
- * derived from the full path to the index directory. When this file is present, a
- * writer is currently modifying the index (adding or removing documents). This
- * lock file ensures that only one writer is modifying the index at a time.
- * <a name="History"></a>
- * <h2>History</h2>
- * <p>Compatibility notes are provided in this document, describing how file
- * formats have changed from prior versions:</p>
- * <ul>
- * <li>In version 2.1, the file format was changed to allow lock-less commits (ie,
- * no more commit lock). The change is fully backwards compatible: you can open a
- * pre-2.1 index for searching or adding/deleting of docs. When the new segments
- * file is saved (committed), it will be written in the new file format (meaning
- * no specific "upgrade" process is needed). But note that once a commit has
- * occurred, pre-2.1 Lucene will not be able to read the index.</li>
- * <li>In version 2.3, the file format was changed to allow segments to share a
- * single set of doc store (vectors &amp; stored fields) files. This allows for
- * faster indexing in certain cases. The change is fully backwards compatible (in
- * the same way as the lock-less commits change in 2.1).</li>
- * <li>In version 2.4, Strings are now written as true UTF-8 byte sequence, not
- * Java's modified UTF-8. See <a href="http://issues.apache.org/jira/browse/LUCENE-510">
- * LUCENE-510</a> for details.</li>
- * <li>In version 2.9, an optional opaque Map&lt;String,String&gt; CommitUserData
- * may be passed to IndexWriter's commit methods (and later retrieved), which is
- * recorded in the segments_N file. See <a href="http://issues.apache.org/jira/browse/LUCENE-1382">
- * LUCENE-1382</a> for details. Also,
- * diagnostics were added to each segment written recording details about why it
- * was written (due to flush, merge; which OS/JRE was used; etc.). See issue
- * <a href="http://issues.apache.org/jira/browse/LUCENE-1654">LUCENE-1654</a> for details.</li>
- * <li>In version 3.0, compressed fields are no longer written to the index (they
- * can still be read, but on merge the new segment will write them, uncompressed).
- * See issue <a href="http://issues.apache.org/jira/browse/LUCENE-1960">LUCENE-1960</a> 
- * for details.</li>
- * <li>In version 3.1, segments records the code version that created them. See
- * <a href="http://issues.apache.org/jira/browse/LUCENE-2720">LUCENE-2720</a> for details. 
- * Additionally segments track explicitly whether or not they have term vectors. 
- * See <a href="http://issues.apache.org/jira/browse/LUCENE-2811">LUCENE-2811</a> 
- * for details.</li>
- * <li>In version 3.2, numeric fields are written as natively to stored fields
- * file, previously they were stored in text format only.</li>
- * <li>In version 3.4, fields can omit position data while still indexing term
- * frequencies.</li>
- * <li>In version 4.0, the format of the inverted index became extensible via
- * the {@link org.apache.lucene.codecs.Codec Codec} api. Fast per-document storage
- * ({@code DocValues}) was introduced. Normalization factors need no longer be a 
- * single byte, they can be any {@link org.apache.lucene.index.NumericDocValues NumericDocValues}.
- * Terms need not be unicode strings, they can be any byte sequence. Term offsets 
- * can optionally be indexed into the postings lists. Payloads can be stored in the 
- * term vectors.</li>
- * <li>In version 4.1, the format of the postings list changed to use either
- * of FOR compression or variable-byte encoding, depending upon the frequency
- * of the term. Terms appearing only once were changed to inline directly into
- * the term dictionary. Stored fields are compressed by default. </li>
- * <li>In version 4.2, term vectors are compressed by default. DocValues has 
- * a new multi-valued type (SortedSet), that can be used for faceting/grouping/joining
- * on multi-valued fields.</li>
- * <li>In version 4.5, DocValues were extended to explicitly represent missing values.</li>
- * <li>In version 4.6, FieldInfos were extended to support per-field DocValues generation, to 
- * allow updating NumericDocValues fields.</li>
- * <li>In version 4.8, checksum footers were added to the end of each index file 
- * for improved data integrity. Specifically, the last 8 bytes of every index file
- * contain the zlib-crc32 checksum of the file.</li>
- * <li>In version 4.9, DocValues has a new multi-valued numeric type (SortedNumeric)
- * that is suitable for faceting/sorting/analytics.
- * <li>In version 5.4, DocValues have been improved to store more information on disk:
- * addresses for binary fields and ord indexes for multi-valued fields.
- * </li>
- * </ul>
- * <a name="Limitations"></a>
- * <h2>Limitations</h2>
- * <div>
- * <p>Lucene uses a Java <code>int</code> to refer to
- * document numbers, and the index file format uses an <code>Int32</code>
- * on-disk to store document numbers. This is a limitation
- * of both the index file format and the current implementation. Eventually these
- * should be replaced with either <code>UInt64</code> values, or
- * better yet, {@link org.apache.lucene.store.DataOutput#writeVInt VInt} values which have no limit.</p>
- * </div>
- */
-package org.apache.lucene.codecs.lucene54;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/189f2b3f/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/Lucene50RWSegmentInfoFormat.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/Lucene50RWSegmentInfoFormat.java b/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/Lucene50RWSegmentInfoFormat.java
deleted file mode 100644
index 4bed311..0000000
--- a/lucene/backward-codecs/src/test/org/apache/lucene/codecs/lucene50/Lucene50RWSegmentInfoFormat.java
+++ /dev/null
@@ -1,125 +0,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.
- */
-package org.apache.lucene.codecs.lucene50;
-
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.lucene.codecs.CodecUtil;
-import org.apache.lucene.index.CorruptIndexException;
-import org.apache.lucene.index.IndexFileNames;
-import org.apache.lucene.index.SegmentInfo; // javadocs
-import org.apache.lucene.store.ChecksumIndexInput;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.IOContext;
-import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.util.Version;
-
-/**
- * Read-write version of 5.0 SegmentInfoFormat for testing
- * @deprecated for test purposes only
- */
-@Deprecated
-public class Lucene50RWSegmentInfoFormat extends Lucene50SegmentInfoFormat {
-
-  /** Sole constructor. */
-  public Lucene50RWSegmentInfoFormat() {
-  }
-  
-  @Override
-  public SegmentInfo read(Directory dir, String segment, byte[] segmentID, IOContext context) throws IOException {
-    final String fileName = IndexFileNames.segmentFileName(segment, "", Lucene50SegmentInfoFormat.SI_EXTENSION);
-    try (ChecksumIndexInput input = dir.openChecksumInput(fileName, context)) {
-      Throwable priorE = null;
-      SegmentInfo si = null;
-      try {
-        CodecUtil.checkIndexHeader(input, Lucene50SegmentInfoFormat.CODEC_NAME,
-                                          Lucene50SegmentInfoFormat.VERSION_START,
-                                          Lucene50SegmentInfoFormat.VERSION_CURRENT,
-                                          segmentID, "");
-        final Version version = Version.fromBits(input.readInt(), input.readInt(), input.readInt());
-        
-        final int docCount = input.readInt();
-        if (docCount < 0) {
-          throw new CorruptIndexException("invalid docCount: " + docCount, input);
-        }
-        final boolean isCompoundFile = input.readByte() == SegmentInfo.YES;
-        
-        final Map<String,String> diagnostics = input.readMapOfStrings();
-        final Set<String> files = input.readSetOfStrings();
-        final Map<String,String> attributes = input.readMapOfStrings();
-        
-        si = new SegmentInfo(dir, version, null, segment, docCount, isCompoundFile, null, diagnostics, segmentID, attributes, null);
-        si.setFiles(files);
-      } catch (Throwable exception) {
-        priorE = exception;
-      } finally {
-        CodecUtil.checkFooter(input, priorE);
-      }
-      return si;
-    }
-  }
-
-  @Override
-  public void write(Directory dir, SegmentInfo si, IOContext ioContext) throws IOException {
-    final String fileName = IndexFileNames.segmentFileName(si.name, "", Lucene50SegmentInfoFormat.SI_EXTENSION);
-
-    assert si.getIndexSort() == null;
-
-    try (IndexOutput output = dir.createOutput(fileName, ioContext)) {
-      // Only add the file once we've successfully created it, else IFD assert can trip:
-      si.addFile(fileName);
-      CodecUtil.writeIndexHeader(output, 
-                                   Lucene50SegmentInfoFormat.CODEC_NAME, 
-                                   Lucene50SegmentInfoFormat.VERSION_CURRENT,
-                                   si.getId(),
-                                   "");
-      Version version = si.getVersion();
-      if (version.major < 5) {
-        throw new IllegalArgumentException("invalid major version: should be >= 5 but got: " + version.major + " segment=" + si);
-      }
-      // Write the Lucene version that created this segment, since 3.1
-      output.writeInt(version.major);
-      output.writeInt(version.minor);
-      output.writeInt(version.bugfix);
-      assert version.prerelease == 0;
-      output.writeInt(si.maxDoc());
-
-      output.writeByte((byte) (si.getUseCompoundFile() ? SegmentInfo.YES : SegmentInfo.NO));
-      output.writeMapOfStrings(si.getDiagnostics());
-      Set<String> files = si.files();
-      for (String file : files) {
-        if (!IndexFileNames.parseSegmentName(file).equals(si.name)) {
-          throw new IllegalArgumentException("invalid files: expected segment=" + si.name + ", got=" + files);
-        }
-      }
-      output.writeSetOfStrings(files);
-      output.writeMapOfStrings(si.getAttributes());
-      
-      CodecUtil.writeFooter(output);
-    }
-  }
-
-  /** File extension used to store {@link SegmentInfo}. */
-  public final static String SI_EXTENSION = "si";
-  static final String CODEC_NAME = "Lucene50SegmentInfo";
-  static final int VERSION_SAFE_MAPS = 1;
-  static final int VERSION_START = VERSION_SAFE_MAPS;
-  static final int VERSION_CURRENT = VERSION_SAFE_MAPS;
-}