You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by eh...@apache.org on 2020/09/04 01:11:25 UTC

[lucene-solr] branch jira/solr-14792 created (now e94b830)

This is an automated email from the ASF dual-hosted git repository.

ehatcher pushed a change to branch jira/solr-14792
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git.


      at e94b830  Remove velocity ref guide docs

This branch includes the following new commits:

     new 1a72db7  remove solr/contrib/velocity
     new fb4a0d8  remove Velocity license notices
     new 65a84a5  remove velocity-related ignore
     new 71f1668  update versions files with velocity removed
     new 3a43af9  bye bye beanutils; only had been used by velocity
     new d69528a  Gradle adjustments for velocity removal
     new 69d2d7a  Remove velocity-centric example/files
     new c2e7ee8  remove techproducts velocity/browse configurations
     new ac94d03  Remove velocity/browse references from ref guide
     new e94b830  Remove velocity ref guide docs

The 10 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[lucene-solr] 06/10: Gradle adjustments for velocity removal

Posted by eh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ehatcher pushed a commit to branch jira/solr-14792
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit d69528adb3ba2cffad544ce0875ec71e9fd500d9
Author: Erik Hatcher <er...@lucidworks.com>
AuthorDate: Thu Sep 3 20:37:11 2020 -0400

    Gradle adjustments for velocity removal
---
 gradle/documentation/render-javadoc.gradle   | 7 -------
 gradle/maven/defaults-maven.gradle           | 1 -
 settings.gradle                              | 1 -
 solr/packaging/build.gradle                  | 1 -
 solr/solr-ref-guide/build.gradle             | 3 ---
 solr/solr-ref-guide/src/_config.yml.template | 1 -
 6 files changed, 14 deletions(-)

diff --git a/gradle/documentation/render-javadoc.gradle b/gradle/documentation/render-javadoc.gradle
index a34d8a1..3b0b8d4 100644
--- a/gradle/documentation/render-javadoc.gradle
+++ b/gradle/documentation/render-javadoc.gradle
@@ -261,13 +261,6 @@ configure(project(":solr").allprojects) {
   }
 }
 
-configure(project(":solr:contrib:velocity")) {
-  project.tasks.withType(RenderJavadocTask) {
-    // TODO: clean up split packages
-    javadocMissingIgnore = [ "org.apache.solr.response" ]
-  }
-}
-
 configure(project(":solr:contrib:analysis-extras")) {
   project.tasks.withType(RenderJavadocTask) {
     // TODO: clean up split packages
diff --git a/gradle/maven/defaults-maven.gradle b/gradle/maven/defaults-maven.gradle
index 570d011..5c260f3 100644
--- a/gradle/maven/defaults-maven.gradle
+++ b/gradle/maven/defaults-maven.gradle
@@ -66,7 +66,6 @@ configure(rootProject) {
         ":solr:contrib:langid",
         ":solr:contrib:jaegertracer-configurator",
         ":solr:contrib:prometheus-exporter",
-        ":solr:contrib:velocity",
         ":solr:test-framework",
     ]
   }
diff --git a/settings.gradle b/settings.gradle
index a23738e..7ec212a 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -60,7 +60,6 @@ include "solr:contrib:extraction"
 include "solr:contrib:langid"
 include "solr:contrib:jaegertracer-configurator"
 include "solr:contrib:prometheus-exporter"
-include "solr:contrib:velocity"
 include "solr:contrib:ltr"
 include "solr:webapp"
 include "solr:test-framework"
diff --git a/solr/packaging/build.gradle b/solr/packaging/build.gradle
index a75ea19..a29c3eb 100644
--- a/solr/packaging/build.gradle
+++ b/solr/packaging/build.gradle
@@ -50,7 +50,6 @@ dependencies {
    ":solr:contrib:langid",
    ":solr:contrib:ltr",
    ":solr:contrib:prometheus-exporter",
-   ":solr:contrib:velocity",
   ].each { contribName ->
     distSolr project(contribName)
     contrib  project(path: contribName, configuration: "packaging")
diff --git a/solr/solr-ref-guide/build.gradle b/solr/solr-ref-guide/build.gradle
index 8571646..e3063c6 100644
--- a/solr/solr-ref-guide/build.gradle
+++ b/solr/solr-ref-guide/build.gradle
@@ -86,7 +86,6 @@ dependencies {
     depVer('org.apache.logging.log4j:log4j-core')
     depVer('org.apache.opennlp:opennlp-tools')
     depVer('org.apache.tika:tika-core')
-    depVer('org.apache.velocity.tools:velocity-tools-generic')
     depVer('org.apache.zookeeper:zookeeper')
 
     // jekyll dependencies
@@ -195,7 +194,6 @@ task setupLazyProps {
                 ["ivyversions.org.apache.logging.log4j.version", "org.apache.logging.log4j", "log4j-core"],
                 ["ivyversions./org.apache.opennlp/opennlp-tools", "org.apache.opennlp", "opennlp-tools"],
                 ["ivyversions.org.apache.tika.version", "org.apache.tika", "tika-core"],
-                ["ivyversions.org.apache.velocity.tools.version", "org.apache.velocity.tools", "velocity-tools-generic"],
                 ["ivyversions.org.apache.zookeeper.version", "org.apache.zookeeper", "zookeeper"],
 
                 ["ivy-zookeeper-version", "org.apache.zookeeper", "zookeeper"],
@@ -203,7 +201,6 @@ task setupLazyProps {
                 ["ivy-tika-version", "org.apache.tika", "tika-core"],
                 ["ivy-opennlp-version", "org.apache.opennlp", "opennlp-tools"],
                 ["ivy-commons-codec-version", "commons-codec", "commons-codec"],
-                ["ivy-velocity-tools-version", "org.apache.velocity.tools", "velocity-tools-generic"],
                 ["ivy-dropwizard-version", "io.dropwizard.metrics", "metrics-core"]
         ].each { antProp, depGroup, depId ->
             props[antProp] = getVersion(depGroup, depId, configurations.depVer)
diff --git a/solr/solr-ref-guide/src/_config.yml.template b/solr/solr-ref-guide/src/_config.yml.template
index 36c92ed..fb840c0 100755
--- a/solr/solr-ref-guide/src/_config.yml.template
+++ b/solr/solr-ref-guide/src/_config.yml.template
@@ -83,7 +83,6 @@ solr-attributes: &solr-attributes-ref
   ivy-log4j-version: "${ivyversions.org.apache.logging.log4j.version}"
   ivy-opennlp-version: "${ivyversions./org.apache.opennlp/opennlp-tools}"
   ivy-tika-version: "${ivyversions.org.apache.tika.version}"
-  ivy-velocity-tools-version: "${ivyversions.org.apache.velocity.tools.version}"
   ivy-zookeeper-version: "${ivyversions.org.apache.zookeeper.version}"
 
 asciidoctor:


[lucene-solr] 05/10: bye bye beanutils; only had been used by velocity

Posted by eh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ehatcher pushed a commit to branch jira/solr-14792
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 3a43af92df0b88b3ca70fc4ac6ba3a293ce2dd41
Author: Erik Hatcher <er...@lucidworks.com>
AuthorDate: Thu Sep 3 14:28:37 2020 -0400

    bye bye beanutils; only had been used by velocity
---
 versions.props | 1 -
 1 file changed, 1 deletion(-)

diff --git a/versions.props b/versions.props
index 6bc331b9..409678b 100644
--- a/versions.props
+++ b/versions.props
@@ -23,7 +23,6 @@ com.rometools:*=1.12.2
 com.sun.jersey:*=1.19
 com.tdunning:t-digest=3.1
 com.vaadin.external.google:android-json=0.0.20131108.vaadin1
-commons-beanutils:commons-beanutils=1.9.3
 commons-cli:commons-cli=1.4
 commons-codec:commons-codec=1.13
 commons-collections:commons-collections=3.2.2


[lucene-solr] 09/10: Remove velocity/browse references from ref guide

Posted by eh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ehatcher pushed a commit to branch jira/solr-14792
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit ac94d03813ba6271c895667b329e76ea5490c241
Author: Erik Hatcher <er...@lucidworks.com>
AuthorDate: Thu Sep 3 21:04:24 2020 -0400

    Remove velocity/browse references from ref guide
---
 solr/solr-ref-guide/src/libs.adoc             |  2 --
 solr/solr-ref-guide/src/response-writers.adoc | 10 +---------
 solr/solr-ref-guide/src/searching.adoc        |  2 --
 3 files changed, 1 insertion(+), 13 deletions(-)

diff --git a/solr/solr-ref-guide/src/libs.adoc b/solr/solr-ref-guide/src/libs.adoc
index 5243274..9c25ac0 100644
--- a/solr/solr-ref-guide/src/libs.adoc
+++ b/solr/solr-ref-guide/src/libs.adoc
@@ -72,7 +72,5 @@ These examples show how to load contrib modules into Solr:
   <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" />
   <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-ltr-\d.*\.jar" />
 ----
diff --git a/solr/solr-ref-guide/src/response-writers.adoc b/solr/solr-ref-guide/src/response-writers.adoc
index a921658..e550a99 100644
--- a/solr/solr-ref-guide/src/response-writers.adoc
+++ b/solr/solr-ref-guide/src/response-writers.adoc
@@ -1,5 +1,5 @@
 = Response Writers
-:page-children: velocity-response-writer
+
 // 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
@@ -32,7 +32,6 @@ The `wt` parameter selects the Response Writer to be used. The list below descri
 * <<Python Response Writer,python>>
 * <<Ruby Response Writer,ruby>>
 * <<Smile Response Writer,smile>>
-* <<Velocity Response Writer,velocity>>
 * <<XLSX Response Writer,xlsx>>
 * <<Standard XML Response Writer,xml>>
 * <<XSLT Response Writer,xslt>>
@@ -298,13 +297,6 @@ F8V7067-APL-KIT,"electronics,connector",Belkin Mobile Power Cord for iPod w/ Doc
 MA147LL/A,"electronics,music",Apple 60 GB iPod with Video Playback Black,10,399.0,0.2446348
 ----
 
-[[velocity-writer]]
-== Velocity Response Writer
-
-The `VelocityResponseWriter` processes the Solr response and request context through Apache Velocity templating.
-
-See the <<velocity-response-writer.adoc#velocity-response-writer,Velocity Response Writer>> section for details.
-
 == Smile Response Writer
 
 The Smile format is a JSON-compatible binary format, described in detail here: https://en.wikipedia.org/wiki/Smile_%28data_interchange_format%29[https://en.wikipedia.org/wiki/Smile_(data_interchange_format)]
diff --git a/solr/solr-ref-guide/src/searching.adoc b/solr/solr-ref-guide/src/searching.adoc
index cc84627..4298548 100644
--- a/solr/solr-ref-guide/src/searching.adoc
+++ b/solr/solr-ref-guide/src/searching.adoc
@@ -1,6 +1,5 @@
 = Searching
 :page-children: overview-of-searching-in-solr, +
-  velocity-search-ui, +
   relevance, +
   query-syntax-and-parsing, +
   json-request-api, +
@@ -50,7 +49,6 @@
 This section describes how Solr works with search requests. It covers the following topics:
 
 * <<overview-of-searching-in-solr.adoc#overview-of-searching-in-solr,Overview of Searching in Solr>>: An introduction to searching with Solr.
-* <<velocity-search-ui.adoc#velocity-search-ui,Velocity Search UI>>: A simple search UI using the VelocityResponseWriter.
 * <<relevance.adoc#relevance,Relevance>>: Conceptual information about understanding relevance in search results.
 * <<query-syntax-and-parsing.adoc#query-syntax-and-parsing,Query Syntax and Parsing>>: A brief conceptual overview of query syntax and parsing. It also contains the following sub-sections:
 ** <<common-query-parameters.adoc#common-query-parameters,Common Query Parameters>>: No matter the query parser, there are several parameters that are common to all of them.


[lucene-solr] 07/10: Remove velocity-centric example/files

Posted by eh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ehatcher pushed a commit to branch jira/solr-14792
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 69d2d7a30b5adbf7c6cedf0cd0e40692e12c67aa
Author: Erik Hatcher <er...@lucidworks.com>
AuthorDate: Thu Sep 3 20:41:10 2020 -0400

    Remove velocity-centric example/files
---
 solr/example/files/README.md                       |  167 ---
 .../browse-resources/velocity/resources.properties |   82 --
 .../velocity/resources_de_DE.properties            |   18 -
 .../velocity/resources_fr_FR.properties            |   20 -
 solr/example/files/conf/currency.xml               |   67 -
 solr/example/files/conf/elevate.xml                |   42 -
 solr/example/files/conf/email_url_types.txt        |    2 -
 solr/example/files/conf/lang/contractions_ca.txt   |    8 -
 solr/example/files/conf/lang/contractions_fr.txt   |   15 -
 solr/example/files/conf/lang/contractions_ga.txt   |    5 -
 solr/example/files/conf/lang/contractions_it.txt   |   23 -
 solr/example/files/conf/lang/hyphenations_ga.txt   |    5 -
 solr/example/files/conf/lang/stemdict_nl.txt       |    6 -
 solr/example/files/conf/lang/stoptags_ja.txt       |  420 ------
 solr/example/files/conf/lang/stopwords_ar.txt      |  125 --
 solr/example/files/conf/lang/stopwords_bg.txt      |  193 ---
 solr/example/files/conf/lang/stopwords_ca.txt      |  220 ---
 solr/example/files/conf/lang/stopwords_cz.txt      |  172 ---
 solr/example/files/conf/lang/stopwords_da.txt      |  110 --
 solr/example/files/conf/lang/stopwords_de.txt      |  294 ----
 solr/example/files/conf/lang/stopwords_el.txt      |   78 --
 solr/example/files/conf/lang/stopwords_en.txt      |   54 -
 solr/example/files/conf/lang/stopwords_es.txt      |  356 -----
 solr/example/files/conf/lang/stopwords_eu.txt      |   99 --
 solr/example/files/conf/lang/stopwords_fa.txt      |  313 -----
 solr/example/files/conf/lang/stopwords_fi.txt      |   97 --
 solr/example/files/conf/lang/stopwords_fr.txt      |  186 ---
 solr/example/files/conf/lang/stopwords_ga.txt      |  110 --
 solr/example/files/conf/lang/stopwords_gl.txt      |  161 ---
 solr/example/files/conf/lang/stopwords_hi.txt      |  235 ----
 solr/example/files/conf/lang/stopwords_hu.txt      |  211 ---
 solr/example/files/conf/lang/stopwords_hy.txt      |   46 -
 solr/example/files/conf/lang/stopwords_id.txt      |  359 -----
 solr/example/files/conf/lang/stopwords_it.txt      |  303 -----
 solr/example/files/conf/lang/stopwords_ja.txt      |  127 --
 solr/example/files/conf/lang/stopwords_lv.txt      |  172 ---
 solr/example/files/conf/lang/stopwords_nl.txt      |  119 --
 solr/example/files/conf/lang/stopwords_no.txt      |  194 ---
 solr/example/files/conf/lang/stopwords_pt.txt      |  253 ----
 solr/example/files/conf/lang/stopwords_ro.txt      |  233 ----
 solr/example/files/conf/lang/stopwords_ru.txt      |  243 ----
 solr/example/files/conf/lang/stopwords_sv.txt      |  133 --
 solr/example/files/conf/lang/stopwords_th.txt      |  119 --
 solr/example/files/conf/lang/stopwords_tr.txt      |  212 ---
 solr/example/files/conf/lang/userdict_ja.txt       |   29 -
 solr/example/files/conf/managed-schema             |  520 -------
 solr/example/files/conf/params.json                |   34 -
 solr/example/files/conf/protwords.txt              |   21 -
 solr/example/files/conf/solrconfig.xml             | 1423 --------------------
 solr/example/files/conf/stopwords.txt              |   14 -
 solr/example/files/conf/synonyms.txt               |   29 -
 solr/example/files/conf/update-script.js           |  115 --
 solr/example/files/conf/velocity/browse.vm         |   32 -
 solr/example/files/conf/velocity/dropit.js         |    0
 solr/example/files/conf/velocity/facet_doc_type.vm |    2 -
 .../files/conf/velocity/facet_text_shingles.vm     |   12 -
 solr/example/files/conf/velocity/facets.vm         |   24 -
 solr/example/files/conf/velocity/footer.vm         |   29 -
 solr/example/files/conf/velocity/head.vm           |  290 ----
 solr/example/files/conf/velocity/hit.vm            |   77 --
 .../files/conf/velocity/img/english_640.png        |  Bin 138412 -> 0 bytes
 .../example/files/conf/velocity/img/france_640.png |  Bin 99992 -> 0 bytes
 .../files/conf/velocity/img/germany_640.png        |  Bin 105271 -> 0 bytes
 solr/example/files/conf/velocity/img/globe_256.png |  Bin 46622 -> 0 bytes
 .../files/conf/velocity/jquery.tx3-tag-cloud.js    |    0
 solr/example/files/conf/velocity/js/dropit.js      |   97 --
 .../files/conf/velocity/js/jquery.autocomplete.js  |  763 -----------
 .../files/conf/velocity/js/jquery.tx3-tag-cloud.js |   70 -
 solr/example/files/conf/velocity/layout.vm         |   42 -
 solr/example/files/conf/velocity/macros.vm         |   16 -
 .../example/files/conf/velocity/mime_type_lists.vm |   68 -
 solr/example/files/conf/velocity/results.vm        |   20 -
 solr/example/files/conf/velocity/results_list.vm   |   21 -
 73 files changed, 10155 deletions(-)

diff --git a/solr/example/files/README.md b/solr/example/files/README.md
deleted file mode 100644
index daeb5a3..0000000
--- a/solr/example/files/README.md
+++ /dev/null
@@ -1,167 +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.
--->
-
-# Solr-Powered File Search
-
-This README guides you through creating a Solr-powered search engine for your own set of files including Word documents,
-PDFs, HTML, and many other supported types. 
-
-For further explanations, see the frequently asked questions at the end of the guide.
-
-## GETTING STARTED
-
-* To start Solr, enter the following command (make sure you’ve cd’ed into the directory in which Solr was installed): 
-
-```
-	bin/solr start 
-```
-
-* If you’ve started correctly, you should see the following output:
-	
-```
-		Waiting to see Solr listening on port 8983 [/]  
-		Started Solr server on port 8983 (pid=<your pid>). Happy searching!
-```
-
-## CREATING THE CORE/COLLECTION
-
-* Before you can index your documents, you’ll need to create a core/collection. Do this by entering:
-
-```
-		bin/solr create -c files -d example/files/conf
-```
-
-* Now you’ve created a core called “files” using a configuration tuned for indexing and querying rich text files.
-
-* You should see the following response:
-
-```
-		Creating new core 'files' using command:
-		http://localhost:8983/solr/admin/cores?action=CREATE&name=files&instanceDir=files
-
-		{
-			"responseHeader":{
-				"status":0,
-				"QTime":239},
-			"core":"files"}
-```
-
-## INDEXING DOCUMENTS
-
-* Return to your command shell. To post all of your documents to the documents core, enter the following: 
-
-```
-		bin/post -c files ~/Documents
-```
-
-* Depending on how many documents you have, this could take a while. Sit back and watch the magic happen. When all of your documents have been indexed you’ll see something like:
-
-```
-		<some number> files indexed.
-		COMMITting Solr index changes to http://localhost:8983/solr/files/update...
-		Time spent: <some amount of time>
-```
-		
-* To see a list of accepted file types, do:
-
-```
-  	  	bin/post -h
-```
-
-## BROWSING DOCUMENTS
-
-* Your document information can be viewed in multiple formats: XML, JSON, CSV, as well as a nice HTML interface. 
-
-* To view your document information in the HTML interface view, adjust the URL in your address bar to [http://localhost:8983/solr/files/browse](http://localhost:8983/solr/files/browse)
-
-* To view your document information in XML or other formats, add &wt (for writer type) to the end of that URL. i.e. To view your results in xml format direct your browser to:
-	[http://localhost:8983/solr/files/browse?&wt=xml](http://localhost:8983/solr/files/browse?&wt=xml)
-
-## ADMIN UI
-
-* Another way to verify that your core has been created is to view it in the Admin User Interface.
-
-	- The Admin_UI serves as a visual tool for indexing and querying your index in Solr.
-
-* To access the Admin UI, go to your browser and visit :
-	[http://localhost:8983/solr/](http://localhost:8983/solr/)
-
-	- <i>The Admin UI is only accessible when Solr is running</i>
-
-* On the left-hand side of the home page, click on “Core Selector”. The core you created, called “files” should be listed there; click on it. If it’s not listed, your core was not created and you’ll need to re-enter the create command.
-* Alternatively, you could just go to the core page directly by visiting : [http://localhost:8983/solr/#/files](http://localhost:8983/solr/#/files)
-
-* Now you’ve opened the core page. On this page there are a multitude of different tools you can use to analyze and search your core. You will make use of these features after indexing your documents.
-* Take note of the "Num Docs" field in your core Statistics. If after indexing your documents, it shows Num Docs to be 0, that means there was a problem indexing.
-
-## QUERYING INDEX
-
-* In the Admin UI, enter a term in the query box to see which documents contain the word. 
-
-* You can filter the results by switching between the different content type tabs. To view an international version of this interface, hover over the globe icon in the top right hand section of the page.
-
-* Notice the tag cloud on the right side, which facets by top phrases extracted during indexing.
-  Click on the phrases to see which documents contain them.
-
-* Another way to query the index is by manipulating the URL in your address bar once in the browse view.
-
-* i.e. : [http://localhost:8983/solr/files/browse?q=Lucene](http://localhost:8983/solr/files/browse?q=Lucene)
-
-## FAQs
-
-* Why use -d when creating a core?
-	* -d specifies a specific configuration to use.  This example as a configuration tuned for indexing and query rich
-	  text files.
-	
-* How do I delete a core?
-  * To delete a core (i.e. files), you can enter the following in your command shell:
-	
-    ```
-    bin/solr delete -c files
-    ```
- 
-  * You should see the following output:
-	
-	Deleting core 'files' using command:
-		
-	```
-	http://localhost:8983/solr/admin/cores?action=UNLOAD&core=files&deleteIndex=true&deleteDataDir=true&deleteInstanceDir=true
-    
-	{"responseHeader":{
-		"status":0,
-		"QTime":19}}
-    ```
-  
-  * This calls the Solr core admin handler, "UNLOAD", and the parameters "deleteDataDir" and "deleteInstanceDir" to ensure that all data associated with core is also removed
-
-* How can I change the /browse UI?
-
-    The primary templates are under example/files/conf/velocity.  **In order to edit those files in place (without having to
-    re-create or patch a core/collection with an updated configuration)**, Solr can be started with a special system property
-    set to the _absolute_ path to the conf/velocity directory, like this: 
-	
-    ```
-    bin/solr start -Dvelocity.template.base.dir=</full/path/to>/example/files/conf/velocity/
-    ```
- 
-If you want to adjust the browse templates for an existing collection, edit the core’s configuration
-under server/solr/files/conf/velocity.
-
-## Provenance of free images used in this example:
-
-  - Globe icon: visualpharm.com
-  - Flag icons: freeflagicons.com
\ No newline at end of file
diff --git a/solr/example/files/browse-resources/velocity/resources.properties b/solr/example/files/browse-resources/velocity/resources.properties
deleted file mode 100644
index 4cc15b2..0000000
--- a/solr/example/files/browse-resources/velocity/resources.properties
+++ /dev/null
@@ -1,82 +0,0 @@
-# Title: "<Solr logo> Powered File Search"
-powered_file_search=Powered File Search
-
-# Search box and results
-find=Find
-submit=Submit
-page_of=Page <span class="page-num">{0}</span> of <span class="page-count">{1}</span>
-previous=previous
-next=next
-results_found_in=results found in {0}ms
-results_found=results found
- 
-# Facets
-facet.top_phrases=Top Phrases
-facet.language=Language
- 
-# Type labels
-type.all=All Types
-type.doc.label=Document
-type.html.label=HTML
-type.pdf.label=PDF
-type.presentation.label=Presentation
-type.spreadsheet.label=Spreadsheet
-type.text.label=text
-type.image.label=image
-type.unknown=unknown
-
-# Language code mappings
-#   - from https://code.google.com/p/language-detection/wiki/LanguageList
-language.af=Afrikaans
-language.ar=Arabic
-language.bg=Bulgarian
-language.bn=Bengali
-language.cs=Czech
-language.da=Danish
-language.de=German
-language.el=Greek
-language.en=English
-language.es=Spanish
-language.et=Estonian
-language.fa=Persian
-language.fi=Finnish
-language.fr=French
-language.gu=Gujarati
-language.he=Hebrew
-language.hi=Hindi
-language.hr=Croatian
-language.hu=Hungarian
-language.id=Indonesian
-language.it=Italian
-language.ja=Japanese
-language.kn=Kannada
-language.ko=Korean
-language.lt=Lithuanian
-language.lv=Latvian
-language.mk=Macedonian
-language.ml=Malayalam
-language.mr=Marathi
-language.ne=Nepali
-language.nl=Dutch
-language.no=Norwegian
-language.pa=Punjabi
-language.pl=Polish
-language.pt=Portuguese
-language.ro=Romanian
-language.ru=Russian
-language.sk=Slovak
-language.sl=Slovene
-language.so=Somali
-language.sq=Albanian
-language.sv=Swedish
-language.sw=Swahili
-language.ta=Tamil
-language.te=Telugu
-language.th=Thai
-language.tl=Tagalog
-language.tr=Turkish
-language.uk=Ukrainian
-language.ur=Urdu
-language.vi=Vietnamese
-language.zh-cn=Simplified Chinese
-language.zh-tw=Traditional Chinese
diff --git a/solr/example/files/browse-resources/velocity/resources_de_DE.properties b/solr/example/files/browse-resources/velocity/resources_de_DE.properties
deleted file mode 100644
index 1837bf5..0000000
--- a/solr/example/files/browse-resources/velocity/resources_de_DE.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-find=Durchsuchen
-page_of=Page <span class="page-num">{0}</span> von <span class="page-count">{1}</span>
-previous=vorherige Seite
-next=n\u00e4chste Seite
-results_found_in=Ergebnisse in {0}ms gefunden
-results_found=Ergebnisse gefunden
-powered_file_search= betriebene Dateisuche
-type.text.label=Text
-type.pdf.label=PDF
-type.html.label=HTML
-type.presentation.label=Pr\u00e4sentation
-type.image.label=Bild
-type.doc.label=Dokument
-type.spreadsheet.label=Kalkulationstabelle
-type.unknown=unbekannt
-type.all=alle Arten
-facet.top_phrases=Schl\u00fcssels\u00e4tze
-submit=einreichen
diff --git a/solr/example/files/browse-resources/velocity/resources_fr_FR.properties b/solr/example/files/browse-resources/velocity/resources_fr_FR.properties
deleted file mode 100644
index 5b62757..0000000
--- a/solr/example/files/browse-resources/velocity/resources_fr_FR.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-find=Recherche
-page_of=Page <span class="page-num">{0}</span> de <span class="page-count">{1}</span>
-previous=pr\u00e9c\u00e9dent
-next=suivant
-results_found_in=resultas ficher en {0}ms
-results_found=resultas ficher
-powered_file_search=Recherches de Fichiers
-type.text.label=Texte
-type.pdf.label=PDF
-type.html.label=HTML
-type.image.label=Image
-type.presentation.label=Pr\u00e9sentation
-type.doc.label=Documents
-type.spreadsheet.label=Tableur
-type.unknown=Inconnu
-type.all=Tous les Types
-facet.top_phrases=Phrases Cl\u00e9s
-submit=Recherche
-
-
diff --git a/solr/example/files/conf/currency.xml b/solr/example/files/conf/currency.xml
deleted file mode 100644
index 3a9c58a..0000000
--- a/solr/example/files/conf/currency.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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 CurrencyField type 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>
diff --git a/solr/example/files/conf/elevate.xml b/solr/example/files/conf/elevate.xml
deleted file mode 100644
index 2c09ebe..0000000
--- a/solr/example/files/conf/elevate.xml
+++ /dev/null
@@ -1,42 +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.
--->
-
-<!-- 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>
diff --git a/solr/example/files/conf/email_url_types.txt b/solr/example/files/conf/email_url_types.txt
deleted file mode 100644
index 622b193..0000000
--- a/solr/example/files/conf/email_url_types.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<URL>
-<EMAIL>
diff --git a/solr/example/files/conf/lang/contractions_ca.txt b/solr/example/files/conf/lang/contractions_ca.txt
deleted file mode 100644
index 307a85f..0000000
--- a/solr/example/files/conf/lang/contractions_ca.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# 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
diff --git a/solr/example/files/conf/lang/contractions_fr.txt b/solr/example/files/conf/lang/contractions_fr.txt
deleted file mode 100644
index f1bba51..0000000
--- a/solr/example/files/conf/lang/contractions_fr.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-# 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
diff --git a/solr/example/files/conf/lang/contractions_ga.txt b/solr/example/files/conf/lang/contractions_ga.txt
deleted file mode 100644
index 9ebe7fa..0000000
--- a/solr/example/files/conf/lang/contractions_ga.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-# Set of Irish contractions for ElisionFilter
-# TODO: load this as a resource from the analyzer and sync it in build.xml
-d
-m
-b
diff --git a/solr/example/files/conf/lang/contractions_it.txt b/solr/example/files/conf/lang/contractions_it.txt
deleted file mode 100644
index cac0409..0000000
--- a/solr/example/files/conf/lang/contractions_it.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-# 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
diff --git a/solr/example/files/conf/lang/hyphenations_ga.txt b/solr/example/files/conf/lang/hyphenations_ga.txt
deleted file mode 100644
index 4d2642c..0000000
--- a/solr/example/files/conf/lang/hyphenations_ga.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-# Set of Irish hyphenations for StopFilter
-# TODO: load this as a resource from the analyzer and sync it in build.xml
-h
-n
-t
diff --git a/solr/example/files/conf/lang/stemdict_nl.txt b/solr/example/files/conf/lang/stemdict_nl.txt
deleted file mode 100644
index 4410729..0000000
--- a/solr/example/files/conf/lang/stemdict_nl.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-# 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
diff --git a/solr/example/files/conf/lang/stoptags_ja.txt b/solr/example/files/conf/lang/stoptags_ja.txt
deleted file mode 100644
index 71b7508..0000000
--- a/solr/example/files/conf/lang/stoptags_ja.txt
+++ /dev/null
@@ -1,420 +0,0 @@
-#
-# 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
diff --git a/solr/example/files/conf/lang/stopwords_ar.txt b/solr/example/files/conf/lang/stopwords_ar.txt
deleted file mode 100644
index 046829d..0000000
--- a/solr/example/files/conf/lang/stopwords_ar.txt
+++ /dev/null
@@ -1,125 +0,0 @@
-# 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 ا
-من
-ومن
-منها
-منه
-في
-وفي
-فيها
-فيه
-و
-ف
-ثم
-او
-أو
-ب
-بها
-به
-ا
-أ
-اى
-اي
-أي
-أى
-لا
-ولا
-الا
-ألا
-إلا
-لكن
-ما
-وما
-كما
-فما
-عن
-مع
-اذا
-إذا
-ان
-أن
-إن
-انها
-أنها
-إنها
-انه
-أنه
-إنه
-بان
-بأن
-فان
-فأن
-وان
-وأن
-وإن
-التى
-التي
-الذى
-الذي
-الذين
-الى
-الي
-إلى
-إلي
-على
-عليها
-عليه
-اما
-أما
-إما
-ايضا
-أيضا
-كل
-وكل
-لم
-ولم
-لن
-ولن
-هى
-هي
-هو
-وهى
-وهي
-وهو
-فهى
-فهي
-فهو
-انت
-أنت
-لك
-لها
-له
-هذه
-هذا
-تلك
-ذلك
-هناك
-كانت
-كان
-يكون
-تكون
-وكانت
-وكان
-غير
-بعض
-قد
-نحو
-بين
-بينما
-منذ
-ضمن
-حيث
-الان
-الآن
-خلال
-بعد
-قبل
-حتى
-عند
-عندما
-لدى
-جميع
diff --git a/solr/example/files/conf/lang/stopwords_bg.txt b/solr/example/files/conf/lang/stopwords_bg.txt
deleted file mode 100644
index 1ae4ba2..0000000
--- a/solr/example/files/conf/lang/stopwords_bg.txt
+++ /dev/null
@@ -1,193 +0,0 @@
-# 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
-а
-аз
-ако
-ала
-бе
-без
-беше
-би
-бил
-била
-били
-било
-близо
-бъдат
-бъде
-бяха
-в
-вас
-ваш
-ваша
-вероятно
-вече
-взема
-ви
-вие
-винаги
-все
-всеки
-всички
-всичко
-всяка
-във
-въпреки
-върху
-г
-ги
-главно
-го
-д
-да
-дали
-до
-докато
-докога
-дори
-досега
-доста
-е
-едва
-един
-ето
-за
-зад
-заедно
-заради
-засега
-затова
-защо
-защото
-и
-из
-или
-им
-има
-имат
-иска
-й
-каза
-как
-каква
-какво
-както
-какъв
-като
-кога
-когато
-което
-които
-кой
-който
-колко
-която
-къде
-където
-към
-ли
-м
-ме
-между
-мен
-ми
-мнозина
-мога
-могат
-може
-моля
-момента
-му
-н
-на
-над
-назад
-най
-направи
-напред
-например
-нас
-не
-него
-нея
-ни
-ние
-никой
-нито
-но
-някои
-някой
-няма
-обаче
-около
-освен
-особено
-от
-отгоре
-отново
-още
-пак
-по
-повече
-повечето
-под
-поне
-поради
-после
-почти
-прави
-пред
-преди
-през
-при
-пък
-първо
-с
-са
-само
-се
-сега
-си
-скоро
-след
-сме
-според
-сред
-срещу
-сте
-съм
-със
-също
-т
-тази
-така
-такива
-такъв
-там
-твой
-те
-тези
-ти
-тн
-то
-това
-тогава
-този
-той
-толкова
-точно
-трябва
-тук
-тъй
-тя
-тях
-у
-харесва
-ч
-че
-често
-чрез
-ще
-щом
-я
diff --git a/solr/example/files/conf/lang/stopwords_ca.txt b/solr/example/files/conf/lang/stopwords_ca.txt
deleted file mode 100644
index 3da65de..0000000
--- a/solr/example/files/conf/lang/stopwords_ca.txt
+++ /dev/null
@@ -1,220 +0,0 @@
-# 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
diff --git a/solr/example/files/conf/lang/stopwords_cz.txt b/solr/example/files/conf/lang/stopwords_cz.txt
deleted file mode 100644
index 53c6097..0000000
--- a/solr/example/files/conf/lang/stopwords_cz.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-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ž
diff --git a/solr/example/files/conf/lang/stopwords_da.txt b/solr/example/files/conf/lang/stopwords_da.txt
deleted file mode 100644
index 42e6145..0000000
--- a/solr/example/files/conf/lang/stopwords_da.txt
+++ /dev/null
@@ -1,110 +0,0 @@
- | 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
diff --git a/solr/example/files/conf/lang/stopwords_de.txt b/solr/example/files/conf/lang/stopwords_de.txt
deleted file mode 100644
index 86525e7..0000000
--- a/solr/example/files/conf/lang/stopwords_de.txt
+++ /dev/null
@@ -1,294 +0,0 @@
- | 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
-
diff --git a/solr/example/files/conf/lang/stopwords_el.txt b/solr/example/files/conf/lang/stopwords_el.txt
deleted file mode 100644
index 232681f..0000000
--- a/solr/example/files/conf/lang/stopwords_el.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-# Lucene Greek Stopwords list
-# Note: by default this file is used after GreekLowerCaseFilter,
-# so when modifying this file use 'σ' instead of 'ς' 
-ο
-η
-το
-οι
-τα
-του
-τησ
-των
-τον
-την
-και 
-κι
-κ
-ειμαι
-εισαι
-ειναι
-ειμαστε
-ειστε
-στο
-στον
-στη
-στην
-μα
-αλλα
-απο
-για
-προσ
-με
-σε
-ωσ
-παρα
-αντι
-κατα
-μετα
-θα
-να
-δε
-δεν
-μη
-μην
-επι
-ενω
-εαν
-αν
-τοτε
-που
-πωσ
-ποιοσ
-ποια
-ποιο
-ποιοι
-ποιεσ
-ποιων
-ποιουσ
-αυτοσ
-αυτη
-αυτο
-αυτοι
-αυτων
-αυτουσ
-αυτεσ
-αυτα
-εκεινοσ
-εκεινη
-εκεινο
-εκεινοι
-εκεινεσ
-εκεινα
-εκεινων
-εκεινουσ
-οπωσ
-ομωσ
-ισωσ
-οσο
-οτι
diff --git a/solr/example/files/conf/lang/stopwords_en.txt b/solr/example/files/conf/lang/stopwords_en.txt
deleted file mode 100644
index 2c164c0..0000000
--- a/solr/example/files/conf/lang/stopwords_en.txt
+++ /dev/null
@@ -1,54 +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.
-
-# 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
diff --git a/solr/example/files/conf/lang/stopwords_es.txt b/solr/example/files/conf/lang/stopwords_es.txt
deleted file mode 100644
index 487d78c..0000000
--- a/solr/example/files/conf/lang/stopwords_es.txt
+++ /dev/null
@@ -1,356 +0,0 @@
- | 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
-
diff --git a/solr/example/files/conf/lang/stopwords_eu.txt b/solr/example/files/conf/lang/stopwords_eu.txt
deleted file mode 100644
index 25f1db9..0000000
--- a/solr/example/files/conf/lang/stopwords_eu.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-# 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
diff --git a/solr/example/files/conf/lang/stopwords_fa.txt b/solr/example/files/conf/lang/stopwords_fa.txt
deleted file mode 100644
index 723641c..0000000
--- a/solr/example/files/conf/lang/stopwords_fa.txt
+++ /dev/null
@@ -1,313 +0,0 @@
-# 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 'ی'
-انان
-نداشته
-سراسر
-خياه
-ايشان
-وي
-تاكنون
-بيشتري
-دوم
-پس
-ناشي
-وگو
-يا
-داشتند
-سپس
-هنگام
-هرگز
-پنج
-نشان
-امسال
-ديگر
-گروهي
-شدند
-چطور
-ده
-و
-دو
-نخستين
-ولي
-چرا
-چه
-وسط
-ه
-كدام
-قابل
-يك
-رفت
-هفت
-همچنين
-در
-هزار
-بله
-بلي
-شايد
-اما
-شناسي
-گرفته
-دهد
-داشته
-دانست
-داشتن
-خواهيم
-ميليارد
-وقتيكه
-امد
-خواهد
-جز
-اورده
-شده
-بلكه
-خدمات
-شدن
-برخي
-نبود
-بسياري
-جلوگيري
-حق
-كردند
-نوعي
-بعري
-نكرده
-نظير
-نبايد
-بوده
-بودن
-داد
-اورد
-هست
-جايي
-شود
-دنبال
-داده
-بايد
-سابق
-هيچ
-همان
-انجا
-كمتر
-كجاست
-گردد
-كسي
-تر
-مردم
-تان
-دادن
-بودند
-سري
-جدا
-ندارند
-مگر
-يكديگر
-دارد
-دهند
-بنابراين
-هنگامي
-سمت
-جا
-انچه
-خود
-دادند
-زياد
-دارند
-اثر
-بدون
-بهترين
-بيشتر
-البته
-به
-براساس
-بيرون
-كرد
-بعضي
-گرفت
-توي
-اي
-ميليون
-او
-جريان
-تول
-بر
-مانند
-برابر
-باشيم
-مدتي
-گويند
-اكنون
-تا
-تنها
-جديد
-چند
-بي
-نشده
-كردن
-كردم
-گويد
-كرده
-كنيم
-نمي
-نزد
-روي
-قصد
-فقط
-بالاي
-ديگران
-اين
-ديروز
-توسط
-سوم
-ايم
-دانند
-سوي
-استفاده
-شما
-كنار
-داريم
-ساخته
-طور
-امده
-رفته
-نخست
-بيست
-نزديك
-طي
-كنيد
-از
-انها
-تمامي
-داشت
-يكي
-طريق
-اش
-چيست
-روب
-نمايد
-گفت
-چندين
-چيزي
-تواند
-ام
-ايا
-با
-ان
-ايد
-ترين
-اينكه
-ديگري
-راه
-هايي
-بروز
-همچنان
-پاعين
-كس
-حدود
-مختلف
-مقابل
-چيز
-گيرد
-ندارد
-ضد
-همچون
-سازي
-شان
-مورد
-باره
-مرسي
-خويش
-برخوردار
-چون
-خارج
-شش
-هنوز
-تحت
-ضمن
-هستيم
-گفته
-فكر
-بسيار
-پيش
-براي
-روزهاي
-انكه
-نخواهد
-بالا
-كل
-وقتي
-كي
-چنين
-كه
-گيري
-نيست
-است
-كجا
-كند
-نيز
-يابد
-بندي
-حتي
-توانند
-عقب
-خواست
-كنند
-بين
-تمام
-همه
-ما
-باشند
-مثل
-شد
-اري
-باشد
-اره
-طبق
-بعد
-اگر
-صورت
-غير
-جاي
-بيش
-ريزي
-اند
-زيرا
-چگونه
-بار
-لطفا
-مي
-درباره
-من
-ديده
-همين
-گذاري
-برداري
-علت
-گذاشته
-هم
-فوق
-نه
-ها
-شوند
-اباد
-همواره
-هر
-اول
-خواهند
-چهار
-نام
-امروز
-مان
-هاي
-قبل
-كنم
-سعي
-تازه
-را
-هستند
-زير
-جلوي
-عنوان
-بود
diff --git a/solr/example/files/conf/lang/stopwords_fi.txt b/solr/example/files/conf/lang/stopwords_fi.txt
deleted file mode 100644
index 4372c9a..0000000
--- a/solr/example/files/conf/lang/stopwords_fi.txt
+++ /dev/null
@@ -1,97 +0,0 @@
- | 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
-
diff --git a/solr/example/files/conf/lang/stopwords_fr.txt b/solr/example/files/conf/lang/stopwords_fr.txt
deleted file mode 100644
index 749abae..0000000
--- a/solr/example/files/conf/lang/stopwords_fr.txt
+++ /dev/null
@@ -1,186 +0,0 @@
- | 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
-
diff --git a/solr/example/files/conf/lang/stopwords_ga.txt b/solr/example/files/conf/lang/stopwords_ga.txt
deleted file mode 100644
index 9ff88d7..0000000
--- a/solr/example/files/conf/lang/stopwords_ga.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-
-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
diff --git a/solr/example/files/conf/lang/stopwords_gl.txt b/solr/example/files/conf/lang/stopwords_gl.txt
deleted file mode 100644
index d8760b1..0000000
--- a/solr/example/files/conf/lang/stopwords_gl.txt
+++ /dev/null
@@ -1,161 +0,0 @@
-# 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
diff --git a/solr/example/files/conf/lang/stopwords_hi.txt b/solr/example/files/conf/lang/stopwords_hi.txt
deleted file mode 100644
index 86286bb..0000000
--- a/solr/example/files/conf/lang/stopwords_hi.txt
+++ /dev/null
@@ -1,235 +0,0 @@
-# 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
-अपनि
-जेसे
-होति
-सभि
-तिंहों
-इंहों
-दवारा
-इसि
-किंहें
-थि
-उंहों
-ओर
-जिंहें
-वहिं
-अभि
-बनि
-हि
-उंहिं
-उंहें
-हें
-वगेरह
-एसे
-रवासा
-कोन
-निचे
-काफि
-उसि
-पुरा
-भितर
-हे
-बहि
-वहां
-कोइ
-यहां
-जिंहों
-तिंहें
-किसि
-कइ
-यहि
-इंहिं
-जिधर
-इंहें
-अदि
-इतयादि
-हुइ
-कोनसा
-इसकि
-दुसरे
-जहां
-अप
-किंहों
-उनकि
-भि
-वरग
-हुअ
-जेसा
-नहिं
diff --git a/solr/example/files/conf/lang/stopwords_hu.txt b/solr/example/files/conf/lang/stopwords_hu.txt
deleted file mode 100644
index 37526da..0000000
--- a/solr/example/files/conf/lang/stopwords_hu.txt
+++ /dev/null
@@ -1,211 +0,0 @@
- | 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
diff --git a/solr/example/files/conf/lang/stopwords_hy.txt b/solr/example/files/conf/lang/stopwords_hy.txt
deleted file mode 100644
index 60c1c50..0000000
--- a/solr/example/files/conf/lang/stopwords_hy.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-# example set of Armenian stopwords.
-այդ
-այլ
-այն
-այս
-դու
-դուք
-եմ
-են
-ենք
-ես
-եք
-է
-էի
-էին
-էինք
-էիր
-էիք
-էր
-ըստ
-թ
-ի
-ին
-իսկ
-իր
-կամ
-համար
-հետ
-հետո
-մենք
-մեջ
-մի
-ն
-նա
-նաև
-նրա
-նրանք
-որ
-որը
-որոնք
-որպես
-ու
-ում
-պիտի
-վրա
-և
diff --git a/solr/example/files/conf/lang/stopwords_id.txt b/solr/example/files/conf/lang/stopwords_id.txt
deleted file mode 100644
index 4617f83..0000000
--- a/solr/example/files/conf/lang/stopwords_id.txt
+++ /dev/null
@@ -1,359 +0,0 @@
-# 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
diff --git a/solr/example/files/conf/lang/stopwords_it.txt b/solr/example/files/conf/lang/stopwords_it.txt
deleted file mode 100644
index 1219cc7..0000000
--- a/solr/example/files/conf/lang/stopwords_it.txt
+++ /dev/null
@@ -1,303 +0,0 @@
- | 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
diff --git a/solr/example/files/conf/lang/stopwords_ja.txt b/solr/example/files/conf/lang/stopwords_ja.txt
deleted file mode 100644
index d4321be..0000000
--- a/solr/example/files/conf/lang/stopwords_ja.txt
+++ /dev/null
@@ -1,127 +0,0 @@
-#
-# 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
diff --git a/solr/example/files/conf/lang/stopwords_lv.txt b/solr/example/files/conf/lang/stopwords_lv.txt
deleted file mode 100644
index e21a23c..0000000
--- a/solr/example/files/conf/lang/stopwords_lv.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-# 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
diff --git a/solr/example/files/conf/lang/stopwords_nl.txt b/solr/example/files/conf/lang/stopwords_nl.txt
deleted file mode 100644
index 47a2aea..0000000
--- a/solr/example/files/conf/lang/stopwords_nl.txt
+++ /dev/null
@@ -1,119 +0,0 @@
- | 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
diff --git a/solr/example/files/conf/lang/stopwords_no.txt b/solr/example/files/conf/lang/stopwords_no.txt
deleted file mode 100644
index a7a2c28..0000000
--- a/solr/example/files/conf/lang/stopwords_no.txt
+++ /dev/null
@@ -1,194 +0,0 @@
- | 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 *
-
diff --git a/solr/example/files/conf/lang/stopwords_pt.txt b/solr/example/files/conf/lang/stopwords_pt.txt
deleted file mode 100644
index acfeb01..0000000
--- a/solr/example/files/conf/lang/stopwords_pt.txt
+++ /dev/null
@@ -1,253 +0,0 @@
- | 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
diff --git a/solr/example/files/conf/lang/stopwords_ro.txt b/solr/example/files/conf/lang/stopwords_ro.txt
deleted file mode 100644
index 4fdee90..0000000
--- a/solr/example/files/conf/lang/stopwords_ro.txt
+++ /dev/null
@@ -1,233 +0,0 @@
-# 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
diff --git a/solr/example/files/conf/lang/stopwords_ru.txt b/solr/example/files/conf/lang/stopwords_ru.txt
deleted file mode 100644
index 5527140..0000000
--- a/solr/example/files/conf/lang/stopwords_ru.txt
+++ /dev/null
@@ -1,243 +0,0 @@
- | 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
-  |
-  | быть  бы  буд  быв  есть  суть
-  | име
-  | дел
-  | мог   мож  мочь
-  | уме
-  | хоч  хот
-  | долж
-  | можн
-  | нужн
-  | нельзя
-
diff --git a/solr/example/files/conf/lang/stopwords_sv.txt b/solr/example/files/conf/lang/stopwords_sv.txt
deleted file mode 100644
index 096f87f..0000000
--- a/solr/example/files/conf/lang/stopwords_sv.txt
+++ /dev/null
@@ -1,133 +0,0 @@
- | 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
-
diff --git a/solr/example/files/conf/lang/stopwords_th.txt b/solr/example/files/conf/lang/stopwords_th.txt
deleted file mode 100644
index 07f0fab..0000000
--- a/solr/example/files/conf/lang/stopwords_th.txt
+++ /dev/null
@@ -1,119 +0,0 @@
-# Thai stopwords from:
-# "Opinion Detection in Thai Political News Columns
-# Based on Subjectivity Analysis"
-# Khampol Sukhum, Supot Nitsuwat, and Choochart Haruechaiyasak
-ไว้
-ไม่
-ไป
-ได้
-ให้
-ใน
-โดย
-แห่ง
-แล้ว
-และ
-แรก
-แบบ
-แต่
-เอง
-เห็น
-เลย
-เริ่ม
-เรา
-เมื่อ
-เพื่อ
-เพราะ
-เป็นการ
-เป็น
-เปิดเผย
-เปิด
-เนื่องจาก
-เดียวกัน
-เดียว
-เช่น
-เฉพาะ
-เคย
-เข้า
-เขา
-อีก
-อาจ
-อะไร
-ออก
-อย่าง
-อยู่
-อยาก
-หาก
-หลาย
-หลังจาก
-หลัง
-หรือ
-หนึ่ง
-ส่วน
-ส่ง
-สุด
-สําหรับ
-ว่า
-วัน
-ลง
-ร่วม
-ราย
-รับ
-ระหว่าง
-รวม
-ยัง
-มี
-มาก
-มา
-พร้อม
-พบ
-ผ่าน
-ผล
-บาง
-น่า
-นี้
-นํา
-นั้น
-นัก
-นอกจาก
-ทุก
-ที่สุด
-ที่
-ทําให้
-ทํา
-ทาง
-ทั้งนี้
-ทั้ง
-ถ้า
-ถูก
-ถึง
-ต้อง
-ต่างๆ
-ต่าง
-ต่อ
-ตาม
-ตั้งแต่
-ตั้ง
-ด้าน
-ด้วย
-ดัง
-ซึ่ง
-ช่วง
-จึง
-จาก
-จัด
-จะ
-คือ
-ความ
-ครั้ง
-คง
-ขึ้น
-ของ
-ขอ
-ขณะ
-ก่อน
-ก็
-การ
-กับ
-กัน
-กว่า
-กล่าว
diff --git a/solr/example/files/conf/lang/stopwords_tr.txt b/solr/example/files/conf/lang/stopwords_tr.txt
deleted file mode 100644
index 84d9408..0000000
--- a/solr/example/files/conf/lang/stopwords_tr.txt
+++ /dev/null
@@ -1,212 +0,0 @@
-# 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
diff --git a/solr/example/files/conf/lang/userdict_ja.txt b/solr/example/files/conf/lang/userdict_ja.txt
deleted file mode 100644
index 6f0368e..0000000
--- a/solr/example/files/conf/lang/userdict_ja.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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
-朝青龍,朝青龍,アサショウリュウ,カスタム人名
diff --git a/solr/example/files/conf/managed-schema b/solr/example/files/conf/managed-schema
deleted file mode 100644
index 5ad9883..0000000
--- a/solr/example/files/conf/managed-schema
+++ /dev/null
@@ -1,520 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Solr managed schema - automatically generated - DO NOT EDIT -->
-<schema name="example-data-driven-schema" version="1.6">
-  <uniqueKey>id</uniqueKey>
-  <fieldType name="ancestor_path" class="solr.TextField">
-    <analyzer type="index">
-      <tokenizer name="keyword"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer name="pathHierarchy" delimiter="/"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="binary" class="solr.BinaryField"/>
-  <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
-  <fieldType name="booleans" class="solr.BoolField" sortMissingLast="true" multiValued="true"/>
-  <fieldType name="currency" class="solr.CurrencyFieldType" amountLongSuffix="_l_ns" codeStrSuffix="_s_ns" defaultCurrency="USD" currencyConfig="currency.xml" />
-  <fieldType name="descendent_path" class="solr.TextField">
-    <analyzer type="index">
-      <tokenizer name="pathHierarchy" delimiter="/"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer name="keyword"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="ignored" class="solr.StrField" indexed="false" stored="false" multiValued="true"/>
-  <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
-  <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType" geo="true" maxDistErr="0.001" distErrPct="0.025" distanceUnits="kilometers"/>
-  <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="keyword"/>
-      <filter name="lowercase"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="phonetic_en" class="solr.TextField" indexed="true" stored="false">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="doubleMetaphone" inject="false"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
-  <fieldType name="pdates" class="solr.DatePointField" docValues="true" multiValued="true"/>
-  <fieldType name="pdouble" class="solr.DoublePointField" docValues="true"/>
-  <fieldType name="pdoubles" class="solr.DoublePointField" docValues="true" multiValued="true"/>
-  <fieldType name="pfloat" class="solr.FloatPointField" docValues="true"/>
-  <fieldType name="pfloats" class="solr.FloatPointField" docValues="true" multiValued="true"/>
-  <fieldType name="pint" class="solr.IntPointField" docValues="true"/>
-  <fieldType name="pints" class="solr.IntPointField" docValues="true" multiValued="true"/>
-  <fieldType name="plong" class="solr.LongPointField" docValues="true"/>
-  <fieldType name="plongs" class="solr.LongPointField" docValues="true" multiValued="true"/>
-  <fieldType name="point" class="solr.PointType" subFieldSuffix="_d" dimension="2"/>
-  <fieldType name="random" class="solr.RandomSortField" indexed="true"/>
-  <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
-  <fieldType name="strings" class="solr.StrField" sortMissingLast="true" multiValued="true"/>
-  <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" words="lang/stopwords_ar.txt" ignoreCase="true"/>
-      <filter name="arabicNormalization"/>
-      <filter name="arabicStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_bg" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" words="lang/stopwords_bg.txt" ignoreCase="true"/>
-      <filter name="bulgarianStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_ca" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="elision" articles="lang/contractions_ca.txt" ignoreCase="true"/>
-      <filter name="lowercase"/>
-      <filter name="stop" words="lang/stopwords_ca.txt" ignoreCase="true"/>
-      <filter name="snowballPorter" language="Catalan"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_cjk" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="cjkWidth"/>
-      <filter name="lowercase"/>
-      <filter name="cjkBigram"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_cz" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" words="lang/stopwords_cz.txt" ignoreCase="true"/>
-      <filter name="czechStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_da" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_da.txt" ignoreCase="true"/>
-      <filter name="snowballPorter" language="Danish"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_de.txt" ignoreCase="true"/>
-      <filter name="germanNormalization"/>
-      <filter name="germanLightStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_el" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="greekLowercase"/>
-      <filter name="stop" words="lang/stopwords_el.txt" ignoreCase="false"/>
-      <filter name="greekStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer name="standard"/>
-      <filter name="stop" words="lang/stopwords_en.txt" ignoreCase="true"/>
-      <filter name="lowercase"/>
-      <filter name="englishPossessive"/>
-      <filter name="keywordMarker" protected="protwords.txt"/>
-      <filter name="porterStem"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer name="standard"/>
-      <filter name="synonymGraph" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
-      <filter name="stop" words="lang/stopwords_en.txt" ignoreCase="true"/>
-      <filter name="lowercase"/>
-      <filter name="englishPossessive"/>
-      <filter name="keywordMarker" protected="protwords.txt"/>
-      <filter name="porterStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_en_splitting" class="solr.TextField" autoGeneratePhraseQueries="true" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer name="whitespace"/>
-      <filter name="stop" words="lang/stopwords_en.txt" ignoreCase="true"/>
-      <filter name="wordDelimiterGraph" catenateNumbers="1" generateNumberParts="1" splitOnCaseChange="1" generateWordParts="1" catenateAll="0" catenateWords="1"/>
-      <filter name="lowercase"/>
-      <filter name="keywordMarker" protected="protwords.txt"/>
-      <filter name="porterStem"/>
-      <filter name="flattenGraph" />
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer name="whitespace"/>
-      <filter name="synonymGraph" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
-      <filter name="stop" words="lang/stopwords_en.txt" ignoreCase="true"/>
-      <filter name="wordDelimiterGraph" catenateNumbers="0" generateNumberParts="1" splitOnCaseChange="1" generateWordParts="1" catenateAll="0" catenateWords="0"/>
-      <filter name="lowercase"/>
-      <filter name="keywordMarker" protected="protwords.txt"/>
-      <filter name="porterStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_en_splitting_tight" class="solr.TextField" autoGeneratePhraseQueries="true" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer name="whitespace"/>
-      <filter name="synonymGraph" expand="false" ignoreCase="true" synonyms="synonyms.txt"/>
-      <filter name="stop" words="lang/stopwords_en.txt" ignoreCase="true"/>
-      <filter name="wordDelimiterGraph" catenateNumbers="1" generateNumberParts="0" generateWordParts="0" catenateAll="0" catenateWords="1"/>
-      <filter name="lowercase"/>
-      <filter name="keywordMarker" protected="protwords.txt"/>
-      <filter name="englishMinimalStem"/>
-      <filter name="removeDuplicates"/>
-      <filter name="flattenGraph" />
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer name="whitespace"/>
-      <filter name="synonymGraph" expand="false" ignoreCase="true" synonyms="synonyms.txt"/>
-      <filter name="stop" words="lang/stopwords_en.txt" ignoreCase="true"/>
-      <filter name="wordDelimiterGraph" catenateNumbers="1" generateNumberParts="0" generateWordParts="0" catenateAll="0" catenateWords="1"/>
-      <filter name="lowercase"/>
-      <filter name="keywordMarker" protected="protwords.txt"/>
-      <filter name="englishMinimalStem"/>
-      <filter name="removeDuplicates"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_es" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_es.txt" ignoreCase="true"/>
-      <filter name="spanishLightStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_eu" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" words="lang/stopwords_eu.txt" ignoreCase="true"/>
-      <filter name="snowballPorter" language="Basque"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_fa" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <charFilter name="persian"/>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="arabicNormalization"/>
-      <filter name="persianNormalization"/>
-      <filter name="stop" words="lang/stopwords_fa.txt" ignoreCase="true"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_fi" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_fi.txt" ignoreCase="true"/>
-      <filter name="snowballPorter" language="Finnish"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="elision" articles="lang/contractions_fr.txt" ignoreCase="true"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_fr.txt" ignoreCase="true"/>
-      <filter name="frenchLightStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_ga" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="elision" articles="lang/contractions_ga.txt" ignoreCase="true"/>
-      <filter name="stop" words="lang/hyphenations_ga.txt" ignoreCase="true"/>
-      <filter name="irishLowercase"/>
-      <filter name="stop" words="lang/stopwords_ga.txt" ignoreCase="true"/>
-      <filter name="snowballPorter" language="Irish"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
-    <analyzer type="index">
-      <tokenizer name="standard"/>
-      <filter name="stop" words="stopwords.txt" ignoreCase="true"/>
-      <filter name="lowercase"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer name="standard"/>
-      <filter name="stop" words="stopwords.txt" ignoreCase="true"/>
-      <filter name="synonymGraph" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
-      <filter name="lowercase"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer name="standard"/>
-      <filter name="stop" words="stopwords.txt" ignoreCase="true"/>
-      <filter name="lowercase"/>
-      <filter name="reversedWildcard" maxPosQuestion="2" maxFractionAsterisk="0.33" maxPosAsterisk="3" withOriginal="true"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer name="standard"/>
-      <filter name="synonymGraph" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
-      <filter name="stop" words="stopwords.txt" ignoreCase="true"/>
-      <filter name="lowercase"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_gl" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" words="lang/stopwords_gl.txt" ignoreCase="true"/>
-      <filter name="galicianStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_hi" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="indicNormalization"/>
-      <filter name="hindiNormalization"/>
-      <filter name="stop" words="lang/stopwords_hi.txt" ignoreCase="true"/>
-      <filter name="hindiStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_hu" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_hu.txt" ignoreCase="true"/>
-      <filter name="snowballPorter" language="Hungarian"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_hy" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" words="lang/stopwords_hy.txt" ignoreCase="true"/>
-      <filter name="snowballPorter" language="Armenian"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_id" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" words="lang/stopwords_id.txt" ignoreCase="true"/>
-      <filter name="indonesianStem" stemDerivational="true"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="elision" articles="lang/contractions_it.txt" ignoreCase="true"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_it.txt" ignoreCase="true"/>
-      <filter name="italianLightStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_ja" class="solr.TextField" autoGeneratePhraseQueries="false" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="japanese" mode="search"/>
-      <filter name="japaneseBaseForm"/>
-      <filter name="japanesePartOfSpeechStop" tags="lang/stoptags_ja.txt"/>
-      <filter name="cjkWidth"/>
-      <filter name="stop" words="lang/stopwords_ja.txt" ignoreCase="true"/>
-      <filter name="japaneseKatakanaStem" minimumLength="4"/>
-      <filter name="lowercase"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_ko" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="korean" decompoundMode="discard" outputUnknownUnigrams="false"/>
-      <filter name="koreanPartOfSpeechStop" />
-      <filter name="koreanReadingForm" />
-      <filter name="lowercase" />
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_lv" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" words="lang/stopwords_lv.txt" ignoreCase="true"/>
-      <filter name="latvianStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_nl" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_nl.txt" ignoreCase="true"/>
-      <filter name="stemmerOverride" dictionary="lang/stemdict_nl.txt" ignoreCase="false"/>
-      <filter name="snowballPorter" language="Dutch"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_no.txt" ignoreCase="true"/>
-      <filter name="snowballPorter" language="Norwegian"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_pt.txt" ignoreCase="true"/>
-      <filter name="portugueseLightStem"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_ro" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" words="lang/stopwords_ro.txt" ignoreCase="true"/>
-      <filter name="snowballPorter" language="Romanian"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_ru" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_ru.txt" ignoreCase="true"/>
-      <filter name="snowballPorter" language="Russian"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_sv" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="lowercase"/>
-      <filter name="stop" format="snowball" words="lang/stopwords_sv.txt" ignoreCase="true"/>
-      <filter name="snowballPorter" language="Swedish"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_th" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="thai"/>
-      <filter name="lowercase"/>
-      <filter name="stop" words="lang/stopwords_th.txt" ignoreCase="true"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="standard"/>
-      <filter name="turkishLowercase"/>
-      <filter name="stop" words="lang/stopwords_tr.txt" ignoreCase="false"/>
-      <filter name="snowballPorter" language="Turkish"/>
-    </analyzer>
-  </fieldType>
-  <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer name="whitespace"/>
-    </analyzer>
-  </fieldType>
-
-  <fieldType name="text_email_url" class="solr.TextField">
-    <analyzer>
-      <tokenizer name="UAX29URLEmail"/>
-      <filter name="type" types="email_url_types.txt" useWhitelist="true"/>
-    </analyzer>
-  </fieldType>
-
-  <fieldType name="text_shingles" class="solr.TextField" positionIncrementGap="100" multiValued="true">
-    <analyzer type="index">
-      <tokenizer name="standard"/>
-      <!-- <filter name="stop" words="lang/stopwords_en.txt" ignoreCase="false" /> -->
-      <filter name="length" min="2" max="18"/>
-      <filter name="lowercase"/>
-      <filter name="patternReplace" pattern="(^[^a-z]+$)" replacement="" replace="all"/>
-      <filter name="shingle" minShingleSize="3"  maxShingleSize="3"
-             outputUnigrams="false" outputUnigramsIfNoShingles="false" tokenSeparator=" " fillerToken="*"/>
-      <filter name="patternReplace" pattern="(.*[\*].*)"  replacement=""/>
-      <filter name="trim"/>
-
-      <!-- PRFF could have removed everything down to an empty string, remove if so -->
-      <filter name="length" min="1" max="100"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer name="keyword"/>
-      <filter name="lowercase"/>
-    </analyzer>
-  </fieldType>
-
-  <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
-  <field name="_version_" type="plong" indexed="true" stored="true"/>
-  <field name="content_type" type="string" indexed="true" stored="true"/>
-  <field name="doc_type" type="string" indexed="true" stored="true"/>
-  <field name="title" type="string" indexed="true" stored="true"/>
-  <field name="language" type="string" indexed="true" stored="true"/>
-  <field name="content" type="text_general" multiValued="false" indexed="true" stored="true"/>
-  <field name="text_shingles" type="text_shingles" indexed="true" stored="false"/>
-  <field name="_text_" type="text_general" multiValued="true" indexed="true" stored="false"/>
-
-  <dynamicField name="*_txt_en_split_tight" type="text_en_splitting_tight" indexed="true" stored="true"/>
-  <dynamicField name="*_descendent_path" type="descendent_path" indexed="true" stored="true"/>
-  <dynamicField name="*_ancestor_path" type="ancestor_path" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_en_split" type="text_en_splitting" indexed="true" stored="true"/>
-  <dynamicField name="*_coordinate" type="pdouble" indexed="true" stored="false"/>
-  <dynamicField name="ignored_*" type="ignored" multiValued="true"/>
-  <dynamicField name="*_txt_rev" type="text_general_rev" indexed="true" stored="true"/>
-  <dynamicField name="*_phon_en" type="phonetic_en" indexed="true" stored="true"/>
-  <dynamicField name="*_s_lower" type="lowercase" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_cjk" type="text_cjk" indexed="true" stored="true"/>
-  <dynamicField name="random_*" type="random"/>
-  <dynamicField name="*_txt_en" type="text_en" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_ar" type="text_ar" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_bg" type="text_bg" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_ca" type="text_ca" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_cz" type="text_cz" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_da" type="text_da" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_de" type="text_de" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_el" type="text_el" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_es" type="text_es" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_eu" type="text_eu" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_fa" type="text_fa" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_fi" type="text_fi" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_fr" type="text_fr" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_ga" type="text_ga" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_gl" type="text_gl" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_hi" type="text_hi" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_hu" type="text_hu" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_hy" type="text_hy" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_id" type="text_id" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_it" type="text_it" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_ja" type="text_ja" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_ko" type="text_ko" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_lv" type="text_lv" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_nl" type="text_nl" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_no" type="text_no" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_pt" type="text_pt" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_ro" type="text_ro" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_ru" type="text_ru" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_sv" type="text_sv" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_th" type="text_th" indexed="true" stored="true"/>
-  <dynamicField name="*_txt_tr" type="text_tr" indexed="true" stored="true"/>
-  <dynamicField name="*_point" type="point" indexed="true" stored="true"/>
-  <dynamicField name="*_srpt" type="location_rpt" indexed="true" stored="true"/>
-  <dynamicField name="attr_*" type="text_general" multiValued="true" indexed="true" stored="true"/>
-  <dynamicField name="*_l_ns" type="plong" indexed="true" stored="false"/>
-  <dynamicField name="*_s_ns" type="string" indexed="true" stored="false"/>
-  <dynamicField name="*_txt" type="text_general" indexed="true" stored="true"/>
-  <dynamicField name="*_dts" type="pdate" multiValued="true" indexed="true" stored="true"/>
-  <dynamicField name="*_is" type="pints" indexed="true" stored="true"/>
-  <dynamicField name="*_ss" type="strings" indexed="true" stored="true"/>
-  <dynamicField name="*_ls" type="plongs" indexed="true" stored="true"/>
-  <dynamicField name="*_bs" type="booleans" indexed="true" stored="true"/>
-  <dynamicField name="*_fs" type="pfloats" indexed="true" stored="true"/>
-  <dynamicField name="*_ds" type="pdoubles" indexed="true" stored="true"/>
-  <dynamicField name="*_dt" type="pdate" indexed="true" stored="true"/>
-  <dynamicField name="*_ws" type="text_ws" indexed="true" stored="true"/>
-  <dynamicField name="*_i" type="pint" indexed="true" stored="true"/>
-  <dynamicField name="*_s" type="string" indexed="true" stored="true"/>
-  <dynamicField name="*_l" type="plong" indexed="true" stored="true"/>
-  <dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>
-  <dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
-  <dynamicField name="*_f" type="pfloat" indexed="true" stored="true"/>
-  <dynamicField name="*_d" type="pdouble" indexed="true" stored="true"/>
-  <dynamicField name="*_p" type="location" indexed="true" stored="true"/>
-  <dynamicField name="*_c" type="currency" indexed="true" stored="true"/>
-
-  <copyField source="content" dest="text_shingles"/>
-  <copyField source="*" dest="_text_"/>
-
-
-</schema>
diff --git a/solr/example/files/conf/params.json b/solr/example/files/conf/params.json
deleted file mode 100644
index 22aadcc..0000000
--- a/solr/example/files/conf/params.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{"params":{
-  "query":{
-    "defType":"edismax",
-    "q.alt":"*:*",
-    "rows":"10",
-    "fl":"*,score",
-    "":{"v":0}},
-  "facets":{
-    "facet":"on",
-    "facet.mincount":"1",
-    "f.doc_type.facet.mincount":"0",
-    "facet.field":["text_shingles","{!ex=type}doc_type", "language"],
-    "f.text_shingles.facet.limit":10,
-    "facet.query":"{!ex=type key=all_types}*:*",
-    "f.doc_type.facet.missing":true,
-    "":{"v":0}},
-  "browse":{
-    "type_fq":"{!field f=doc_type v=$type}",
-    "hl":"on",
-    "hl.fl":"content",
-    "v.locale":"${locale}",
-    "debug":"true",
-    "hl.simple.pre":"HL_START",
-    "hl.simple.post":"HL_END",
-    "echoParams": "explicit",
-    "_appends_": {
-      "fq": "{!switch v=$type tag=type case='*:*' case.all='*:*' case.unknown='-doc_type:[* TO *]' default=$type_fq}"
-    },
-    "":{"v":0}},
-  "velocity":{
-    "wt":"velocity",
-    "v.template":"browse",
-    "v.layout":"layout",
-    "":{"v":0}}}}
diff --git a/solr/example/files/conf/protwords.txt b/solr/example/files/conf/protwords.txt
deleted file mode 100644
index 1dfc0ab..0000000
--- a/solr/example/files/conf/protwords.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-# 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
-
diff --git a/solr/example/files/conf/solrconfig.xml b/solr/example/files/conf/solrconfig.xml
deleted file mode 100644
index 5d7bedd..0000000
--- a/solr/example/files/conf/solrconfig.xml
+++ /dev/null
@@ -1,1423 +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.
--->
-
-<!--
-     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>9.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" />
-  <!-- browse-resources must come before solr-velocity JAR in order to override localized resources -->
-  <lib path="${solr.install.dir:../../../..}/example/files/browse-resources"/>
-  <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
-       or solr.NIOFSDirectoryFactory.
-
-       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.
-  -->
-  <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="solr.TieredMergePolicyFactory">
-          <int name="maxMergeAtOnce">10</int>
-          <int name="segmentsPerTier">10</int>
-        </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.  -->
-    <updateLog>
-      <str name="dir">${solr.ulog.dir:}</str>
-    </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>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>1000</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
-      -->
-
-  </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>
-    <!-- Max Boolean Clauses
-
-         Maximum number of clauses in each BooleanQuery,  an exception
-         is thrown if exceeded.
-
-         ** WARNING **
-
-         This option actually modifies a global Lucene property that
-         will affect all SolrCores.  If multiple solrconfig.xml files
-         disagree on this property, the value at any given moment will
-         be based on the last SolrCore to be initialized.
-
-      -->
-    <maxBooleanClauses>${solr.max.booleanClauses:1024}</maxBooleanClauses>
-
-
-    <!-- Solr Internal Query Caches
-         Starting with Solr 9.0 the default cache implementation used is CaffeineCache.
-    -->
-
-    <!-- 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.
-
-         Parameters:
-           class - the SolrCache implementation (CaffeineCache by default)
-           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.
-      -->
-    <filterCache class="solr.CaffeineCache"
-                 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 CaffeineCache:
-            maxRamMB - the maximum amount of RAM (in MB) that this cache is allowed
-                       to occupy
-      -->
-    <queryResultCache class="solr.CaffeineCache"
-                      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.CaffeineCache"
-                   size="512"
-                   initialSize="512"
-                   autowarmCount="0"/>
-
-    <!-- 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.CaffeineCache"
-                        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.CaffeineCache"
-              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>
-
-  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-     Circuit Breaker Section - This section consists of configurations for
-     circuit breakers
-     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
-  <circuitBreaker class="solr.CircuitBreakerManager" enabled="true">
-    <!-- Enable Circuit Breakers
-
-    Circuit breakers are designed to allow stability and predictable query
-    execution. They prevent operations that can take down the node and cause
-    noisy neighbour issues.
-
-    This flag is the uber control switch which controls the activation/deactivation of all circuit
-    breakers. At the moment, the only circuit breaker (max JVM circuit breaker) does not have its
-    own specific configuration. However, if a circuit breaker wishes to be independently configurable,
-    they are free to add their specific configuration but need to ensure that this flag is always
-    respected - this should have veto over all independent configuration flags.
-    -->
-
-    <!-- Memory Circuit Breaker Control Flag
-
-    Use the following flag to control the behaviour of this circuit breaker
-    -->
-    <str name="memEnabled">true</str>
-
-    <!-- Memory Circuit Breaker Threshold In Percentage
-
-    Specific configuration for max JVM heap usage circuit breaker. This configuration defines the
-    threshold percentage of maximum heap allocated beyond which queries will be rejected until the
-    current JVM usage goes below the threshold. The valid value range for this parameter is 50 - 95.
-
-    Consider a scenario where the max heap allocated is 4 GB and memoryCircuitBreakerThresholdPct is
-    defined as 75. Threshold JVM usage will be 4 * 0.75 = 3 GB. Its generally a good idea to keep this value between 75 - 80% of maximum heap
-    allocated.
-
-    If, at any point, the current JVM heap usage goes above 3 GB, queries will be rejected until the heap usage goes below 3 GB again.
-    If you see queries getting rejected with 503 error code, check for "Circuit Breakers tripped"
-    in logs and the corresponding error message should tell you what transpired (if the failure
-    was caused by tripped circuit breakers).
-    -->
-    <str name="memThreshold">75</str>
-
-    <!-- CPU Based Circuit Breaker Control Flag
-
-    Use the following flag to control the behaviour of this circuit breaker
-    -->
-    <str name="cpuEnabled">true</str>
-
-    <!-- CPU Based Circuit Breaker Triggering Threshold
-
-    The triggering threshold is defined in units of CPU utilization. The configuration to control this is as below:
-    -->
-    <str name="cpuThreshold">75</str>
-
-
-  </circuitBreaker>
-
-
-  <!-- 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.
-
-         The following options can also be specified to affect the
-         values of these headers...
-
-         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.
-
-         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>
-      <!-- Default search field
-         <str name="df">text</str> 
-        -->
-      <!-- Change from JSON to XML format (the default prior to Solr 7.0)
-         <str name="wt">xml</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>
-
-
-  <!--These useParams values are available in params.json-->
-  <requestHandler name="/browse" class="solr.SearchHandler" useParams="query,facets,velocity,browse"/>
-
-
-  <initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
-    <lst name="defaults">
-      <str name="df">_text_</str>
-    </lst>
-  </initParams>
-
-  <initParams path="/update/**">
-    <lst name="defaults">
-      <str name="update.chain">files-update-processor</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="xpath">/xhtml:html/xhtml:body/descendant:node()</str>
-      <str name="capture">content</str>
-      <str name="fmap.meta">attr_meta_</str>
-      <str name="uprefix">attr_</str>
-      <str name="lowernames">true</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>
-
-    <!-- a spellchecker that uses a different distance measure -->
-    <!--
-       <lst name="spellchecker">
-         <str name="name">jarowinkler</str>
-         <str name="field">spell</str>
-         <str name="classname">solr.DirectSolrSpellChecker</str>
-         <str name="distanceMeasure">
-           org.apache.lucene.search.spell.JaroWinklerDistance
-         </str>
-       </lst>
-     -->
-
-    <!-- a spellchecker that use an alternate comparator
-
-         comparatorClass be one of:
-          1. score (default)
-          2. freq (Frequency first, then score)
-          3. A fully qualified class name
-      -->
-    <!--
-       <lst name="spellchecker">
-         <str name="name">freq</str>
-         <str name="field">lowerfilt</str>
-         <str name="classname">solr.DirectSolrSpellChecker</str>
-         <str name="comparatorClass">freq</str>
-      -->
-
-    <!-- A spellchecker that reads the list of words from a file -->
-    <!--
-       <lst name="spellchecker">
-         <str name="classname">solr.FileBasedSpellChecker</str>
-         <str name="name">file</str>
-         <str name="sourceLocation">spellings.txt</str>
-         <str name="characterEncoding">UTF-8</str>
-         <str name="spellcheckIndexDir">spellcheckerFile</str>
-       </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.dictionary">wordbreak</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>
-
-  <!-- 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
-
-       An example field type guessing update processor 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.
-
-       This requires 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
-    -->
-  <updateRequestProcessorChain name="files-update-processor">
-    <!-- UUIDUpdateProcessorFactory will generate an id if none is present in the incoming document -->
-    <processor class="solr.UUIDUpdateProcessorFactory" />
-    <processor class="solr.RemoveBlankFieldUpdateProcessorFactory"/>
-    <processor class="solr.FieldNameMutatingUpdateProcessorFactory">
-      <str name="pattern">[^\w-\.]</str>
-      <str name="replacement">_</str>
-    </processor>
-    <processor class="solr.ParseBooleanFieldUpdateProcessorFactory"/>
-    <processor class="solr.ParseLongFieldUpdateProcessorFactory"/>
-    <processor class="solr.ParseDoubleFieldUpdateProcessorFactory"/>
-    <processor class="solr.ParseDateFieldUpdateProcessorFactory">
-      <arr name="format">
-        <str>yyyy-MM-dd['T'[HH:mm[:ss[.SSS]][z</str>
-        <str>yyyy-MM-dd['T'[HH:mm[:ss[,SSS]][z</str>
-        <str>yyyy-MM-dd HH:mm[:ss[.SSS]][z</str>
-        <str>yyyy-MM-dd HH:mm[:ss[,SSS]][z</str>
-        <str>[EEE, ]dd MMM yyyy HH:mm[:ss] z</str>
-        <str>EEEE, dd-MMM-yy HH:mm:ss z</str>
-        <str>EEE MMM ppd HH:mm:ss [z ]yyyy</str>
-      </arr>
-    </processor>
-    <processor class="solr.AddSchemaFieldsUpdateProcessorFactory">
-      <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>
-    </processor>
-
-
-    <processor class="org.apache.solr.update.processor.LangDetectLanguageIdentifierUpdateProcessorFactory">
-      <lst name="defaults">
-        <str name="langid.fl">content</str>
-        <str name="langid.langField">language</str>
-      </lst>
-    </processor>
-
-    <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.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>
-  </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://lucene.apache.org/solr/guide/query-syntax-and-parsing.html
-
-       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>
diff --git a/solr/example/files/conf/stopwords.txt b/solr/example/files/conf/stopwords.txt
deleted file mode 100644
index ae1e83e..0000000
--- a/solr/example/files/conf/stopwords.txt
+++ /dev/null
@@ -1,14 +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.
diff --git a/solr/example/files/conf/synonyms.txt b/solr/example/files/conf/synonyms.txt
deleted file mode 100644
index eab4ee8..0000000
--- a/solr/example/files/conf/synonyms.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-# 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
-
diff --git a/solr/example/files/conf/update-script.js b/solr/example/files/conf/update-script.js
deleted file mode 100644
index 2589968..0000000
--- a/solr/example/files/conf/update-script.js
+++ /dev/null
@@ -1,115 +0,0 @@
-function get_class(name) {
-  var clazz;
-  try {
-    // Java8 Nashorn
-    clazz = eval("Java.type(name).class");
-  } catch(e) {
-    // Java7 Rhino
-    clazz = eval("Packages."+name);
-  }
-
-  return clazz;
-}
-
-function processAdd(cmd) {
-
-  doc = cmd.solrDoc;  // org.apache.solr.common.SolrInputDocument
-  var id = doc.getFieldValue("id");
-  logger.info("update-script#processAdd: id=" + id);
-
-  // The idea here is to use the file's content_type value to
-  // simplify into user-friendly values, such that types of, say, image/jpeg and image/tiff
-  // are in an "Images" facet
-
-  var ct = doc.getFieldValue("content_type");
-  if (ct) {
-    // strip off semicolon onward
-    var semicolon_index = ct.indexOf(';');
-    if (semicolon_index != -1) {
-      ct = ct.substring(0,semicolon_index);
-    }
-    // and split type/subtype
-    var ct_type = ct.substring(0,ct.indexOf('/'));
-    var ct_subtype = ct.substring(ct.indexOf('/')+1);
-
-    var doc_type;
-    switch(true) {
-      case /^application\/rtf/.test(ct) || /wordprocessing/.test(ct):
-        doc_type = "doc";
-        break;
-
-      case /html/.test(ct):
-        doc_type = "html";
-        break;
-
-      case /^image\/.*/.test(ct):
-        doc_type = "image";
-        break;
-
-      case /presentation|powerpoint/.test(ct):
-        doc_type = "presentation";
-        break;
-
-      case /spreadsheet|excel/.test(ct):
-        doc_type = "spreadsheet";
-        break;
-
-      case /^application\/pdf/.test(ct):
-        doc_type = "pdf";
-        break;
-
-      case /^text\/plain/.test(ct):
-        doc_type = "text"
-        break;
-
-      default:
-        break;
-    }
-
-    // TODO: error handling needed?   What if there is no slash?
-    if(doc_type) { doc.setField("doc_type", doc_type); }
-    doc.setField("content_type_type_s", ct_type);
-    doc.setField("content_type_subtype_s", ct_subtype);
-  }
-
-  var content = doc.getFieldValue("content");
-  if (!content) {
-    return; //No content found, so we are done here
-  }
-
-    var analyzer =
-         req.getCore().getLatestSchema()
-         .getFieldTypeByName("text_email_url")
-         .getIndexAnalyzer();
-
-  var token_stream =
-       analyzer.tokenStream("content", content);
-  var term_att = token_stream.getAttribute(get_class("org.apache.lucene.analysis.tokenattributes.CharTermAttribute"));
-  var type_att = token_stream.getAttribute(get_class("org.apache.lucene.analysis.tokenattributes.TypeAttribute"));
-  token_stream.reset();
-  while (token_stream.incrementToken()) {
-    doc.addField(type_att.type().replace(/\<|\>/g,'').toLowerCase()+"_ss", term_att.toString());
-  }
-  token_stream.end();
-  token_stream.close();
-}
-
-function processDelete(cmd) {
-  // no-op
-}
-
-function processMergeIndexes(cmd) {
-  // no-op
-}
-
-function processCommit(cmd) {
-  // no-op
-}
-
-function processRollback(cmd) {
-  // no-op
-}
-
-function finish() {
-  // no-op
-}
diff --git a/solr/example/files/conf/velocity/browse.vm b/solr/example/files/conf/velocity/browse.vm
deleted file mode 100644
index 535a771..0000000
--- a/solr/example/files/conf/velocity/browse.vm
+++ /dev/null
@@ -1,32 +0,0 @@
-<div id="query-box">
-  <form id="query-form" action="#{url_for_home}" method="GET">
-    $resource.find:
-    <input type="text" id="q" name="q" style="width: 50%" value="$!esc.html($request.params.get('q'))"/>
-    <input type="submit" value="$resource.submit"/>
-    <div id="debug_query" class="debug">
-      <span id="parsed_query">$esc.html($response.response.debug.parsedquery)</span>
-    </div>
-
-    <input type="hidden" name="type" value="#current_type"/>
-    #if("#current_locale"!="")<input type="hidden" value="locale" value="#current_locale"/>#end
-    #foreach($fq in $response.responseHeader.params.getAll("fq"))
-      <input type="hidden" name="fq" id="allFQs" value="$esc.html($fq)"/>
-    #end
-  </form>
-
-  <div id="constraints">
-    #foreach($fq in $response.responseHeader.params.getAll("fq"))
-      #set($previous_fq_count=$velocityCount - 1)
-      #if($fq != '')
-      &gt; $fq<a href="#url_for_filters($response.responseHeader.params.fq.subList(0,$previous_fq_count))">x</a>
-      #end
-    #end
-  </div>
-
-</div>
-
-
-<div id="browse_results">
-  #parse("results.vm")
-</div>
-
diff --git a/solr/example/files/conf/velocity/dropit.js b/solr/example/files/conf/velocity/dropit.js
deleted file mode 100644
index e69de29..0000000
diff --git a/solr/example/files/conf/velocity/facet_doc_type.vm b/solr/example/files/conf/velocity/facet_doc_type.vm
deleted file mode 100644
index ff47167..0000000
--- a/solr/example/files/conf/velocity/facet_doc_type.vm
+++ /dev/null
@@ -1,2 +0,0 @@
-## intentionally empty
-
diff --git a/solr/example/files/conf/velocity/facet_text_shingles.vm b/solr/example/files/conf/velocity/facet_text_shingles.vm
deleted file mode 100644
index ddd9693..0000000
--- a/solr/example/files/conf/velocity/facet_text_shingles.vm
+++ /dev/null
@@ -1,12 +0,0 @@
-<div id="facet_$field.name">
-  <span class="facet-field">$resource.facet.top_phrases</span><br/>
-
-  <ul id="tagcloud">
-    #foreach($facet in $sort.sort($field.values,"name"))
-    <li data-weight="$math.mul($facet.count,1)">
-      <a href="#url_for_facet_filter($field.name, $facet.name)">$facet.name</a>
-    </li>
-
-    #end
-  </ul>
-</div>
\ No newline at end of file
diff --git a/solr/example/files/conf/velocity/facets.vm b/solr/example/files/conf/velocity/facets.vm
deleted file mode 100644
index bb27b5c..0000000
--- a/solr/example/files/conf/velocity/facets.vm
+++ /dev/null
@@ -1,24 +0,0 @@
-#if($response.facetFields.size() > 0)
-  #foreach($field in $response.facetFields)
-    #if($field.values.size() > 0)
-        #if($engine.resourceExists("facet_${field.name}.vm"))
-          #parse("facet_${field.name}.vm")
-        #else
-          <div id="facet_$field.name" class="facet_field">
-            <span class="facet-field">#label("facet.${field.name}",$field.name)</span><br/>
-
-            <ul>
-              #foreach($facet in $field.values)
-                <li><a href="#url_for_facet_filter($field.name, $facet.name)">#if($facet.name!=$null)#label("${field.name}.${facet.name}","${field.name}.${facet.name}")#else<em>missing</em>#end</a> ($facet.count)</li>
-              #end
-            </ul>
-          </div>
-        #end
-    #end
-  #end ## end if field.values > 0
-#end  ## end if facetFields > 0
-
-
-
-
-
diff --git a/solr/example/files/conf/velocity/footer.vm b/solr/example/files/conf/velocity/footer.vm
deleted file mode 100644
index 6cb0096..0000000
--- a/solr/example/files/conf/velocity/footer.vm
+++ /dev/null
@@ -1,29 +0,0 @@
-<hr/>
-
-<div>
-
-  <div id="admin"><a href="#url_root/index.html#/#{core_name}">Solr Admin</a></div>
-
-  <a href="#" onclick='jQuery(".debug").toggle(); return false;'>toggle debug mode</a>
-  <a href="#url_for_lens&wt=xml#if($debug)&debug=true#end">XML results</a> ## TODO: Add links for other formats, maybe dynamically?
-
-</div>
-
-<div>
-  <a href="http://lucene.apache.org/solr">Solr Home Page</a>
-</div>
-
-
-<div class="debug">
-  <hr/>
-  Request:
-  <pre>
-    $esc.html($request)
-  </pre>
-
-  <hr/>
-  Debug:
-  <pre>
-    $esc.html($response.response.debug)
-  </pre>
-</div>
\ No newline at end of file
diff --git a/solr/example/files/conf/velocity/head.vm b/solr/example/files/conf/velocity/head.vm
deleted file mode 100644
index a7e9b08..0000000
--- a/solr/example/files/conf/velocity/head.vm
+++ /dev/null
@@ -1,290 +0,0 @@
-<title>Solr browse: #core_name</title>
-
-<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
-
-<link rel="icon" type="image/x-icon" href="#{url_root}/img/favicon.ico"/>
-<link rel="shortcut icon" type="image/x-icon" href="#{url_root}/img/favicon.ico"/>
-
-<script type="text/javascript" src="#{url_root}/libs/jquery-3.4.1.min.js"></script>
-<script type="text/javascript" src="#{url_for_solr}/admin/file?file=/velocity/js/jquery.tx3-tag-cloud.js&contentType=text/javascript"></script>
-<script type="text/javascript" src="#{url_for_solr}/admin/file?file=/velocity/js/dropit.js&contentType=text/javascript"></script>
-<script type="text/javascript" src="#{url_for_solr}/admin/file?file=/velocity/js/jquery.autocomplete.js&contentType=text/javascript"></script>
-
-<script type="text/javascript">
-  $(document).ready(function() {
-
-    $("#tagcloud").tx3TagCloud({
-      multiplier: 1
-    });
-
-    $('.menu').dropit();
-
-    $( document ).ajaxComplete(function() {
-      $("#tagcloud").tx3TagCloud({
-        multiplier: 5
-      });
-    });
-
-    $('\#q').keyup(function() {
-      $('#browse_results').load('#{url_for_home}?#lensNoQ&v.layout.enabled=false&v.template=results&q='+encodeURI($('\#q').val()));
-
-      $("\#q").autocomplete('#{url_for_solr}/suggest', {
-        extraParams: {
-          'suggest.q': function() { return $("\#q").val();},
-          'suggest.build': 'true',
-          'wt': 'json',
-        }
-      }).keydown(function(e) {
-        if (e.keyCode === 13){
-          $("#query-form").trigger('submit');
-        }
-      });
-    });
-
-  });
-</script>
-
-<style>
-
-  html {
-    background-color: #F0F8FF;
-  }
-
-  body {
-    font-family: Helvetica, Arial, sans-serif;
-    font-size: 10pt;
-  }
-
-  #header {
-    width: 100%;
-    font-size: 20pt;
-  }
-
-  #header2 {
-    margin-left:1200px;
-  }
-
-  #logo {
-    width: 115px;
-    margin: 0px 0px 0px 0px;
-    border-style: none;
-  }
-
-  a {
-    color: #305CB3;
-  }
-
-  a.hidden {
-    display:none;
-  }
-
-  em {
-    color: #FF833D;
-  }
-
-  .error {
-    color: white;
-    background-color: red;
-    left: 210px;
-    width:80%;
-    position: relative;
-  }
-
-  .debug { display: none; font-size: 10pt}
-  #debug_query {
-    font-family: Helvetica, Arial, sans-serif;
-    font-size: 10pt;
-    font-weight: bold;
-  }
-  #parsed_query {
-    font-family: Courier, Courier New, monospaced;
-    font-size: 10pt;
-    font-weight: normal;
-  }
-
-  #admin {
-    text-align: right;
-    vertical-align: top;
-  }
-
-  #query-form {
-    width: 90%;
-  }
-
-  #query-box {
-    padding: 5px;
-    margin: 5px;
-    font-weight: normal;
-    font-size: 24px;
-    letter-spacing: 0.08em;
-  }
-  #constraints {
-    margin: 10px;
-  }
-
-  #tabs {  }
-  #tabs li { display: inline; font-size: 10px;}
-  #tabs li a { border-radius: 20px; border: 2px solid #C1CDCD; padding: 10px;color: #42454a; background-color: #dedbde;}
-  #tabs li a:hover { background-color: #f1f0ee; }
-  #tabs li a.selected { color: #000; background-color: #f1f0ee; font-weight: bold; padding: 5px }
-  #tabs li a.no_results { color: #000; background-color: #838B8B; font-style: italic; padding: 5px; pointer-events: none;
-  cursor: default; text-decoration: none;}
-
-  .pagination {
-    width: 305px;
-    border-radius: 25px;
-    border: 2px solid #C1CDCD;
-    padding: 20px;
-    padding-left: 10%;
-    background: #eee;
-    margin-left: 190px;
-    margin-top : 42px;
-    padding-top: 5px;
-    padding-bottom: 5px;
-    text-align:left;
-  }
-
-  #results_list { width: 70%; }
-  .result-document {
-    border-radius: 25px;
-    border: 2px solid #C1CDCD;
-    padding: 10px;
-//    width: 800px;
-//    height: 120px;
-    margin: 5px;
-//    margin-left: 60px;
-//    margin-right: 210px;
-//    margin-bottom: 15px;
-    transition: 1s ease;
-  }
-  .result-document:hover
-  {
-    webkit-transform: scale(1.1);
-    -ms-transform: scale(1.1);
-    transform: scale(1.1);
-    transition: 1s ease;
-  }
-  .result-document div {
-    padding: 5px;
-  }
-  .result-title {
-    width:60%;
-  }
-  .result-body {
-    background: #ddd;
-  }
-  .result-document:nth-child(2n+1) {
-    background-color: #FFFFFD;
-  }
-
-  #facets {
-    margin: 5px;
-    margin-top: 0px;
-    padding: 5px;
-    top: -20px;
-    position: relative;
-    float: right;
-    width: 25%;
-  }
-  .facet-field {
-    font-weight: bold;
-  }
-  #facets ul {
-    list-style: none;
-    margin: 0;
-    margin-bottom: 5px;
-    margin-top: 5px;
-    padding-left: 10px;
-  }
-  #facets ul li {
-    color: #999;
-    padding: 2px;
-  }
-
-  div.facet_field {
-    clear: left;
-  }
-
-  ul.tx3-tag-cloud { }
-  ul.tx3-tag-cloud li {
-    display: block;
-    float: left;
-    list-style: none;
-    margin-right: 4px;
-  }
-  ul.tx3-tag-cloud li a {
-    display: block;
-    text-decoration: none;
-    color: #c9c9c9;
-    padding: 3px 10px;
-  }
-  ul.tx3-tag-cloud li a:hover {
-    color: #000000;
-    -webkit-transition: color 250ms linear;
-    -moz-transition: color 250ms linear;
-    -o-transition: color 250ms linear;
-    -ms-transition: color 250ms linear;
-    transition: color 250ms linear;
-  }
-
-  .dropit {
-    list-style: none;
-    padding: 0;
-    margin: 0;
-  }
-  .dropit .dropit-trigger { position: relative; }
-  .dropit .dropit-submenu {
-    position: absolute;
-    top: 100%;
-    left: 0; /* dropdown left or right */
-    z-index: 1000;
-    display: none;
-    min-width: 150px;
-    list-style: none;
-    padding: 0;
-    margin: 0;
-  }
-  .dropit .dropit-open .dropit-submenu { display: block; }
-
-
-  <!--autocomplete css-->
-  .ac_results {
-    padding: 0px;
-    border: 1px solid black;
-    background-color: white;
-    overflow: hidden;
-    z-index: 99999;
-  }
-
-  .ac_results ul {
-    width: 100%;
-    list-style-position: outside;
-    list-style: none;
-    padding: 0;
-    margin: 0;
-  }
-
-  .ac_results li {
-    margin: 0px;
-    padding: 2px 5px;
-    cursor: default;
-    display: block;
-    font: menu;
-    font-size: 12px;
-    line-height: 16px;
-    overflow: hidden;
-  }
-
-  .ac_loading {
-//    background: white url('˜indicator.gif') right center no-repeat;
-  }
-
-  .ac_odd {
-    background-color: #eee;
-  }
-
-  .ac_over {
-    background-color: #0A246A;
-    color: white;
-  }
-</style>
diff --git a/solr/example/files/conf/velocity/hit.vm b/solr/example/files/conf/velocity/hit.vm
deleted file mode 100644
index 2c658cd..0000000
--- a/solr/example/files/conf/velocity/hit.vm
+++ /dev/null
@@ -1,77 +0,0 @@
-
-#set($docId = $doc.getFirstValue($request.schema.uniqueKeyField.name))
-
-## Load Mime-Type List and Mapping
-#parse('mime_type_lists.vm')
-
-## Title
-#if($doc.getFieldValue('title'))
-  #set($title = $esc.html($doc.getFirstValue('title')))
-#else
-  #set($title = "$doc.getFirstValue('id').substring($math.add(1,$doc.getFirstValue('id').lastIndexOf('/')))")
-#end
-
-## Date
-#if($doc.getFieldValue('attr_meta_creation_date'))
-  #set($date = $esc.html($doc.getFirstValue('attr_meta_creation_date')))
-#else
-  #set($date = "No date found")
-#end
-
-
-
-## URL
-#if($doc.getFieldValue('url'))
-  #set($url = $doc.getFieldValue('url'))
-#elseif($doc.getFieldValue('resourcename'))
-  #set($url = "file:///$doc.getFirstValue('resourcename')")
-#else
-  #set($url = "$doc.getFieldValue('id')")
-#end
-
-## Sort out Mime-Type
-#set($ct = $doc.getFirstValue('content_type').split(";").get(0))
-#set($filename = $doc.getFirstValue('resourcename'))
-#set($filetype = false)
-#set($filetype = $mimeExtensionsMap.get($ct))
-#if(!$filetype)
-  #set($filetype = $filename.substring($filename.lastIndexOf(".")).substring(1))
-#end
-#if(!$filetype)
-  #set($filetype = "file")
-#end
-#if(!$supportedMimeTypes.contains($filetype))
-  #set($filetype = "file")
-#end
-
-<div class="result-document">
-  <span class="result-title">
-    <img src="#{url_root}/img/filetypes/${filetype}.png" align="center">
-    <b>$title</b>
-  </span>
-
-  <div>
-    id: $docId </br>
-  </div>
-
-  #set($pad = "")
-  #foreach($v in $response.response.highlighting.get($docId).get("content"))
-    $pad$esc.html($v).replace("HL_START","<em>").replace("HL_END","</em>")
-    #set($pad = " ... ")
-  #end
-
-</div>
-
-<a href="#" class="debug" onclick='jQuery(this).next().toggle(); return false;'>toggle explain</a>
-<pre style="display: none;">
-    $esc.html($response.getExplainMap().get($doc.getFirstValue('id')))
-</pre>
-
-<a href="#" class="debug" onclick='jQuery(this).next().toggle(); return false;'>show all fields</a>
-<pre style="display:none;">
-  #foreach($fieldname in $doc.fieldNames)
-    <span>$fieldname :</span>
-    <span>#foreach($value in $doc.getFieldValues($fieldname))$esc.html($value)#end</span>
-  #end
-</pre>
-
diff --git a/solr/example/files/conf/velocity/img/english_640.png b/solr/example/files/conf/velocity/img/english_640.png
deleted file mode 100644
index 81256a1..0000000
Binary files a/solr/example/files/conf/velocity/img/english_640.png and /dev/null differ
diff --git a/solr/example/files/conf/velocity/img/france_640.png b/solr/example/files/conf/velocity/img/france_640.png
deleted file mode 100644
index 16d4541..0000000
Binary files a/solr/example/files/conf/velocity/img/france_640.png and /dev/null differ
diff --git a/solr/example/files/conf/velocity/img/germany_640.png b/solr/example/files/conf/velocity/img/germany_640.png
deleted file mode 100644
index f5d6ae8..0000000
Binary files a/solr/example/files/conf/velocity/img/germany_640.png and /dev/null differ
diff --git a/solr/example/files/conf/velocity/img/globe_256.png b/solr/example/files/conf/velocity/img/globe_256.png
deleted file mode 100644
index 514597b..0000000
Binary files a/solr/example/files/conf/velocity/img/globe_256.png and /dev/null differ
diff --git a/solr/example/files/conf/velocity/jquery.tx3-tag-cloud.js b/solr/example/files/conf/velocity/jquery.tx3-tag-cloud.js
deleted file mode 100644
index e69de29..0000000
diff --git a/solr/example/files/conf/velocity/js/dropit.js b/solr/example/files/conf/velocity/js/dropit.js
deleted file mode 100644
index 3094414..0000000
--- a/solr/example/files/conf/velocity/js/dropit.js
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Dropit v1.1.0
- * http://dev7studios.com/dropit
- *
- * Copyright 2012, Dev7studios
- * Free to use and abuse under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
- */
-
-;(function($) {
-
-    $.fn.dropit = function(method) {
-
-        var methods = {
-
-            init : function(options) {
-                this.dropit.settings = $.extend({}, this.dropit.defaults, options);
-                return this.each(function() {
-                    var $el = $(this),
-                         el = this,
-                         settings = $.fn.dropit.settings;
-
-                    // Hide initial submenus
-                    $el.addClass('dropit')
-                    .find('>'+ settings.triggerParentEl +':has('+ settings.submenuEl +')').addClass('dropit-trigger')
-                    .find(settings.submenuEl).addClass('dropit-submenu').hide();
-
-                    // Open on click
-                    $el.off(settings.action).on(settings.action, settings.triggerParentEl +':has('+ settings.submenuEl +') > '+ settings.triggerEl +'', function(){
-                        // Close click menu's if clicked again
-                        if(settings.action == 'click' && $(this).parents(settings.triggerParentEl).hasClass('dropit-open')){
-                            settings.beforeHide.call(this);
-                            $(this).parents(settings.triggerParentEl).removeClass('dropit-open').find(settings.submenuEl).hide();
-                            settings.afterHide.call(this);
-                            return false;
-                        }
-
-                        // Hide open menus
-                        settings.beforeHide.call(this);
-                        $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();
-                        settings.afterHide.call(this);
-
-                        // Open this menu
-                        settings.beforeShow.call(this);
-                        $(this).parents(settings.triggerParentEl).addClass('dropit-open').find(settings.submenuEl).show();
-                        settings.afterShow.call(this);
-
-                        return false;
-                    });
-
-                    // Close if outside click
-                    $(document).on('click', function(){
-                        settings.beforeHide.call(this);
-                        $('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();
-                        settings.afterHide.call(this);
-                    });
-
-                    // If hover
-                    if(settings.action == 'mouseenter'){
-                        $el.on('mouseleave', '.dropit-open', function(){
-                            settings.beforeHide.call(this);
-                            $(this).removeClass('dropit-open').find(settings.submenuEl).hide();
-                            settings.afterHide.call(this);
-                        });
-                    }
-
-                    settings.afterLoad.call(this);
-                });
-            }
-
-        };
-
-        if (methods[method]) {
-            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
-        } else if (typeof method === 'object' || !method) {
-            return methods.init.apply(this, arguments);
-        } else {
-            $.error( 'Method "' +  method + '" does not exist in dropit plugin!');
-        }
-
-    };
-
-    $.fn.dropit.defaults = {
-        action: 'mouseenter', // The open action for the trigger
-        submenuEl: 'ul', // The submenu element
-        triggerEl: 'a', // The trigger element
-        triggerParentEl: 'li', // The trigger parent element
-        afterLoad: function(){}, // Triggers when plugin has loaded
-        beforeShow: function(){}, // Triggers before submenu is shown
-        afterShow: function(){}, // Triggers after submenu is shown
-        beforeHide: function(){}, // Triggers before submenu is hidden
-        afterHide: function(){} // Triggers before submenu is hidden
-    };
-
-    $.fn.dropit.settings = {};
-
-})(jQuery);
diff --git a/solr/example/files/conf/velocity/js/jquery.autocomplete.js b/solr/example/files/conf/velocity/js/jquery.autocomplete.js
deleted file mode 100644
index 442f5a0..0000000
--- a/solr/example/files/conf/velocity/js/jquery.autocomplete.js
+++ /dev/null
@@ -1,763 +0,0 @@
-/*
- * Autocomplete - jQuery plugin 1.1pre
- *
- * Copyright (c) 2007 Dylan Verheul, Dan G. Switzer, Anjesh Tuladhar, Jörn Zaefferer
- *
- * Dual licensed under the MIT and GPL licenses:
- *   http://www.opensource.org/licenses/mit-license.php
- *   http://www.gnu.org/licenses/gpl.html
- *
- * Revision: Id: jquery.autocomplete.js 5785 2008-07-12 10:37:33Z joern.zaefferer $
- *
- */
-
-;(function($) {
-  
-$.fn.extend({
-  autocomplete: function(urlOrData, options) {
-    var isUrl = typeof urlOrData == "string";
-    options = $.extend({}, $.Autocompleter.defaults, {
-      url: isUrl ? urlOrData : null,
-      data: isUrl ? null : urlOrData,
-      delay: isUrl ? $.Autocompleter.defaults.delay : 10,
-      max: options && !options.scroll ? 10 : 150
-    }, options);
-    
-    // if highlight is set to false, replace it with a do-nothing function
-    options.highlight = options.highlight || function(value) { return value; };
-    
-    // if the formatMatch option is not specified, then use formatItem for backwards compatibility
-    options.formatMatch = options.formatMatch || options.formatItem;
-    
-    return this.each(function() {
-      new $.Autocompleter(this, options);
-    });
-  },
-  result: function(handler) {
-    return this.bind("result", handler);
-  },
-  search: function(handler) {
-    return this.trigger("search", [handler]);
-  },
-  flushCache: function() {
-    return this.trigger("flushCache");
-  },
-  setOptions: function(options){
-    return this.trigger("setOptions", [options]);
-  },
-  unautocomplete: function() {
-    return this.trigger("unautocomplete");
-  }
-});
-
-$.Autocompleter = function(input, options) {
-
-  var KEY = {
-    UP: 38,
-    DOWN: 40,
-    DEL: 46,
-    TAB: 9,
-    RETURN: 13,
-    ESC: 27,
-    COMMA: 188,
-    PAGEUP: 33,
-    PAGEDOWN: 34,
-    BACKSPACE: 8
-  };
-
-  // Create $ object for input element
-  var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass);
-
-  var timeout;
-  var previousValue = "";
-  var cache = $.Autocompleter.Cache(options);
-  var hasFocus = 0;
-  var lastKeyPressCode;
-  var config = {
-    mouseDownOnSelect: false
-  };
-  var select = $.Autocompleter.Select(options, input, selectCurrent, config);
-  
-  var blockSubmit;
-  
-  // prevent form submit in opera when selecting with return key
-  $.browser.opera && $(input.form).bind("submit.autocomplete", function() {
-    if (blockSubmit) {
-      blockSubmit = false;
-      return false;
-    }
-  });
-  
-  // only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
-  $input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
-    // track last key pressed
-    lastKeyPressCode = event.keyCode;
-    switch(event.keyCode) {
-    
-      case KEY.UP:
-        event.preventDefault();
-        if ( select.visible() ) {
-          select.prev();
-        } else {
-          onChange(0, true);
-        }
-        break;
-        
-      case KEY.DOWN:
-        event.preventDefault();
-        if ( select.visible() ) {
-          select.next();
-        } else {
-          onChange(0, true);
-        }
-        break;
-        
-      case KEY.PAGEUP:
-        event.preventDefault();
-        if ( select.visible() ) {
-          select.pageUp();
-        } else {
-          onChange(0, true);
-        }
-        break;
-        
-      case KEY.PAGEDOWN:
-        event.preventDefault();
-        if ( select.visible() ) {
-          select.pageDown();
-        } else {
-          onChange(0, true);
-        }
-        break;
-      
-      // matches also semicolon
-      case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
-      case KEY.TAB:
-      case KEY.RETURN:
-        if( selectCurrent() ) {
-          // stop default to prevent a form submit, Opera needs special handling
-          event.preventDefault();
-          blockSubmit = true;
-          return false;
-        }
-        break;
-        
-      case KEY.ESC:
-        select.hide();
-        break;
-        
-      default:
-        clearTimeout(timeout);
-        timeout = setTimeout(onChange, options.delay);
-        break;
-    }
-  }).focus(function(){
-    // track whether the field has focus, we shouldn't process any
-    // results if the field no longer has focus
-    hasFocus++;
-  }).blur(function() {
-    hasFocus = 0;
-    if (!config.mouseDownOnSelect) {
-      hideResults();
-    }
-  }).click(function() {
-    // show select when clicking in a focused field
-    if ( hasFocus++ > 1 && !select.visible() ) {
-      onChange(0, true);
-    }
-  }).bind("search", function() {
-    // TODO why not just specifying both arguments?
-    var fn = (arguments.length > 1) ? arguments[1] : null;
-    function findValueCallback(q, data) {
-      var result;
-      if( data && data.length ) {
-        for (var i=0; i < data.length; i++) {
-          if( data[i].result.toLowerCase() == q.toLowerCase() ) {
-            result = data[i];
-            break;
-          }
-        }
-      }
-      if( typeof fn == "function" ) fn(result);
-      else $input.trigger("result", result && [result.data, result.value]);
-    }
-    $.each(trimWords($input.val()), function(i, value) {
-      request(value, findValueCallback, findValueCallback);
-    });
-  }).bind("flushCache", function() {
-    cache.flush();
-  }).bind("setOptions", function() {
-    $.extend(options, arguments[1]);
-    // if we've updated the data, repopulate
-    if ( "data" in arguments[1] )
-      cache.populate();
-  }).bind("unautocomplete", function() {
-    select.unbind();
-    $input.unbind();
-    $(input.form).unbind(".autocomplete");
-  });
-  
-  
-  function selectCurrent() {
-    var selected = select.selected();
-    if( !selected )
-      return false;
-    
-    var v = selected.result;
-    previousValue = v;
-    
-    if ( options.multiple ) {
-      var words = trimWords($input.val());
-      if ( words.length > 1 ) {
-        v = words.slice(0, words.length - 1).join( options.multipleSeparator ) + options.multipleSeparator + v;
-      }
-      v += options.multipleSeparator;
-    }
-    
-    $input.val(v);
-    hideResultsNow();
-    $input.trigger("result", [selected.data, selected.value]);
-    return true;
-  }
-  
-  function onChange(crap, skipPrevCheck) {
-    if( lastKeyPressCode == KEY.DEL ) {
-      select.hide();
-      return;
-    }
-    
-    var currentValue = $input.val();
-    
-    if ( !skipPrevCheck && currentValue == previousValue )
-      return;
-    
-    previousValue = currentValue;
-    
-    currentValue = lastWord(currentValue);
-    if ( currentValue.length >= options.minChars) {
-      $input.addClass(options.loadingClass);
-      if (!options.matchCase)
-        currentValue = currentValue.toLowerCase();
-      request(currentValue, receiveData, hideResultsNow);
-    } else {
-      stopLoading();
-      select.hide();
-    }
-  };
-  
-  function trimWords(value) {
-    if ( !value ) {
-      return [""];
-    }
-    var words = value.split( options.multipleSeparator );
-    var result = [];
-    $.each(words, function(i, value) {
-      if ( $.trim(value) )
-        result[i] = $.trim(value);
-    });
-    return result;
-  }
-  
-  function lastWord(value) {
-    if ( !options.multiple )
-      return value;
-    var words = trimWords(value);
-    return words[words.length - 1];
-  }
-  
-  // fills in the input box w/the first match (assumed to be the best match)
-  // q: the term entered
-  // sValue: the first matching result
-  function autoFill(q, sValue){
-    // autofill in the complete box w/the first match as long as the user hasn't entered in more data
-    // if the last user key pressed was backspace, don't autofill
-    if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE ) {
-      // fill in the value (keep the case the user has typed)
-      $input.val($input.val() + sValue.substring(lastWord(previousValue).length));
-      // select the portion of the value not typed by the user (so the next character will erase)
-      $.Autocompleter.Selection(input, previousValue.length, previousValue.length + sValue.length);
-    }
-  };
-
-  function hideResults() {
-    clearTimeout(timeout);
-    timeout = setTimeout(hideResultsNow, 200);
-  };
-
-  function hideResultsNow() {
-    var wasVisible = select.visible();
-    select.hide();
-    clearTimeout(timeout);
-    stopLoading();
-    if (options.mustMatch) {
-      // call search and run callback
-      $input.search(
-        function (result){
-          // if no value found, clear the input box
-          if( !result ) {
-            if (options.multiple) {
-              var words = trimWords($input.val()).slice(0, -1);
-              $input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "") );
-            }
-            else
-              $input.val( "" );
-          }
-        }
-      );
-    }
-    if (wasVisible)
-      // position cursor at end of input field
-      $.Autocompleter.Selection(input, input.value.length, input.value.length);
-  };
-
-  function receiveData(q, data) {
-    if ( data && data.length && hasFocus ) {
-      stopLoading();
-      select.display(data, q);
-      autoFill(q, data[0].value);
-      select.show();
-    } else {
-      hideResultsNow();
-    }
-  };
-
-  function request(term, success, failure) {
-    if (!options.matchCase)
-      term = term.toLowerCase();
-    var data = cache.load(term);
-    data = null; // Avoid buggy cache and go to Solr every time 
-    // recieve the cached data
-    if (data && data.length) {
-      success(term, data);
-    // if an AJAX url has been supplied, try loading the data now
-    } else if( (typeof options.url == "string") && (options.url.length > 0) ){
-      
-      var extraParams = {
-        timestamp: +new Date()
-      };
-      $.each(options.extraParams, function(key, param) {
-        extraParams[key] = typeof param == "function" ? param() : param;
-      });
-      
-      $.ajax({
-        // try to leverage ajaxQueue plugin to abort previous requests
-        mode: "abort",
-        // limit abortion to this input
-        port: "autocomplete" + input.name,
-        dataType: options.dataType,
-        url: options.url,
-        data: $.extend({
-          q: lastWord(term),
-          limit: options.max
-        }, extraParams),
-        success: function(data) {
-          var parsed = options.parse && options.parse(data) || parse(data);
-          cache.add(term, parsed);
-          success(term, parsed);
-        }
-      });
-    } else {
-      // if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
-      select.emptyList();
-      failure(term);
-    }
-  };
-  
-  function parse(data) {
-    var parsed = [];
-    var rows = data.split("\n");
-    for (var i=0; i < rows.length; i++) {
-      var row = $.trim(rows[i]);
-      if (row) {
-        row = row.split("|");
-        parsed[parsed.length] = {
... 665 lines suppressed ...


[lucene-solr] 03/10: remove velocity-related ignore

Posted by eh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ehatcher pushed a commit to branch jira/solr-14792
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 65a84a5fe7828cac60893ad9775614e3084437e8
Author: Erik Hatcher <er...@lucidworks.com>
AuthorDate: Thu Sep 3 14:24:33 2020 -0400

    remove velocity-related ignore
---
 .gitignore | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index 15a2736..f120ec4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,6 @@ dist
 lib
 test-lib
 /*~
-/velocity.log
 /build.properties
 /.idea
 lucene/**/*.iml


[lucene-solr] 10/10: Remove velocity ref guide docs

Posted by eh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ehatcher pushed a commit to branch jira/solr-14792
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit e94b830058717fe352d4c298aab30b84305efd2f
Author: Erik Hatcher <er...@lucidworks.com>
AuthorDate: Thu Sep 3 21:04:44 2020 -0400

    Remove velocity ref guide docs
---
 .../src/velocity-response-writer.adoc              | 122 ---------------------
 solr/solr-ref-guide/src/velocity-search-ui.adoc    |  26 -----
 2 files changed, 148 deletions(-)

diff --git a/solr/solr-ref-guide/src/velocity-response-writer.adoc b/solr/solr-ref-guide/src/velocity-response-writer.adoc
deleted file mode 100644
index c493440..0000000
--- a/solr/solr-ref-guide/src/velocity-response-writer.adoc
+++ /dev/null
@@ -1,122 +0,0 @@
-= Velocity Response Writer
-// 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.
-
-The VelocityResponseWriter is an optional plugin available in the `contrib/velocity` directory. It powers the /browse user interfaces when using some example configurations such as "techproducts" and "example/files".
-
-[IMPORTANT]
-====
-The VelocityResponseWriter has been deprecated and may be removed in a future version of Solr.
-====
-
-Its JAR and dependencies must be added (via `<lib>` or solr/home lib inclusion), and must be registered in `solrconfig.xml` like this:
-
-[source,xml]
-----
-<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter">
-  <str name="template.base.dir">${velocity.template.base.dir:}</str>
-
-<!--
-  <str name="init.properties.file">velocity-init.properties</str>
-  <lst name="tools">
-    <str name="mytool">com.example.MyCustomTool</str>
-  </lst>
--->
-</queryResponseWriter>
-----
-
-== Configuration & Usage
-
-=== Template Rendering Protections
-
-Velocity template rendering is largely controlled by the `trusted` configset flag.  Templates built into (the `/browse` ones) the component library are always available
-with this component.  In a trusted configset, templates in the `velocity/` subdirectory of the configset are renderable.  Also in a trusted configset, when `template.base.dir`
-is specified those templates are renderable.
-
-=== VelocityResponseWriter Initialization Parameters
-
-`template.base.dir`::
-If specified and exists as a file system directory, a file resource loader will be added for this directory. Templates in this directory will override "solr" resource loader templates.
-
-`init.properties.file`:: Specifies a properties file name which must exist in the Solr `conf/` directory (*not* under a `velocity/` subdirectory) or root of a JAR file in a <lib>.
-
-`tools`::
-External "tools" can be specified as list of string name/value (tool name / class name) pairs. Tools, in the Velocity context, are simply Java objects. Tool classes are constructed using a no-arg constructor (or a single-SolrCore-arg constructor if it exists) and added to the Velocity context with the specified name.
-+
-A custom registered tool can override the built-in context objects with the same name, except for `$request`, `$response`, `$page`, and `$debug` (these tools are designed to not be overridden).
-
-=== VelocityResponseWriter Request Parameters
-
-`v.template`::
-Specifies the name of the template to render.
-
-`v.layout`::
-Specifies a template name to use as the layout around the main, `v.template`, specified template.
-+
-The main template is rendered into a string value included into the layout rendering as `$content`.
-
-`v.layout.enabled`::
-Determines if the main template should have a layout wrapped around it. The default is `true`, but requires `v.layout` to specified as well.
-
-`v.contentType`::
-Specifies the content type used in the HTTP response. If not specified, the default will depend on whether `v.json` is specified or not.
-+
-The default without `v.json=wrf`: `text/html;charset=UTF-8`.
-+
-The default with `v.json=wrf`: `application/json;charset=UTF-8`.
-
-`v.json`::
-Specifies a function name to wrap around the response rendered as JSON. If specified, the content type used in the response will be "application/json;charset=UTF-8", unless overridden by `v.contentType`.
-+
-Output will be in this format (with `v.json=wrf`):
-+
-`wrf("result":"<Velocity generated response string, with quotes and backslashes escaped>")`
-
-`v.locale`::
-Locale to use with the `$resource` tool and other LocaleConfig implementing tools. The default locale is `Locale.ROOT`. Localized resources are loaded from standard Java resource bundles named `resources[_locale-code].properties`.
-+
-Resource bundles can be added by providing a JAR file visible by the SolrResourceLoader with resource bundles under a velocity sub-directory. Resource bundles are not loadable under `conf/`, as only the class loader aspect of SolrResourceLoader can be used here.
-
-
-=== VelocityResponseWriter Context Objects
-
-// TODO: Change column width to %autowidth.spread when https://github.com/asciidoctor/asciidoctor-pdf/issues/599 is fixed
-
-[cols="30,70",options="header"]
-|===
-|Context Reference |Description
-|`request` |{solr-javadocs}solr-core/org/apache/solr/request/SolrQueryRequest.html[SolrQueryRequest] javadocs
-|`response` |{solr-javadocs}solr-core/org/apache/solr/response/SolrQueryResponse.html[QueryResponse] most of the time, but in some cases where QueryResponse doesn't like the request handler's output (https://cwiki.apache.org/confluence/display/solr/AnalysisRequestHandler[AnalysisRequestHandler], for example, causes a ClassCastException parsing "response"), the response will be a SolrResponseBase object.
-|`esc` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#EscapeTool[EscapeTool] instance
-|`date` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#ComparisonDateTool[ComparisonDateTool] instance
-|`math` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#MathTool[MathTool] instance
-|`number` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#NumberTool[NumberTool] instance
-|`sort` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#SortTool[SortTool] instance
-|`display` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#DisplayTool[DisplayTool] instance
-|`resource` |A Velocity http://velocity.apache.org/tools/{ivy-velocity-tools-version}/tools-summary.html#ResourceTool[ResourceTool] instance
-|`engine` |The current VelocityEngine instance
-|`page` |An instance of Solr's PageTool (only included if the response is a QueryResponse where paging makes sense)
-|`debug` |A shortcut to the debug part of the response, or null if debug is not on. This is handy for having debug-only sections in a template using `#if($debug)...#end`
-|`content` |The rendered output of the main template, when rendering the layout (`v.layout.enabled=true` and `v.layout=<template>`).
-|[custom tool(s)] |Tools provided by the optional "tools" list of the VelocityResponseWriter registration are available by their specified name.
-|===
-
-=== VelocityResponseWriter Usage
-
-To see results in an HTML user interface on your own collection, try http://localhost:8983/solr/<my collection>/select?q=*:*&wt=velocity&v.template=browse&v.layout=layout
-
-Or try `/browse` in the examples techproducts or example/files.
diff --git a/solr/solr-ref-guide/src/velocity-search-ui.adoc b/solr/solr-ref-guide/src/velocity-search-ui.adoc
deleted file mode 100644
index 96d7f93..0000000
--- a/solr/solr-ref-guide/src/velocity-search-ui.adoc
+++ /dev/null
@@ -1,26 +0,0 @@
-= Velocity Search UI
-// 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.
-
-Solr includes a sample search UI based on the <<response-writers.adoc#velocity-writer,VelocityResponseWriter>> (also known as Solritas) that demonstrates several useful features, such as searching, faceting, highlighting, autocomplete, and geospatial searching.
-
-When using the `sample_techproducts_configs` configset, you can access the Velocity sample Search UI: `\http://localhost:8983/solr/techproducts/browse`
-
-.The Velocity Search UI
-image::images/velocity-search-ui/techproducts_browse.png[image,width=500]
-
-For more information about the Velocity Response Writer, see the <<response-writers.adoc#velocity-writer,Response Writer page>>.


[lucene-solr] 02/10: remove Velocity license notices

Posted by eh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ehatcher pushed a commit to branch jira/solr-14792
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit fb4a0d823158d88ba937709f92e2a0581e60d12e
Author: Erik Hatcher <er...@lucidworks.com>
AuthorDate: Thu Sep 3 14:23:50 2020 -0400

    remove Velocity license notices
---
 solr/licenses/velocity-engine-core-2.0.jar.sha1    |   1 -
 solr/licenses/velocity-engine-core-LICENSE-ASL.txt | 202 ---------------------
 solr/licenses/velocity-engine-core-NOTICE.txt      |   7 -
 solr/licenses/velocity-tools-generic-3.0.jar.sha1  |   1 -
 .../velocity-tools-generic-LICENSE-ASL.txt         | 201 --------------------
 solr/licenses/velocity-tools-generic-NOTICE.txt    |  12 --
 solr/licenses/velocity-tools-view-3.0.jar.sha1     |   1 -
 solr/licenses/velocity-tools-view-LICENSE-ASL.txt  | 201 --------------------
 solr/licenses/velocity-tools-view-NOTICE.txt       |  12 --
 solr/licenses/velocity-tools-view-jsp-3.0.jar.sha1 |   1 -
 .../velocity-tools-view-jsp-LICENSE-ASL.txt        | 201 --------------------
 solr/licenses/velocity-tools-view-jsp-NOTICE.txt   |  12 --
 12 files changed, 852 deletions(-)

diff --git a/solr/licenses/velocity-engine-core-2.0.jar.sha1 b/solr/licenses/velocity-engine-core-2.0.jar.sha1
deleted file mode 100644
index 9cbf13d..0000000
--- a/solr/licenses/velocity-engine-core-2.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-6e5f29e1237b1764a4ce769feeffb85b0b19cfa7
diff --git a/solr/licenses/velocity-engine-core-LICENSE-ASL.txt b/solr/licenses/velocity-engine-core-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/velocity-engine-core-LICENSE-ASL.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
diff --git a/solr/licenses/velocity-engine-core-NOTICE.txt b/solr/licenses/velocity-engine-core-NOTICE.txt
deleted file mode 100644
index c016d50..0000000
--- a/solr/licenses/velocity-engine-core-NOTICE.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Apache Velocity
-
-Copyright (C) 2000-2007 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/solr/licenses/velocity-tools-generic-3.0.jar.sha1 b/solr/licenses/velocity-tools-generic-3.0.jar.sha1
deleted file mode 100644
index 018c1b3..0000000
--- a/solr/licenses/velocity-tools-generic-3.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e789f6ec06f9a69ccb8956f407fb685b2938e74b
diff --git a/solr/licenses/velocity-tools-generic-LICENSE-ASL.txt b/solr/licenses/velocity-tools-generic-LICENSE-ASL.txt
deleted file mode 100644
index 261eeb9..0000000
--- a/solr/licenses/velocity-tools-generic-LICENSE-ASL.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
diff --git a/solr/licenses/velocity-tools-generic-NOTICE.txt b/solr/licenses/velocity-tools-generic-NOTICE.txt
deleted file mode 100644
index 7d6375e..0000000
--- a/solr/licenses/velocity-tools-generic-NOTICE.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Apache Velocity Tools
-
-Copyright (C) 2000-2007 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-Support for using SSL with Struts is provided using
-the sslext library package, which is open source software
-under the Apache Software License 1.1 with copyright attributed
-to The Apache Software Foundation.
-This software is available from http://sslext.sourceforge.net/
diff --git a/solr/licenses/velocity-tools-view-3.0.jar.sha1 b/solr/licenses/velocity-tools-view-3.0.jar.sha1
deleted file mode 100644
index 67cf265..0000000
--- a/solr/licenses/velocity-tools-view-3.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-2f72ca8eb2bcb8af2c5fab826d64add20ab70a2e
diff --git a/solr/licenses/velocity-tools-view-LICENSE-ASL.txt b/solr/licenses/velocity-tools-view-LICENSE-ASL.txt
deleted file mode 100644
index 261eeb9..0000000
--- a/solr/licenses/velocity-tools-view-LICENSE-ASL.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
diff --git a/solr/licenses/velocity-tools-view-NOTICE.txt b/solr/licenses/velocity-tools-view-NOTICE.txt
deleted file mode 100644
index 7d6375e..0000000
--- a/solr/licenses/velocity-tools-view-NOTICE.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Apache Velocity Tools
-
-Copyright (C) 2000-2007 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-Support for using SSL with Struts is provided using
-the sslext library package, which is open source software
-under the Apache Software License 1.1 with copyright attributed
-to The Apache Software Foundation.
-This software is available from http://sslext.sourceforge.net/
diff --git a/solr/licenses/velocity-tools-view-jsp-3.0.jar.sha1 b/solr/licenses/velocity-tools-view-jsp-3.0.jar.sha1
deleted file mode 100644
index 45dd7f8..0000000
--- a/solr/licenses/velocity-tools-view-jsp-3.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-27f6a21c7973ffb75001b3e9ac4731facf5757b4
diff --git a/solr/licenses/velocity-tools-view-jsp-LICENSE-ASL.txt b/solr/licenses/velocity-tools-view-jsp-LICENSE-ASL.txt
deleted file mode 100644
index 261eeb9..0000000
--- a/solr/licenses/velocity-tools-view-jsp-LICENSE-ASL.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
diff --git a/solr/licenses/velocity-tools-view-jsp-NOTICE.txt b/solr/licenses/velocity-tools-view-jsp-NOTICE.txt
deleted file mode 100644
index 7d6375e..0000000
--- a/solr/licenses/velocity-tools-view-jsp-NOTICE.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Apache Velocity Tools
-
-Copyright (C) 2000-2007 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-Support for using SSL with Struts is provided using
-the sslext library package, which is open source software
-under the Apache Software License 1.1 with copyright attributed
-to The Apache Software Foundation.
-This software is available from http://sslext.sourceforge.net/


[lucene-solr] 04/10: update versions files with velocity removed

Posted by eh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ehatcher pushed a commit to branch jira/solr-14792
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 71f16685a0a80666c8f5d1f13b26be5b3ca4f20a
Author: Erik Hatcher <er...@lucidworks.com>
AuthorDate: Thu Sep 3 14:26:09 2020 -0400

    update versions files with velocity removed
---
 versions.lock  | 8 ++------
 versions.props | 1 -
 2 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/versions.lock b/versions.lock
index 6670238..2f453c3 100644
--- a/versions.lock
+++ b/versions.lock
@@ -78,7 +78,7 @@ org.apache.commons:commons-compress:1.19 (1 constraints: df04fa30)
 org.apache.commons:commons-configuration2:2.1.1 (1 constraints: 0605f935)
 org.apache.commons:commons-csv:1.7 (1 constraints: ac04212c)
 org.apache.commons:commons-exec:1.3 (1 constraints: a8041d2c)
-org.apache.commons:commons-lang3:3.9 (7 constraints: 36678708)
+org.apache.commons:commons-lang3:3.9 (4 constraints: 702e84c7)
 org.apache.commons:commons-math3:3.6.1 (1 constraints: 0c050d36)
 org.apache.commons:commons-text:1.6 (1 constraints: ab04202c)
 org.apache.curator:curator-client:2.13.0 (1 constraints: 3805383b)
@@ -118,10 +118,6 @@ org.apache.tika:tika-core:1.24 (1 constraints: db04f730)
 org.apache.tika:tika-java7:1.24 (1 constraints: db04f730)
 org.apache.tika:tika-parsers:1.24 (1 constraints: db04f730)
 org.apache.tika:tika-xmp:1.24 (1 constraints: db04f730)
-org.apache.velocity:velocity-engine-core:2.0 (3 constraints: 973bcd79)
-org.apache.velocity.tools:velocity-tools-generic:3.0 (1 constraints: 00136415)
-org.apache.velocity.tools:velocity-tools-view:3.0 (1 constraints: 7a14126a)
-org.apache.velocity.tools:velocity-tools-view-jsp:3.0 (1 constraints: a704202c)
 org.apache.xmlbeans:xmlbeans:3.1.0 (1 constraints: 0605fd35)
 org.apache.zookeeper:zookeeper:3.6.1 (1 constraints: 0c050d36)
 org.apache.zookeeper:zookeeper-jute:3.6.1 (1 constraints: 8a0d3828)
@@ -178,7 +174,7 @@ org.restlet.jee:org.restlet:2.4.3 (2 constraints: eb156ae7)
 org.restlet.jee:org.restlet.ext.servlet:2.4.3 (1 constraints: 0b050436)
 org.rrd4j:rrd4j:3.5 (1 constraints: ac04252c)
 org.slf4j:jcl-over-slf4j:1.7.24 (1 constraints: 4005473b)
-org.slf4j:slf4j-api:1.7.24 (18 constraints: 64f415d2)
+org.slf4j:slf4j-api:1.7.24 (15 constraints: a3ba2a7b)
 org.tallison:jmatio:1.5 (1 constraints: aa041f2c)
 org.tukaani:xz:1.8 (1 constraints: ad04222c)
 org.xerial.snappy:snappy-java:1.1.7.6 (1 constraints: 6f05a240)
diff --git a/versions.props b/versions.props
index 8c25e30..6bc331b9 100644
--- a/versions.props
+++ b/versions.props
@@ -69,7 +69,6 @@ org.apache.pdfbox:*=2.0.17
 org.apache.pdfbox:jempbox=1.8.16
 org.apache.poi:*=4.1.1
 org.apache.tika:*=1.24
-org.apache.velocity.tools:*=3.0
 org.apache.xmlbeans:xmlbeans=3.1.0
 org.apache.zookeeper:*=3.6.1
 org.asciidoctor:asciidoctorj=1.6.2


[lucene-solr] 08/10: remove techproducts velocity/browse configurations

Posted by eh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ehatcher pushed a commit to branch jira/solr-14792
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit c2e7ee8abc06a202f52bc85d21ab4a02581cec6a
Author: Erik Hatcher <er...@lucidworks.com>
AuthorDate: Thu Sep 3 20:55:07 2020 -0400

    remove techproducts velocity/browse configurations
---
 .../conf/solrconfig.xml                            | 112 +--
 .../conf/velocity/README.md                        | 116 ----
 .../conf/velocity/VM_global_library.vm             | 186 -----
 .../conf/velocity/browse.vm                        |  33 -
 .../conf/velocity/cluster.vm                       |  19 -
 .../conf/velocity/cluster_results.vm               |  31 -
 .../conf/velocity/debug.vm                         |  28 -
 .../conf/velocity/did_you_mean.vm                  |  11 -
 .../conf/velocity/error.vm                         |  11 -
 .../conf/velocity/facet_fields.vm                  |  24 -
 .../conf/velocity/facet_pivot.vm                   |  12 -
 .../conf/velocity/facet_queries.vm                 |  12 -
 .../conf/velocity/facet_ranges.vm                  |  23 -
 .../conf/velocity/facets.vm                        |  10 -
 .../conf/velocity/footer.vm                        |  43 --
 .../conf/velocity/head.vm                          |  37 -
 .../conf/velocity/header.vm                        |   7 -
 .../conf/velocity/hit.vm                           |  25 -
 .../conf/velocity/hit_grouped.vm                   |  43 --
 .../conf/velocity/hit_plain.vm                     |  25 -
 .../conf/velocity/join_doc.vm                      |  20 -
 .../conf/velocity/jquery.autocomplete.css          |  48 --
 .../conf/velocity/jquery.autocomplete.js           | 763 ---------------------
 .../conf/velocity/layout.vm                        |  24 -
 .../conf/velocity/main.css                         | 231 -------
 .../conf/velocity/mime_type_lists.vm               |  68 --
 .../conf/velocity/pagination_bottom.vm             |  22 -
 .../conf/velocity/pagination_top.vm                |  29 -
 .../conf/velocity/product_doc.vm                   |  32 -
 .../conf/velocity/query.vm                         |  42 --
 .../conf/velocity/query_form.vm                    |  64 --
 .../conf/velocity/query_group.vm                   |  43 --
 .../conf/velocity/query_spatial.vm                 |  75 --
 .../conf/velocity/results_list.vm                  |  22 -
 .../conf/velocity/richtext_doc.vm                  | 153 -----
 .../conf/velocity/suggest.vm                       |   8 -
 .../conf/velocity/tabs.vm                          |  50 --
 37 files changed, 1 insertion(+), 2501 deletions(-)

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 26141b8..34c7567 100644
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
+++ b/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
@@ -83,9 +83,6 @@
 
   <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-ltr-\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.
@@ -852,106 +849,7 @@
      </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">
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-
-       <!-- VelocityResponseWriter settings -->
-       <str name="wt">velocity</str>
-       <str name="v.template">browse</str>
-       <str name="v.layout">layout</str>
-       <str name="title">Solritas</str>
-
-       <!-- Query settings -->
-       <str name="defType">edismax</str>
-       <str name="qf">
-          text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
-          title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0
-       </str>
-       <str name="mm">100%</str>
-       <str name="q.alt">*:*</str>
-       <str name="rows">10</str>
-       <str name="fl">*,score</str>
-
-       <str name="mlt.qf">
-         text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
-         title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0
-       </str>
-       <str name="mlt.fl">text,features,name,sku,id,manu,cat,title,description,keywords,author,resourcename</str>
-       <int name="mlt.count">3</int>
-
-       <!-- Faceting defaults -->
-       <str name="facet">on</str>
-       <str name="facet.missing">true</str>
-       <str name="facet.field">cat</str>
-       <str name="facet.field">manu_exact</str>
-       <str name="facet.field">content_type</str>
-       <str name="facet.field">author_s</str>
-       <str name="facet.query">ipod</str>
-       <str name="facet.query">GB</str>
-       <str name="facet.mincount">1</str>
-       <str name="facet.pivot">cat,inStock</str>
-       <str name="facet.range.other">after</str>
-       <str name="facet.range">price</str>
-       <int name="f.price.facet.range.start">0</int>
-       <int name="f.price.facet.range.end">600</int>
-       <int name="f.price.facet.range.gap">50</int>
-       <str name="facet.range">popularity</str>
-       <int name="f.popularity.facet.range.start">0</int>
-       <int name="f.popularity.facet.range.end">10</int>
-       <int name="f.popularity.facet.range.gap">3</int>
-       <str name="facet.range">manufacturedate_dt</str>
-       <str name="f.manufacturedate_dt.facet.range.start">NOW/YEAR-10YEARS</str>
-       <str name="f.manufacturedate_dt.facet.range.end">NOW</str>
-       <str name="f.manufacturedate_dt.facet.range.gap">+1YEAR</str>
-       <str name="f.manufacturedate_dt.facet.range.other">before</str>
-       <str name="f.manufacturedate_dt.facet.range.other">after</str>
-
-       <!-- Highlighting defaults -->
-       <str name="hl">on</str>
-       <str name="hl.fl">content features title name</str>
-       <str name="hl.preserveMulti">true</str>
-       <str name="hl.encoder">html</str>
-       <str name="hl.simple.pre">&lt;b&gt;</str>
-       <str name="hl.simple.post">&lt;/b&gt;</str>
-       <str name="f.title.hl.fragsize">0</str>
-       <str name="f.title.hl.alternateField">title</str>
-       <str name="f.name.hl.fragsize">0</str>
-       <str name="f.name.hl.alternateField">name</str>
-       <str name="f.content.hl.snippets">3</str>
-       <str name="f.content.hl.fragsize">200</str>
-       <str name="f.content.hl.alternateField">content</str>
-       <str name="f.content.hl.maxAlternateFieldLength">750</str>
-
-       <!-- Spell checking defaults -->
-       <str name="spellcheck">on</str>
-       <str name="spellcheck.extendedResults">false</str>
-       <str name="spellcheck.count">5</str>
-       <str name="spellcheck.alternativeTermCount">2</str>
-       <str name="spellcheck.maxResultsForSuggest">5</str>
-       <str name="spellcheck.collate">true</str>
-       <str name="spellcheck.collateExtendedResults">true</str>
-       <str name="spellcheck.maxCollationTries">5</str>
-       <str name="spellcheck.maxCollations">3</str>
-     </lst>
-
-     <!-- append spellchecking to our list of components -->
-     <arr name="last-components">
-       <str>spellcheck</str>
-     </arr>
-  </requestHandler>
-
-
-  <initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse,update">
+  <initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,update">
     <lst name="defaults">
       <str name="df">text</str>
     </lst>
@@ -1561,14 +1459,6 @@
     <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>
-    </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.
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/README.md b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/README.md
deleted file mode 100644
index 05c6d43..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/README.md
+++ /dev/null
@@ -1,116 +0,0 @@
-Introduction
-------------
-Solr Search Velocity Templates
-
-A quick demo of using Solr using http://wiki.apache.org/solr/VelocityResponseWriter
-
-You typically access these templates via:
-	http://localhost:8983/solr/collection1/browse
-
-It's called "browse" because you can click around with your mouse
-without needing to type any search terms.  And of course it
-also works as a standard search app as well.
-
-Known Limitations
------------------
-* The /browse and the VelocityResponseWriter component
-  serve content directly from Solr, which usually requires
-  Solr's HTTP API to be exposed.  Advanced users could
-  potentially access other parts of Solr directly.
-* There are some hard coded fields in these templates.
-  Since these templates live under conf, they should be
-  considered part of the overall configuration, and
-  must be coordinated with schema.xml and solrconfig.xml
-
-Velocity Info
--------------
-Java-based template language.
-
-It's nice in this context because change to the templates
-are immediately visible in browser on the next visit.
-
-Links:
-
-	http://velocity.apache.org
-	http://wiki.apache.org/velocity/
-	http://velocity.apache.org/engine/releases/velocity-1.7/user-guide.html
-
-
-File List
----------
-
-System and Misc:
-```
-  VM_global_library.vm    - Macros used other templates,
-                            exact filename is important for Velocity to see it
-  error.vm                - shows errors, if any
-  debug.vm                - includes toggle links for "explain" and "all fields"
-                            activated by debug link in footer.vm
-  README.md              - this file
-```
-
-Overall Page Composition:
-
-```
-  browse.vm               - Main entry point into templates
-  layout.vm               - overall HTML page layout
-  head.vm                 - elements in the <head> section of the HTML document
-  header.vm               - top section of page visible to users
-  footer.vm               - bottom section of page visible to users,
-                            includes debug and help links
-  main.css                - CSS style for overall pages
-                            see also jquery.autocomplete.css
-```
-
-Query Form and Options:
-
-```
-  query_form.vm           - renders query form
-  query_group.vm          - group by fields
-                            e.g.: Manufacturer or Poplularity
-  query_spatial.vm        - select box for location based Geospacial search
-```
-
-Spelling Suggestions:
-
-```
-  did_you_mean.vm         - hyperlinked spelling suggestions in results
-  suggest.vm              - dynamic spelling suggestions
-                            as you type in the search form
-  jquery.autocomplete.js  - supporting files for dynamic suggestions
-  jquery.autocomplete.css - Most CSS is defined in main.css
-```
-
-Search Results, General:
-
-```
-  (see also browse.vm)
-  tabs.vm                 - provides navigation to advanced search options
-  pagination_top.vm       - paging and staticis at top of results
-  pagination_bottom.vm    - paging and staticis at bottom of results
-  results_list.vm
-  hit.vm                  - called for each matching doc,
-                            decides which template to use
-  hit_grouped.vm          - display results grouped by field values
-  product_doc.vm          - display a Product
-  join_doc.vm             - display a joined document
-  richtext_doc.vm         - display a complex/misc. document
-  hit_plain.vm            - basic display of all fields,
-                            edit results_list.vm to enable this
-```
-
-Search Results, Facets & Clusters:
-```
-  facets.vm               - calls the 4 facet and 1 cluster template
-  facet_fields.vm         - display facets based on field values
-                            e.g.: fields specified by &facet.field=
-  facet_queries.vm        - display facets based on specific facet queries
-                            e.g.: facets specified by &facet.query=
-  facet_ranges.vm         - display facets based on ranges
-                            e.g.: ranges specified by &facet.range=
-  facet_pivot.vm          - display pivot based facets
-                            e.g.: facets specified by &facet.pivot=
-  cluster.vm              - if clustering is available
-                            then call cluster_results.vm
-  cluster_results.vm      - actual rendering of clusters
-```
\ No newline at end of file
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/VM_global_library.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/VM_global_library.vm
deleted file mode 100644
index 42dde89..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/VM_global_library.vm
+++ /dev/null
@@ -1,186 +0,0 @@
-#**
- *  Global macros used by other templates.
- *  This file must be named VM_global_library.vm
- *  in order for Velocity to find it.
- *#
-
-#macro(param $key)$request.params.get($key)#end
-
-#macro(url_root)/solr#end
-
-## TODO: s/url_for_solr/url_for_core/ and s/url_root/url_for_solr/
-#macro(core_name)$request.core.name#end
-#macro(url_for_solr)#{url_root}#if($request.core.name != "")/$request.core.name#end#end
-#macro(url_for_home)#url_for_solr/browse#end
-
-#macro(q)&q=$!{esc.url($params.get('q'))}#end
-
-#macro(fqs $p)#foreach($fq in $p)#if($velocityCount && $velocityCount>1)&#{end}fq=$esc.url($fq)#end#end
-
-#macro(debug)#if($request.params.get('debugQuery'))&debugQuery=true#end#end
-
-#macro(boostPrice)#if($request.params.get('bf') == 'price')&bf=price#end#end        
-
-#macro(annotate)#if($request.params.get('annotateBrowse'))&annotateBrowse=true#end#end
-
-#macro(annTitle $msg)#if($annotate == true)title="$msg"#end#end
-
-#macro(spatial)#if($request.params.get('sfield'))&sfield=store#end#if($request.params.get('pt'))&pt=$request.params.get('pt')#end#if($request.params.get('d'))&d=$request.params.get('d')#end#end
-
-#macro(qOpts)#set($queryOpts = $request.params.get("queryOpts"))#if($queryOpts && $queryOpts != "")&queryOpts=$queryOpts#end#end
-
-#macro(group)#if($request.params.getBool("group") == true)&group=true#end#if($request.params.get("group.field"))#foreach($grp in $request.params.getParams('group.field'))&group.field=$grp#end#end#end
-
-#macro(sort $p)#if($p)#foreach($s in $p)&sort=$esc.url($s)#end#end#end
-
-#macro(lensNoQ)?#if($request.params.getParams('fq') && $request.params.getParams('fq').size() > 0)&#fqs($request.params.getParams('fq'))#end#sort($request.params.getParams('sort'))#debug#boostPrice#annotate#spatial#qOpts#group#end
-#macro(lens)#lensNoQ#q#end
-        
-
-#macro(url_for_lens)#{url_for_home}#lens#end
-
-#macro(url_for_start $start)#url_for_home#lens&start=$start#end
-
-#macro(url_for_filters $p)#url_for_home?#q#boostPrice#spatial#qOpts#if($p && $p.size() > 0)&#fqs($p)#end#debug#end
-
-#macro(url_for_nested_facet_query $field)#url_for_home#lens&fq=$esc.url($field)#end
-
-## TODO: convert to use {!raw f=$field}$value (with escaping of course)
-#macro(url_for_facet_filter $field $value)#url_for_home#lens&fq=#if($value!=$null)$esc.url($field):%22$esc.url($value)%22#else-$esc.url($field):[*+TO+*]#end#end
-
-#macro(url_for_facet_date_filter $field $value)#url_for_home#lens&fq=$esc.url($field):$esc.url($value)#end
-
-#macro(url_for_facet_range_filter $field $value)#url_for_home#lens&fq=$esc.url($field):$esc.url($value)#end
-
-
-#macro(link_to_previous_page $text)
-  #if($page.current_page_number > 1)
-    #set($prev_start = $page.start - $page.results_per_page)
-    <a class="prev-page" href="#url_for_start($prev_start)">$text</a>
-  #end
-#end
-
-#macro(link_to_next_page $text)
-  #if($page.current_page_number < $page.page_count)
-    #set($next_start = $page.start + $page.results_per_page)
-    <a class="next-page" href="#url_for_start($next_start)">$text</a>
-  #end
-#end
-
-#macro(link_to_page $page_number $text)
-  #if($page_number == $page.current_page_number)
-    $text
-  #else
-    #if($page_number <= $page.page_count)
-      #set($page_start = $page_number * $page.results_per_page - $page.results_per_page)
-      <a class="page" href="#url_for_start($page_start)">$text</a>
-    #end
-  #end
-#end
-
-#macro(display_facet_query $field, $display, $fieldName)
-  #if($field && $field.size() > 0)
-  <span class="facet-field">$display</span>
-    <ul>
-    #foreach ($facet in $field)
-      #if ($facet.value > 0)
-        #set($facetURL = "#url_for_nested_facet_query($facet.key)")
-        #if ($facetURL != '')
-          <li><a href="$facetURL">$facet.key</a> ($facet.value)</li>
-        #end
-      #end
-    #end
-    </ul>
-  #end      
-#end
-
-
-#macro(display_facet_range $field, $display, $fieldName, $start, $end, $gap, $before, $after)
-  <span class="facet-field">$display</span>
-    <ul>
-    #if($before && $before != "")
-      #set($value = "[* TO " + "#format_value($start)" + "}")
-      #set($facetURL = "#url_for_facet_range_filter($fieldName, $value)")
-      <li><a href="$facetURL">Less than #format_value($start)</a> ($before)</li>
-    #end
-    #foreach ($facet in $field)
-      #set($rangeEnd = "#range_get_to_value($facet.key, $gap)")
-      #set($value = "[" + $facet.key + " TO " + $rangeEnd + "}")
-      #set($facetURL = "#url_for_facet_range_filter($fieldName, $value)")
-      #if ($facetURL != '')
-        <li><a href="$facetURL">$facet.key - #format_value($rangeEnd)</a> ($facet.value)</li>
-      #end
-    #end
-    #if($end && $end != "" && $after > 0)
-      #set($value = "[" + "#format_value($end)" + " TO *}")
-      #set($facetURL = "#url_for_facet_range_filter($fieldName, $value)")
-      <li><a href="$facetURL">More than #format_value($end)</a> ($after)</li>
-    #end
-    </ul>
-#end
-
-## $pivots is a list of facet_pivot
-#macro(display_facet_pivot $pivots, $display)
-  #if($pivots && $pivots.size() > 0)
-  <span class="facet-field">$display</span>
-    <ul>
-      #foreach ($pivot in $pivots)
-        #foreach ($entry in $pivot.value)
-          <a href="#url_for_facet_filter($entry.field, $entry.value)">$entry.field::#if($entry.value!=$null)$entry.value#else<em>missing</em>#end</a> ($entry.count)
-          <ul>
-            #foreach($nest in $entry.pivot)
-              <li>
-                #if($nest.value != $null)
-                  <a href="#url_for_facet_filter($entry.field, $entry.value)&fq=$esc.url($nest.field):%22$esc.url($nest.value)%22">$nest.field::$nest.value</a>
-                #else
-                  <a href="#url_for_facet_filter($entry.field, $entry.value)&fq=-$esc.url($nest.field):[*+TO+*]">$nest.field::<em>missing</em></a>
-                #end
-                ($nest.count)
-              </li>
-            #end
-          </ul>
-        #end
-      #end
-    </ul>
-  #end
-#end
-
-#macro(field $f)
-  #if($response.response.highlighting.get($docId).get($f).get(0))
-    #set($pad = "")
-    #foreach($v in $response.response.highlighting.get($docId).get($f))
-$pad$v##
-      #set($pad = " ... ")
-    #end
-  #else
-    #foreach($v in $doc.getFieldValues($f))
-$v##
-    #end
-  #end
-#end  
-
-#macro(utc_date $theDate)
-$date.format("yyyy-MM-dd'T'HH:mm:ss'Z'",$theDate,$date.getLocale(),$date.getTimeZone().getTimeZone("UTC"))##
-#end
-
-#macro(format_value $val)
-#if(${val.class.name} == "java.util.Date")
-#utc_date($val)##
-#else
-$val##
-#end
-#end
-
-#macro(range_get_to_value $inval, $gapval)
-#if(${gapval.class.name} == "java.lang.String")
-#if($gapval.startsWith("+"))
-$inval$gapval## Typically date gaps start with +
-#else
-$inval+$gapval## If the gap does not start with a "+", we add it, such as for currency value
-#end
-#elseif(${gapval.class.name} == "java.lang.Float" || ${inval.class.name} == "java.lang.Float")
-$math.toDouble($math.add($inval,$gapval))##
-#else
-$math.add($inval,$gapval)##
-#end
-#end
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/browse.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/browse.vm
deleted file mode 100644
index 10ecaeb..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/browse.vm
+++ /dev/null
@@ -1,33 +0,0 @@
-#**
- *  Main entry point into the /browse templates
- *#
-
-#set($searcher = $request.searcher)
-#set($params = $request.params)
-#set($clusters = $response.response.clusters)
-#set($mltResults = $response.response.get("moreLikeThis"))
-#set($annotate = $params.get("annotateBrowse"))
-#parse('query_form.vm')
-#parse('did_you_mean.vm')
-
-<div class="navigators">
-  #parse("facets.vm")
-</div>
-
-<div class="pagination">
-  #parse("pagination_top.vm")
-</div>
-
-## Show Error Message, if any
-<div class="error">
-  #parse("error.vm")
-</div>
-
-## Render Results, actual matching docs
-<div class="results">
-  #parse("results_list.vm")
-</div>
-
-<div class="pagination">
-  #parse("pagination_bottom.vm")
-</div>
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/cluster.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/cluster.vm
deleted file mode 100644
index 09885f3..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/cluster.vm
+++ /dev/null
@@ -1,19 +0,0 @@
-#**
- *  Check if Clustering is Enabled and then
- *  call cluster_results.vm
- *#
-
-<h2 #annTitle("Clusters generated by Carrot2 using the /clustering RequestHandler")>
-  Clusters
-</h2>
-
-## Div tag has placeholder text by default
-<div id="clusters">
-  Run Solr with option -Dsolr.clustering.enabled=true to see clustered search results.
-</div>
-
-## Replace the div content *if* Carrot^2 is available
-<script type="text/javascript">
-  $('#clusters').load("#url_for_solr/clustering#lens",
-    {'wt':'velocity', 'v.template':"cluster_results"});
-</script>
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/cluster_results.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/cluster_results.vm
deleted file mode 100644
index 204480d..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/cluster_results.vm
+++ /dev/null
@@ -1,31 +0,0 @@
-#**
- *  Actual rendering of Clusters
- *#
-
-## For each cluster
-#foreach ($clusters in $response.response.clusters)
-
-  #set($labels = $clusters.get('labels'))
-  #set($docs = $clusters.get('docs'))
-
-  ## This Cluster's Heading
-  <h3>
-    #foreach ($label in $labels)
-      ## Keep the following line together to prevent
-      ## a space appearing before each comma
-      $label#if( $foreach.hasNext ),#end
-    #end
-  </h3>
-
-  ## This Cluster's Documents
-  <ol>
-    ## For each doc in this cluster
-    #foreach ($cluDoc in $docs)
-      <li>
-        <a href="#url_for_home?q=id:$cluDoc">
-          $cluDoc</a>
-      </li>
-    #end
-  </ol>
-
-#end   ## end for each Cluster
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/debug.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/debug.vm
deleted file mode 100644
index 8f6d232..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/debug.vm
+++ /dev/null
@@ -1,28 +0,0 @@
-#**
- *  Show Debugging Information, if enabled
- *#
-
-#if( $params.getBool("debugQuery",false) )
-  <a href="#" onclick='jQuery(this).siblings("pre").toggle(); return false;'>
-    toggle explain</a>
-
-  <pre style="display:none">
-    $response.getExplainMap().get($doc.getFirstValue('id'))
-  </pre>
-
-  <a href="#" onclick='jQuery(this).siblings("pre2").toggle(); return false;'>
-    toggle all fields</a>
-
-  <pre2 style="display:none">
-    #foreach($fieldname in $doc.fieldNames)
-      <br>
-        <span class="field-name">$fieldname :</span>
-        <span>
-          #foreach($value in $doc.getFieldValues($fieldname))
-            $esc.html($value)
-          #end
-        </span>
-      </br>
-    #end
-  </pre2>
-#end
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/did_you_mean.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/did_you_mean.vm
deleted file mode 100644
index d0eb4f8..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/did_you_mean.vm
+++ /dev/null
@@ -1,11 +0,0 @@
-#**
- *  Hyperlinked spelling suggestions in results list
- *#
-
-#set($collations = $response.response.spellcheck.collations.getAll("collation"))
-#if($collations && $collations.size() > 0)
-  Did you mean
-  #foreach($collation in $collations)
-    <a href="#{url_for_home}#{lensNoQ}&q=$esc.url($collation.collationQuery)">$esc.html($collation.collationQuery)</a> ($collation.hits)?
-  #end
-#end
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/error.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/error.vm
deleted file mode 100644
index 80b5819..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/error.vm
+++ /dev/null
@@ -1,11 +0,0 @@
-#**
- *  Show Error Message, if any
- *#
-
-## Show Error Message, if any
-## Usually rendered inside div class=error
-
-#if( $response.response.error.code )
-  <h1>ERROR $response.response.error.code</h1>
-  $response.response.error.msg
-#end
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_fields.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_fields.vm
deleted file mode 100644
index 2926817..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_fields.vm
+++ /dev/null
@@ -1,24 +0,0 @@
-#**
- *  Display facets based on field values
- *  e.g.: fields specified by &facet.field=
- *#
-
-#if($response.facetFields)
-  <h2 #annTitle("Facets generated by adding &facet.field= to the request")>
-    Field Facets
-  </h2>
-  #foreach($field in $response.facetFields)
-    ## Hide facets without value
-    #if($field.values.size() > 0)
-      <span class="facet-field">$field.name</span>
-      <ul>
-        #foreach($facet in $field.values)
-          <li>
-            <a href="#url_for_facet_filter($field.name, $facet.name)" title="$esc.html($facet.name)">
-              #if($facet.name!=$null)$esc.html($display.truncate($facet.name,20))#else<em>missing</em>#end</a> ($facet.count)
-          </li>
-        #end
-      </ul>
-    #end  ## end if > 0
-  #end    ## end for each facet field
-#end      ## end if response has facet fields
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_pivot.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_pivot.vm
deleted file mode 100644
index 7aa50da..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_pivot.vm
+++ /dev/null
@@ -1,12 +0,0 @@
-#**
- *  Display Pivot-Based Facets
- *  e.g.: facets specified by &facet.pivot=
- *#
-
-<h2 #annTitle("Facets generated by adding &facet.pivot= to the request")>
-  Pivot Facets
-</h2>
-
-#set($pivot = $response.response.facet_counts.facet_pivot)
-
-#display_facet_pivot($pivot, "")
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_queries.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_queries.vm
deleted file mode 100644
index 37489c7..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_queries.vm
+++ /dev/null
@@ -1,12 +0,0 @@
-#**
- *  Display facets based on specific facet queries
- *  e.g.: facets specified by &facet.query=
- *#
-
-#set($field = $response.response.facet_counts.facet_queries)
-
-<h2 #annTitle("Facets generated by adding &facet.query= to the request")>
-  Query Facets
-</h2>
-
-#display_facet_query($field, "", "")
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_ranges.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_ranges.vm
deleted file mode 100644
index a769415..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facet_ranges.vm
+++ /dev/null
@@ -1,23 +0,0 @@
-#**
- *  Display facets based on ranges of values, AKA "Bukets"
- *  e.g.: ranges specified by &facet.range=
- *#
-
-<h2 #annTitle("Facets generated by adding &facet.range= to the request")>
-  Range Facets
-</h2>
-
-#foreach ($field in $response.response.facet_counts.facet_ranges)
-  ## Hide facets without value
-  #if($field.value.counts.size() > 0)
-  #set($name = $field.key)
-  #set($display = $name)
-  #set($f = $field.value.counts)
-  #set($start = $field.value.start)
-  #set($end = $field.value.end)
-  #set($gap = $field.value.gap)
-  #set($before = $field.value.before)
-  #set($after = $field.value.after)
-  #display_facet_range($f, $display, $name, $start, $end, $gap, $before, $after)
-  #end  ## end if has any values
-#end    ## end for each facet range
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facets.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facets.vm
deleted file mode 100644
index 55d40c9..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/facets.vm
+++ /dev/null
@@ -1,10 +0,0 @@
-#**
- *  Overall Facet display block
- *  Invokes the 4 facet and 1 cluster template
- *#
-
-#parse('facet_fields.vm')
-#parse('facet_queries.vm')
-#parse('facet_ranges.vm')
-#parse('facet_pivot.vm')
-#parse('cluster.vm')
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/footer.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/footer.vm
deleted file mode 100644
index e7430d3..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/footer.vm
+++ /dev/null
@@ -1,43 +0,0 @@
-#**
- *  Render the bottom section of the page visible to users
- *#
-
-<hr/>
-<div>
-  <span>Options:</span>
-
-  #if($request.params.get('debugQuery'))
-    <a href="#url_for_home?#q#if($request.params.getParams('fq').size() > 0)&#fqs($request.params.getParams('fq'))#end">
-      disable debug</a>
-  #else
-    <a href="#url_for_lens&debugQuery=true&fl=*,score">
-      enable debug</a>
-  #end
-  -
-  #if($annotate)
-    <a href="#url_for_home?#q#if($request.params.getParams('fq').size() > 0)&#fqs($request.params.getParams('fq'))#end#boostPrice">
-      disable annotation</a>
-  #else
-    <a href="#url_for_lens&annotateBrowse=true">
-      enable annotation</a>
-  #end
-  -
-  <a #annTitle("Click to switch to an XML response: &wt=xml") href="#url_for_lens&wt=xml#if($request.params.get('debugQuery'))&debugQuery=true#end">
-    XML results</a>
-
-</div>
-
-<div>
-  Generated by <a href="http://wiki.apache.org/solr/VelocityResponseWriter">VelocityResponseWriter</a>
-</div>
-<div>
-  <span>Documentation: </span>
-  <a href="http://lucene.apache.org/solr">Solr Home Page</a>, <a href="http://wiki.apache.org/solr">
-    Solr Wiki</a>
-  </div>
-<div>
-  Disclaimer:
-  The locations displayed in this demonstration are purely fictional.
-  It is more than likely that no store with the items listed actually
-  exists at that location!
-</div>
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/head.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/head.vm
deleted file mode 100644
index d158113..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/head.vm
+++ /dev/null
@@ -1,37 +0,0 @@
-#**
- *  Provide elements for the <head> section of the HTML document
- *#
-
-  ## An example of using an arbitrary request parameter
-  <title>#param('title')</title>
-  <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
-
-  <script type="text/javascript" src="#{url_root}/libs/jquery-3.4.1.min.js"></script>
-  <link rel="stylesheet" type="text/css" href="#{url_for_solr}/admin/file?file=/velocity/main.css&contentType=text/css"/>
-  <link rel="stylesheet" href="#{url_for_solr}/admin/file?file=/velocity/jquery.autocomplete.css&contentType=text/css" type="text/css" />
-  <link rel="icon" type="image/x-icon" href="#{url_root}/img/favicon.ico"/>
-  <link rel="shortcut icon" type="image/x-icon" href="#{url_root}/img/favicon.ico"/>
-  <script type="text/javascript" src="#{url_for_solr}/admin/file?file=/velocity/jquery.autocomplete.js&contentType=text/javascript"></script>
-
-
-    <script>
-    $(document).ready(function(){
-      $("\#q").autocomplete('#{url_for_solr}/terms', {  ## backslash escaped #q as that is a macro defined in VM_global_library.vm
-           extraParams:{
-             'terms.prefix': function() { return $("\#q").val();},
-             'terms.sort': 'count',
-             'terms.fl': 'name',
-             'wt': 'velocity',
-             'v.template': 'suggest'
-           }
-         }
-      ).keydown(function(e){
-        if (e.keyCode === 13){
-          $("#query-form").trigger('submit');
-        }
-      });
-
-      // http://localhost:8983/solr/collection1/terms?terms.fl=name&terms.prefix=i&terms.sort=count&wt=velocity&v.template=suggest
-    });
-
-    </script>
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/header.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/header.vm
deleted file mode 100644
index a408451..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/header.vm
+++ /dev/null
@@ -1,7 +0,0 @@
-#**
- *  Render the top section of the page visible to users
- *#
-
-<div id="head">
-  <span ><a href="#url_for_home#if($request.params.get('debugQuery'))?debugQuery=true#end"><img src="#{url_root}/img/solr.svg" id="logo"/></a></span>
-</div>
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit.vm
deleted file mode 100644
index a9c11f4..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit.vm
+++ /dev/null
@@ -1,25 +0,0 @@
-#**
- *  Called for each matching document but then
- *  calls one of product_doc, join_doc or richtext_doc
- *  depending on which fields the doc has
- *#
-
-#set($docId = $doc.getFieldValue('id'))
-
-<div class="result-document">
-
-  ## Has a "name" field ?
-  #if($doc.getFieldValue('name'))
-    #parse("product_doc.vm")
-
-  ## Has a "compName_s" field ?
-  #elseif($doc.getFieldValue('compName_s'))
-    #parse("join_doc.vm")
-
-  ## Fallback to richtext_doc
-  #else
-    #parse("richtext_doc.vm")
-
-  #end
-
-</div>
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit_grouped.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit_grouped.vm
deleted file mode 100644
index 5297f1e..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit_grouped.vm
+++ /dev/null
@@ -1,43 +0,0 @@
-#**
- *  Display grouped results
- *#
-
-<div class="result-document">
-
-  <div class="result-title">
-    <b>$grouping.key</b>
-  </div>
-
-  <div>
-    Total Matches in Group: $grouping.value.matches
-  </div>
-
-  <div>  ## list of groups
-
-    #foreach ($group in $grouping.value.groups)
-      <div class="group-value">
-        #if($group.groupValue)$group.groupValue#{else}<i>No group</i>#end
-        <span #annTitle("The count of the number of documents in this group")>
-          ($group.doclist.numFound)
-        </span>
-      </div>
-
-      <div class="group-doclist"
-        #annTitle("Contains the top scoring documents in the group")
-      >
-        #foreach ($doc in $group.doclist)
-          #set($docId = $doc.getFieldValue('id'))
-          #if($doc.getFieldValue('name'))
-            #parse("product_doc.vm")
-          #elseif($doc.getFieldValue('compName_s'))
-            #parse("join_doc.vm")
-          #else
-            #parse("richtext_doc.vm")
-          #end
-        #end
-      </div>
-
-    #end  ## end of foreach group in grouping.value.groups
-  </div>  ## div tag for entire list of groups
-
-</div>  ## end of div class=result-document
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit_plain.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit_plain.vm
deleted file mode 100644
index 193439b..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/hit_plain.vm
+++ /dev/null
@@ -1,25 +0,0 @@
-#**
- *  An extremely plain / debug version of hit.vm
- *#
-
-<table>
-  ## For each field
-  #foreach( $fieldName in $doc.fieldNames )
-    ## For each value
-    #foreach( $value in $doc.getFieldValues($fieldName) )
-      <tr>
-        ## Field Name
-        <th align="right" valign="top">
-          #if( $foreach.count == 1 )
-            $fieldName:
-          #end
-        </th>
-        ## Field Value(s)
-        <td align="left" valign="top">
-          $esc.html($value) <br/>
-        </td>
-      </tr>
-    #end     ## end for each value
-  #end       ## end for each field
-</table>
-<hr/>
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/join_doc.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/join_doc.vm
deleted file mode 100644
index 9956012..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/join_doc.vm
+++ /dev/null
@@ -1,20 +0,0 @@
-#**
- *  Display documents that are joined to other documents
- *#
-
-<div class="result-title">
-  <b>#field('compName_s')</b>
-</div>
-
-<div>
-  Id: #field('id')
-  (company-details document for
-    <a href="http://wiki.apache.org/solr/Join" target="_new">join</a>
-  )
-</div>
-
-<div>
-  Address: #field('address_s')
-</div>
-
-#parse('debug.vm')
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.css b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.css
deleted file mode 100644
index 97a62e0..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.css
+++ /dev/null
@@ -1,48 +0,0 @@
-.ac_results {
-  padding: 0px;
-  border: 1px solid black;
-  background-color: white;
-  overflow: hidden;
-  z-index: 99999;
-}
-
-.ac_results ul {
-  width: 100%;
-  list-style-position: outside;
-  list-style: none;
-  padding: 0;
-  margin: 0;
-}
-
-.ac_results li {
-  margin: 0px;
-  padding: 2px 5px;
-  cursor: default;
-  display: block;
-  /* 
-  if width will be 100% horizontal scrollbar will apear 
-  when scroll mode will be used
-  */
-  /*width: 100%;*/
-  font: menu;
-  font-size: 12px;
-  /* 
-  it is very important, if line-height not setted or setted 
-  in relative units scroll will be broken in firefox
-  */
-  line-height: 16px;
-  overflow: hidden;
-}
-
-.ac_loading {
-  background: white url('indicator.gif') right center no-repeat;
-}
-
-.ac_odd {
-  background-color: #eee;
-}
-
-.ac_over {
-  background-color: #0A246A;
-  color: white;
-}
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.js b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.js
deleted file mode 100644
index 442f5a0..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.js
+++ /dev/null
@@ -1,763 +0,0 @@
-/*
- * Autocomplete - jQuery plugin 1.1pre
- *
- * Copyright (c) 2007 Dylan Verheul, Dan G. Switzer, Anjesh Tuladhar, Jörn Zaefferer
- *
- * Dual licensed under the MIT and GPL licenses:
- *   http://www.opensource.org/licenses/mit-license.php
- *   http://www.gnu.org/licenses/gpl.html
- *
- * Revision: Id: jquery.autocomplete.js 5785 2008-07-12 10:37:33Z joern.zaefferer $
- *
- */
-
-;(function($) {
-  
-$.fn.extend({
-  autocomplete: function(urlOrData, options) {
-    var isUrl = typeof urlOrData == "string";
-    options = $.extend({}, $.Autocompleter.defaults, {
-      url: isUrl ? urlOrData : null,
-      data: isUrl ? null : urlOrData,
-      delay: isUrl ? $.Autocompleter.defaults.delay : 10,
-      max: options && !options.scroll ? 10 : 150
-    }, options);
-    
-    // if highlight is set to false, replace it with a do-nothing function
-    options.highlight = options.highlight || function(value) { return value; };
-    
-    // if the formatMatch option is not specified, then use formatItem for backwards compatibility
-    options.formatMatch = options.formatMatch || options.formatItem;
-    
-    return this.each(function() {
-      new $.Autocompleter(this, options);
-    });
-  },
-  result: function(handler) {
-    return this.bind("result", handler);
-  },
-  search: function(handler) {
-    return this.trigger("search", [handler]);
-  },
-  flushCache: function() {
-    return this.trigger("flushCache");
-  },
-  setOptions: function(options){
-    return this.trigger("setOptions", [options]);
-  },
-  unautocomplete: function() {
-    return this.trigger("unautocomplete");
-  }
-});
-
-$.Autocompleter = function(input, options) {
-
-  var KEY = {
-    UP: 38,
-    DOWN: 40,
-    DEL: 46,
-    TAB: 9,
-    RETURN: 13,
-    ESC: 27,
-    COMMA: 188,
-    PAGEUP: 33,
-    PAGEDOWN: 34,
-    BACKSPACE: 8
-  };
-
-  // Create $ object for input element
-  var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass);
-
-  var timeout;
-  var previousValue = "";
-  var cache = $.Autocompleter.Cache(options);
-  var hasFocus = 0;
-  var lastKeyPressCode;
-  var config = {
-    mouseDownOnSelect: false
-  };
-  var select = $.Autocompleter.Select(options, input, selectCurrent, config);
-  
-  var blockSubmit;
-  
-  // prevent form submit in opera when selecting with return key
-  $.browser.opera && $(input.form).bind("submit.autocomplete", function() {
-    if (blockSubmit) {
-      blockSubmit = false;
-      return false;
-    }
-  });
-  
-  // only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
-  $input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
-    // track last key pressed
-    lastKeyPressCode = event.keyCode;
-    switch(event.keyCode) {
-    
-      case KEY.UP:
-        event.preventDefault();
-        if ( select.visible() ) {
-          select.prev();
-        } else {
-          onChange(0, true);
-        }
-        break;
-        
-      case KEY.DOWN:
-        event.preventDefault();
-        if ( select.visible() ) {
-          select.next();
-        } else {
-          onChange(0, true);
-        }
-        break;
-        
-      case KEY.PAGEUP:
-        event.preventDefault();
-        if ( select.visible() ) {
-          select.pageUp();
-        } else {
-          onChange(0, true);
-        }
-        break;
-        
-      case KEY.PAGEDOWN:
-        event.preventDefault();
-        if ( select.visible() ) {
-          select.pageDown();
-        } else {
-          onChange(0, true);
-        }
-        break;
-      
-      // matches also semicolon
-      case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
-      case KEY.TAB:
-      case KEY.RETURN:
-        if( selectCurrent() ) {
-          // stop default to prevent a form submit, Opera needs special handling
-          event.preventDefault();
-          blockSubmit = true;
-          return false;
-        }
-        break;
-        
-      case KEY.ESC:
-        select.hide();
-        break;
-        
-      default:
-        clearTimeout(timeout);
-        timeout = setTimeout(onChange, options.delay);
-        break;
-    }
-  }).focus(function(){
-    // track whether the field has focus, we shouldn't process any
-    // results if the field no longer has focus
-    hasFocus++;
-  }).blur(function() {
-    hasFocus = 0;
-    if (!config.mouseDownOnSelect) {
-      hideResults();
-    }
-  }).click(function() {
-    // show select when clicking in a focused field
-    if ( hasFocus++ > 1 && !select.visible() ) {
-      onChange(0, true);
-    }
-  }).bind("search", function() {
-    // TODO why not just specifying both arguments?
-    var fn = (arguments.length > 1) ? arguments[1] : null;
-    function findValueCallback(q, data) {
-      var result;
-      if( data && data.length ) {
-        for (var i=0; i < data.length; i++) {
-          if( data[i].result.toLowerCase() == q.toLowerCase() ) {
-            result = data[i];
-            break;
-          }
-        }
-      }
-      if( typeof fn == "function" ) fn(result);
-      else $input.trigger("result", result && [result.data, result.value]);
-    }
-    $.each(trimWords($input.val()), function(i, value) {
-      request(value, findValueCallback, findValueCallback);
-    });
-  }).bind("flushCache", function() {
-    cache.flush();
-  }).bind("setOptions", function() {
-    $.extend(options, arguments[1]);
-    // if we've updated the data, repopulate
-    if ( "data" in arguments[1] )
-      cache.populate();
-  }).bind("unautocomplete", function() {
-    select.unbind();
-    $input.unbind();
-    $(input.form).unbind(".autocomplete");
-  });
-  
-  
-  function selectCurrent() {
-    var selected = select.selected();
-    if( !selected )
-      return false;
-    
-    var v = selected.result;
-    previousValue = v;
-    
-    if ( options.multiple ) {
-      var words = trimWords($input.val());
-      if ( words.length > 1 ) {
-        v = words.slice(0, words.length - 1).join( options.multipleSeparator ) + options.multipleSeparator + v;
-      }
-      v += options.multipleSeparator;
-    }
-    
-    $input.val(v);
-    hideResultsNow();
-    $input.trigger("result", [selected.data, selected.value]);
-    return true;
-  }
-  
-  function onChange(crap, skipPrevCheck) {
-    if( lastKeyPressCode == KEY.DEL ) {
-      select.hide();
-      return;
-    }
-    
-    var currentValue = $input.val();
-    
-    if ( !skipPrevCheck && currentValue == previousValue )
-      return;
-    
-    previousValue = currentValue;
-    
-    currentValue = lastWord(currentValue);
-    if ( currentValue.length >= options.minChars) {
-      $input.addClass(options.loadingClass);
-      if (!options.matchCase)
-        currentValue = currentValue.toLowerCase();
-      request(currentValue, receiveData, hideResultsNow);
-    } else {
-      stopLoading();
-      select.hide();
-    }
-  };
-  
-  function trimWords(value) {
-    if ( !value ) {
-      return [""];
-    }
-    var words = value.split( options.multipleSeparator );
-    var result = [];
-    $.each(words, function(i, value) {
-      if ( $.trim(value) )
-        result[i] = $.trim(value);
-    });
-    return result;
-  }
-  
-  function lastWord(value) {
-    if ( !options.multiple )
-      return value;
-    var words = trimWords(value);
-    return words[words.length - 1];
-  }
-  
-  // fills in the input box w/the first match (assumed to be the best match)
-  // q: the term entered
-  // sValue: the first matching result
-  function autoFill(q, sValue){
-    // autofill in the complete box w/the first match as long as the user hasn't entered in more data
-    // if the last user key pressed was backspace, don't autofill
-    if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE ) {
-      // fill in the value (keep the case the user has typed)
-      $input.val($input.val() + sValue.substring(lastWord(previousValue).length));
-      // select the portion of the value not typed by the user (so the next character will erase)
-      $.Autocompleter.Selection(input, previousValue.length, previousValue.length + sValue.length);
-    }
-  };
-
-  function hideResults() {
-    clearTimeout(timeout);
-    timeout = setTimeout(hideResultsNow, 200);
-  };
-
-  function hideResultsNow() {
-    var wasVisible = select.visible();
-    select.hide();
-    clearTimeout(timeout);
-    stopLoading();
-    if (options.mustMatch) {
-      // call search and run callback
-      $input.search(
-        function (result){
-          // if no value found, clear the input box
-          if( !result ) {
-            if (options.multiple) {
-              var words = trimWords($input.val()).slice(0, -1);
-              $input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "") );
-            }
-            else
-              $input.val( "" );
-          }
-        }
-      );
-    }
-    if (wasVisible)
-      // position cursor at end of input field
-      $.Autocompleter.Selection(input, input.value.length, input.value.length);
-  };
-
-  function receiveData(q, data) {
-    if ( data && data.length && hasFocus ) {
-      stopLoading();
-      select.display(data, q);
-      autoFill(q, data[0].value);
-      select.show();
-    } else {
-      hideResultsNow();
-    }
-  };
-
-  function request(term, success, failure) {
-    if (!options.matchCase)
-      term = term.toLowerCase();
-    var data = cache.load(term);
-    data = null; // Avoid buggy cache and go to Solr every time 
-    // recieve the cached data
-    if (data && data.length) {
-      success(term, data);
-    // if an AJAX url has been supplied, try loading the data now
-    } else if( (typeof options.url == "string") && (options.url.length > 0) ){
-      
-      var extraParams = {
-        timestamp: +new Date()
-      };
-      $.each(options.extraParams, function(key, param) {
-        extraParams[key] = typeof param == "function" ? param() : param;
-      });
-      
-      $.ajax({
-        // try to leverage ajaxQueue plugin to abort previous requests
-        mode: "abort",
-        // limit abortion to this input
-        port: "autocomplete" + input.name,
-        dataType: options.dataType,
-        url: options.url,
-        data: $.extend({
-          q: lastWord(term),
-          limit: options.max
-        }, extraParams),
-        success: function(data) {
-          var parsed = options.parse && options.parse(data) || parse(data);
-          cache.add(term, parsed);
-          success(term, parsed);
-        }
-      });
-    } else {
-      // if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
-      select.emptyList();
-      failure(term);
-    }
-  };
-  
-  function parse(data) {
-    var parsed = [];
-    var rows = data.split("\n");
-    for (var i=0; i < rows.length; i++) {
-      var row = $.trim(rows[i]);
-      if (row) {
-        row = row.split("|");
-        parsed[parsed.length] = {
-          data: row,
-          value: row[0],
-          result: options.formatResult && options.formatResult(row, row[0]) || row[0]
-        };
-      }
-    }
-    return parsed;
-  };
-
-  function stopLoading() {
-    $input.removeClass(options.loadingClass);
-  };
-
-};
-
-$.Autocompleter.defaults = {
-  inputClass: "ac_input",
-  resultsClass: "ac_results",
-  loadingClass: "ac_loading",
-  minChars: 1,
-  delay: 400,
-  matchCase: false,
-  matchSubset: true,
-  matchContains: false,
-  cacheLength: 10,
-  max: 100,
-  mustMatch: false,
-  extraParams: {},
-  selectFirst: false,
-  formatItem: function(row) { return row[0]; },
-  formatMatch: null,
-  autoFill: false,
-  width: 0,
-  multiple: false,
-  multipleSeparator: ", ",
-  highlight: function(value, term) {
-    return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
-  },
-    scroll: true,
-    scrollHeight: 180
-};
-
-$.Autocompleter.Cache = function(options) {
-
-  var data = {};
-  var length = 0;
-  
-  function matchSubset(s, sub) {
-    if (!options.matchCase) 
-      s = s.toLowerCase();
-    var i = s.indexOf(sub);
-    if (options.matchContains == "word"){
-      i = s.toLowerCase().search("\\b" + sub.toLowerCase());
-    }
-    if (i == -1) return false;
-    return i == 0 || options.matchContains;
-  };
-  
-  function add(q, value) {
-    if (length > options.cacheLength){
-      flush();
-    }
-    if (!data[q]){ 
-      length++;
-    }
-    data[q] = value;
-  }
-  
-  function populate(){
-    if( !options.data ) return false;
-    // track the matches
-    var stMatchSets = {},
-      nullData = 0;
-
-    // no url was specified, we need to adjust the cache length to make sure it fits the local data store
-    if( !options.url ) options.cacheLength = 1;
-    
-    // track all options for minChars = 0
-    stMatchSets[""] = [];
-    
-    // loop through the array and create a lookup structure
-    for ( var i = 0, ol = options.data.length; i < ol; i++ ) {
-      var rawValue = options.data[i];
-      // if rawValue is a string, make an array otherwise just reference the array
-      rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue;
-      
-      var value = options.formatMatch(rawValue, i+1, options.data.length);
-      if ( value === false )
-        continue;
-        
-      var firstChar = value.charAt(0).toLowerCase();
-      // if no lookup array for this character exists, look it up now
-      if( !stMatchSets[firstChar] ) 
-        stMatchSets[firstChar] = [];
-
-      // if the match is a string
-      var row = {
-        value: value,
-        data: rawValue,
-        result: options.formatResult && options.formatResult(rawValue) || value
-      };
-      
-      // push the current match into the set list
-      stMatchSets[firstChar].push(row);
-
-      // keep track of minChars zero items
-      if ( nullData++ < options.max ) {
-        stMatchSets[""].push(row);
-      }
-    };
-
-    // add the data items to the cache
-    $.each(stMatchSets, function(i, value) {
-      // increase the cache size
-      options.cacheLength++;
-      // add to the cache
-      add(i, value);
-    });
-  }
-  
-  // populate any existing data
-  setTimeout(populate, 25);
-  
-  function flush(){
-    data = {};
-    length = 0;
-  }
-  
-  return {
-    flush: flush,
-    add: add,
-    populate: populate,
-    load: function(q) {
-      if (!options.cacheLength || !length)
-        return null;
-      /* 
-       * if dealing w/local data and matchContains than we must make sure
-       * to loop through all the data collections looking for matches
-       */
-      if( !options.url && options.matchContains ){
-        // track all matches
-        var csub = [];
-        // loop through all the data grids for matches
-        for( var k in data ){
-          // don't search through the stMatchSets[""] (minChars: 0) cache
-          // this prevents duplicates
-          if( k.length > 0 ){
-            var c = data[k];
-            $.each(c, function(i, x) {
-              // if we've got a match, add it to the array
-              if (matchSubset(x.value, q)) {
-                csub.push(x);
-              }
-            });
-          }
-        }        
-        return csub;
-      } else 
-      // if the exact item exists, use it
-      if (data[q]){
-        return data[q];
-      } else
-      if (options.matchSubset) {
-        for (var i = q.length - 1; i >= options.minChars; i--) {
-          var c = data[q.substr(0, i)];
-          if (c) {
-            var csub = [];
-            $.each(c, function(i, x) {
-              if (matchSubset(x.value, q)) {
-                csub[csub.length] = x;
-              }
-            });
-            return csub;
-          }
-        }
-      }
-      return null;
-    }
-  };
-};
-
-$.Autocompleter.Select = function (options, input, select, config) {
-  var CLASSES = {
-    ACTIVE: "ac_over"
-  };
-  
-  var listItems,
-    active = -1,
-    data,
-    term = "",
-    needsInit = true,
-    element,
-    list;
-  
-  // Create results
-  function init() {
-    if (!needsInit)
-      return;
-    element = $("<div/>")
-    .hide()
-    .addClass(options.resultsClass)
-    .css("position", "absolute")
-    .appendTo(document.body);
-  
-    list = $("<ul/>").appendTo(element).mouseover( function(event) {
-      if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') {
-              active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event));
-          $(target(event)).addClass(CLASSES.ACTIVE);            
-          }
-    }).click(function(event) {
-      $(target(event)).addClass(CLASSES.ACTIVE);
-      select();
-      // TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus
-      input.focus();
-      return false;
-    }).mousedown(function() {
-      config.mouseDownOnSelect = true;
-    }).mouseup(function() {
-      config.mouseDownOnSelect = false;
-    });
-    
-    if( options.width > 0 )
-      element.css("width", options.width);
-      
-    needsInit = false;
-  } 
-  
-  function target(event) {
-    var element = event.target;
-    while(element && element.tagName != "LI")
-      element = element.parentNode;
-    // more fun with IE, sometimes event.target is empty, just ignore it then
-    if(!element)
-      return [];
-    return element;
-  }
-
-  function moveSelect(step) {
-    listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE);
-    movePosition(step);
-        var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE);
-        if(options.scroll) {
-            var offset = 0;
-            listItems.slice(0, active).each(function() {
-        offset += this.offsetHeight;
-      });
-            if((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) {
-                list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight());
-            } else if(offset < list.scrollTop()) {
-                list.scrollTop(offset);
-            }
-        }
-  };
-  
-  function movePosition(step) {
-    active += step;
-    if (active < 0) {
-      active = listItems.size() - 1;
-    } else if (active >= listItems.size()) {
-      active = 0;
-    }
-  }
-  
-  function limitNumberOfItems(available) {
-    return options.max && options.max < available
-      ? options.max
-      : available;
-  }
-  
-  function fillList() {
-    list.empty();
-    var max = limitNumberOfItems(data.length);
-    for (var i=0; i < max; i++) {
-      if (!data[i])
-        continue;
-      var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term);
-      if ( formatted === false )
-        continue;
-      var li = $("<li/>").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0];
-      $.data(li, "ac_data", data[i]);
-    }
-    listItems = list.find("li");
-    if ( options.selectFirst ) {
-      listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
-      active = 0;
-    }
-    // apply bgiframe if available
-    if ( $.fn.bgiframe )
-      list.bgiframe();
-  }
-  
-  return {
-    display: function(d, q) {
-      init();
-      data = d;
-      term = q;
-      fillList();
-    },
-    next: function() {
-      moveSelect(1);
-    },
-    prev: function() {
-      moveSelect(-1);
-    },
-    pageUp: function() {
-      if (active != 0 && active - 8 < 0) {
-        moveSelect( -active );
-      } else {
-        moveSelect(-8);
-      }
-    },
-    pageDown: function() {
-      if (active != listItems.size() - 1 && active + 8 > listItems.size()) {
-        moveSelect( listItems.size() - 1 - active );
-      } else {
-        moveSelect(8);
-      }
-    },
-    hide: function() {
-      element && element.hide();
-      listItems && listItems.removeClass(CLASSES.ACTIVE);
-      active = -1;
-    },
-    visible : function() {
-      return element && element.is(":visible");
-    },
-    current: function() {
-      return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]);
-    },
-    show: function() {
-      var offset = $(input).offset();
-      element.css({
-        width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).width(),
-        top: offset.top + input.offsetHeight,
-        left: offset.left
-      }).show();
-            if(options.scroll) {
-                list.scrollTop(0);
-                list.css({
-          maxHeight: options.scrollHeight,
-          overflow: 'auto'
-        });
-        
-                if($.browser.msie && typeof document.body.style.maxHeight === "undefined") {
-          var listHeight = 0;
-          listItems.each(function() {
-            listHeight += this.offsetHeight;
-          });
-          var scrollbarsVisible = listHeight > options.scrollHeight;
-                    list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight );
-          if (!scrollbarsVisible) {
-            // IE doesn't recalculate width when scrollbar disappears
-            listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) );
-          }
-                }
-                
-            }
-    },
-    selected: function() {
-      var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);
-      return selected && selected.length && $.data(selected[0], "ac_data");
-    },
-    emptyList: function (){
-      list && list.empty();
-    },
-    unbind: function() {
-      element && element.remove();
-    }
-  };
-};
-
-$.Autocompleter.Selection = function(field, start, end) {
-  if( field.createTextRange ){
-    var selRange = field.createTextRange();
-    selRange.collapse(true);
-    selRange.moveStart("character", start);
-    selRange.moveEnd("character", end);
-    selRange.select();
-  } else if( field.setSelectionRange ){
-    field.setSelectionRange(start, end);
-  } else {
-    if( field.selectionStart ){
-      field.selectionStart = start;
-      field.selectionEnd = end;
-    }
-  }
-  field.focus();
-};
-
-})(jQuery);
\ No newline at end of file
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/layout.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/layout.vm
deleted file mode 100644
index 50f4c1b..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/layout.vm
+++ /dev/null
@@ -1,24 +0,0 @@
-#**
- *  Overall HTML page layout
- *#
-
-<html>
-<head>
-  #parse("head.vm")
-</head>
-  <body>
-    <div id="admin"><a href="#url_root/#/#core_name">Solr Admin</a></div>
-    <div id="header">
-      #parse("header.vm")
-    </div>
-    <div id="tabs">
-      #parse("tabs.vm")
-    </div>
-    <div id="content">
-      $content
-    </div>
-    <div id="footer">
-      #parse("footer.vm")
-    </div>
-  </body>
-</html>
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/main.css b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/main.css
deleted file mode 100644
index 67278fb..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/main.css
+++ /dev/null
@@ -1,231 +0,0 @@
-#admin{
-  text-align: right;
-  vertical-align: top; 
-}
-
-#head{
-  width: 100%;
-}
-.array-field {
-  border: 2px solid #474747;
-  background: #FFE9D8;
-  padding: 5px;
-  margin: 5px;
-}
-
-.array-field-list li {
-  list-style: circle;
-  margin-left: 20px;
-}
-
-.parsed_query_header {
-  font-family: Helvetica, Arial, sans-serif;
-  font-size: 10pt;
-  font-weight: bold;
-}
-
-.parsed_query {
-  font-family: Courier, Courier New, monospaced;
-  font-size: 10pt;
-  font-weight: normal;
-}
-
-body {
-  font-family: Helvetica, Arial, sans-serif;
-  font-size: 10pt;
-}
-
-a {
-  color: #43a4b1;
-}
-
-.navigators {
-  float: left;
-  margin: 5px;
-  margin-top: 0px;
-  width: 185px;
-  padding: 5px;
-  top: -20px;
-  position: relative;  
-}
-
-.tabs-bar {
-  padding: 5px;
-  width: 100%;
-  border: 1px solid;
-  border-width: 0px 0px 1px 0px;
-}
-.tab {
-  font-weight: bold;
-  padding: 5px;
-  margin: 0px 5px;
-  border: 1px solid;
-  background-color: #dddddd;
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-}
-.tab:hover {
-  background: #FEC293;
-}
-.tab.selected {
-  background-color: #ffffff;
-  border-bottom: 1px solid #ffffff;
-}
-
-.navigators h2 {
-  background: #FEC293;
-  padding: 2px 5px;
-}
-
-.navigators ul {
-  list-style: none;
-  margin: 0;
-  margin-bottom: 5px;
-  margin-top: 5px;
-  padding-left: 10px;
-}
-
-.navigators ul li {
-  color: #999;
-  padding: 2px;
-}
-
-
-
-.facet-field {
-  font-weight: bold;
-}
-
-.highlight {
-  color: white;
-  background-color: gray;
-  border: 1px black solid;
-}
-
-.highlight-box {
-  margin-left: 15px;
-}
-
-.field-name {
-  font-weight: bold;
-}
-
-.highlighted-facet-field {
-  background: white;
-}
-
-.constraints {
-  margin-top: 10px;
-}
-
-#query-form{
-  width: 80%;
-}
-
-
-
-.query-box, .constraints {
-  padding: 5px;
-  margin: 5px;
-  font-weight: normal;
-  font-size: 24px;
-  letter-spacing: 0.08em;
-}
-
-.query-box #q {
-  margin-left: 8px;
-  width: 60%;
-  height: 50px;
-  border: 1px solid #999;
-  font-size: 1em;
-  padding: 0.4em;
-}
-
-.query-box {
-  
-}
-
-.query-boost {
-  
-  top: 10px;
-  left: 50px;
-  position: relative;
-  font-size: 0.8em;
-}
-
-.query-box .inputs{
-  left: 180px;
-  position: relative;
-  
-}
-
-#logo {
-  width: 115px;
-  margin: 0px 0px 20px 12px;
-  border-style: none;
-}
-
-.pagination {
-  padding-left: 33%;
-  background: #eee;
-  margin: 5px;
-  margin-left: 210px;
-  padding-top: 5px;
-  padding-bottom: 5px;
-}
-
-.result-document {
-  border: 1px solid #999;
-  padding: 5px;
-  margin: 5px;
-  margin-left: 210px;
-  margin-bottom: 15px;
-}
-
-.result-document div{
-  padding: 5px;
-}
-
-.result-title{
-  width:60%;
-}
-
-.result-body{
-  background: #ddd;
-}
-
-.mlt{
-  
-}
-
-.map{
-  float: right;
-  position: relative;
-  top: -25px;  
-}
-
-.result-document:nth-child(2n+1) {
-  background-color: #eee;
-}
-
-
-.selected-facet-field {
-  font-weight: bold;
-}
-
-li.show {
-  list-style: disc;
-}
-
-.group-value{
-  font-weight: bold;
-}
-
-.error {
-  color: white;
-  background-color: red;
-  left: 210px;
-  width:80%;
-  position: relative;
-
-}
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/mime_type_lists.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/mime_type_lists.vm
deleted file mode 100644
index 1468bbd..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/mime_type_lists.vm
+++ /dev/null
@@ -1,68 +0,0 @@
-#**
- *  Define some Mime-Types, short and long form
- *#
-
-## MimeType to extension map for detecting file type
-## and showing proper icon
-## List of types match the icons in /solr/img/filetypes
-
-## Short MimeType Names
-## Was called $supportedtypes
-#set($supportedMimeTypes = "7z;ai;aiff;asc;audio;bin;bz2;c;cfc;cfm;chm;class;conf;cpp;cs;css;csv;deb;divx;doc;dot;eml;enc;file;gif;gz;hlp;htm;html;image;iso;jar;java;jpeg;jpg;js;lua;m;mm;mov;mp3;mpg;odc;odf;odg;odi;odp;ods;odt;ogg;pdf;pgp;php;pl;png;ppt;ps;py;ram;rar;rb;rm;rpm;rtf;sig;sql;swf;sxc;sxd;sxi;sxw;tar;tex;tgz;txt;vcf;video;vsd;wav;wma;wmv;xls;xml;xpi;xvid;zip")
-
-## Long Form: map MimeType headers to our Short names
-## Was called $extMap
-#set( $mimeExtensionsMap = {
-   "application/x-7z-compressed": "7z",
-   "application/postscript": "ai",
-   "application/pgp-signature": "asc",
-   "application/octet-stream": "bin",
-   "application/x-bzip2": "bz2",
-   "text/x-c": "c",
-   "application/vnd.ms-htmlhelp": "chm",
-   "application/java-vm": "class",
-   "text/css": "css",
-   "text/csv": "csv",
-   "application/x-debian-package": "deb",
-   "application/msword": "doc",
-   "message/rfc822": "eml",
-   "image/gif": "gif",
-   "application/winhlp": "hlp",
-   "text/html": "html",
-   "application/java-archive": "jar",
-   "text/x-java-source": "java",
-   "image/jpeg": "jpeg",
-   "application/javascript": "js",
-   "application/vnd.oasis.opendocument.chart": "odc",
-   "application/vnd.oasis.opendocument.formula": "odf",
-   "application/vnd.oasis.opendocument.graphics": "odg",
-   "application/vnd.oasis.opendocument.image": "odi",
-   "application/vnd.oasis.opendocument.presentation": "odp",
-   "application/vnd.oasis.opendocument.spreadsheet": "ods",
-   "application/vnd.oasis.opendocument.text": "odt",
-   "application/pdf": "pdf",
-   "application/pgp-encrypted": "pgp",
-   "image/png": "png",
-   "application/vnd.ms-powerpoint": "ppt",
-   "audio/x-pn-realaudio": "ram",
-   "application/x-rar-compressed": "rar",
-   "application/vnd.rn-realmedia": "rm",
-   "application/rtf": "rtf",
-   "application/x-shockwave-flash": "swf",
-   "application/vnd.sun.xml.calc": "sxc",
-   "application/vnd.sun.xml.draw": "sxd",
-   "application/vnd.sun.xml.impress": "sxi",
-   "application/vnd.sun.xml.writer": "sxw",
-   "application/x-tar": "tar",
-   "application/x-tex": "tex",
-   "text/plain": "txt",
-   "text/x-vcard": "vcf",
-   "application/vnd.visio": "vsd",
-   "audio/x-wav": "wav",
-   "audio/x-ms-wma": "wma",
-   "video/x-ms-wmv": "wmv",
-   "application/vnd.ms-excel": "xls",
-   "application/xml": "xml",
-   "application/x-xpinstall": "xpi",
-   "application/zip": "zip"
-})
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/pagination_bottom.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/pagination_bottom.vm
deleted file mode 100644
index 71b8bdf..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/pagination_bottom.vm
+++ /dev/null
@@ -1,22 +0,0 @@
-#**
- *  Paging and Statistics at bottom of results
- *#
-
-## Usually rendered in pagination div tag
-
-#if($response.response.get('grouped'))
-  ## pass
-#else
-
-  #link_to_previous_page("previous")
-
-  <span class="results-found">$page.results_found</span>
-  results found.
-
-  Page <span class="page-num">$page.current_page_number</span>
-    of <span class="page-count">$page.page_count</span>
-
-  #link_to_next_page("next")
-
-#end
-<br/>
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/pagination_top.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/pagination_top.vm
deleted file mode 100644
index e0ac8ac..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/pagination_top.vm
+++ /dev/null
@@ -1,29 +0,0 @@
-#**
- *  Paging and Statistics at top of results
- *#
-
-## Usually rendered in pagination div tag
-
-## Grouped Results / Not Paginated
-#if($response.response.get('grouped'))
-
-  <span>
-    <span class="results-found">
-      $response.response.get('grouped').size() group(s)
-    </span>
-    found in ${response.responseHeader.QTime} ms
-  </span>
-
-## Regular Results / Use Paging Links if needed
-#else
-
-  <span>
-    <span class="results-found">$page.results_found</span>
-    results found in
-    ${response.responseHeader.QTime} ms
-  </span>
-
-  Page <span class="page-num">$page.current_page_number</span>
-    of <span class="page-count">$page.page_count</span>
-
-#end   ## end else non-grouped results, normal pagination
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/product_doc.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/product_doc.vm
deleted file mode 100644
index c878d8c..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/product_doc.vm
+++ /dev/null
@@ -1,32 +0,0 @@
-#**
- *  Render a hit representing a Product
- *  assumed to have a field called "name"
- *#
-
-<div class="result-title"><b>#field('name')</b><span class="mlt">   #if($params.getBool('mlt', false) == false)<a href="#lensNoQ&q=id:$docId&mlt=true">More Like This</a>#end</span></div>
-##do we have a physical store for this product
-#set($store = $doc.getFieldValue('store'))
-#if($store)<div class="map"><img src="http://maps.google.com/maps/api/staticmap?&zoom=12&size=150x80&maptype=roadmap&markers=$doc.getFieldValue('store')&sensor=false" /><div><small><a target="_map" href="http://maps.google.com/?q=$store&amp;source=embed">Larger Map</a></small></div></div>#end
-<div>Id: #field('id')</div>
-<div>Price: #field('price_c')</div>
-<div>Features: #field('features')</div>
-<div>In Stock: #field('inStock')</div>
-<div class="mlt">
-  #set($mlt = $mltResults.get($docId))
-  #set($mltOn = $params.getBool('mlt'))
-  #if($mltOn == true)<div class="field-name">Similar Items</div>#end
-  #if ($mltOn && $mlt && $mlt.size() > 0)
-  <ul>
-    #foreach($mltHit in $mlt)
-      #set($mltId = $mltHit.getFieldValue('id'))
-      <li><div><a href="#url_for_home?q=id:$mltId">$mltId</a></div><div><span class="field-name">Name:</span> $mltHit.getFieldValue('name')</div>
-        <div><span class="field-name">Price:</span> $!number.currency($mltHit.getFieldValue('price')) <span class="field-name">In Stock:</span> $mltHit.getFieldValue('inStock')</div>
-
-      </li>
-    #end
-  </ul>
-  #elseif($mltOn && $mlt.size() == 0)
-    <div>No Similar Items Found</div>
-  #end
-</div>
-#parse('debug.vm')
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query.vm
deleted file mode 100644
index ddbab3f..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query.vm
+++ /dev/null
@@ -1,42 +0,0 @@
-<div class="query-box">
-  <form id="query-form" action="#{url_for_home}" method="GET">
-    <div class="inputs">
-      <span #annTitle("Add the query using the &q= parameter")>Find: <input type="text" id="q" name="q" value="$!esc.html($params.get('q'))"/> <input type="submit" id="querySubmit"/> <input type="reset"/></span>
-      <div class="query-boost"><span #annTitle("Add the boost function &bf=price to the query")><input type="checkbox" name="bf" value="price" #if($request.params.get('bf') == 'price')checked="true"#end>Boost by Price</input></span>
-      #parse("querySpatial.vm")
-      #parse("queryGroup.vm")
-      </div>
-  </div>
-
-    #if($request.params.get('debugQuery'))
-      <input type="hidden" name="debugQuery" value="true"/>
-    #end
-    #if($annotate == true)
-      <input type="hidden" name="annotateBrowse" value="true"/>
-    #end
-    #foreach($fq in $request.params.getParams('fq'))
-      #if ($fq != "{!bbox}")
-        <input type="hidden" name="fq" id="allFQs" value="$esc.html($fq)"/>
-      #end
-    #end
-    <div class="constraints" #annTitle("Lists out the &fq filters.  Click to remove.")>
-      #foreach($fq in $params.getParams('fq'))
-        #set($previous_fq_count=$velocityCount - 1)
-        #if($fq != '')
-        &gt; <a style="{text-decoration: line-through;}" href="#url_for_filters($request.params.getParams('fq').subList(0,$previous_fq_count))">$fq</a>
-        #end
-      #end
-    </div>
-    <div class="parsed_query_header">
-     #if($request.params.get('debugQuery'))
-        <a href="#" onclick='jQuery(this).siblings("div").toggle(); return false;'>toggle parsed query</a>
-        <div class="parsed_query" style="display:none">$response.response.debug.parsedquery</div>
-      #end
-      #set($queryOpts = $request.params.get("queryOpts"))
-      #if($queryOpts && $queryOpts != "")
-        <input type="hidden" name="queryOpts" value="$queryOpts"/>
-      #end
-    </div>
-  </form>
-
-</div>
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_form.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_form.vm
deleted file mode 100644
index 70a0af2..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_form.vm
+++ /dev/null
@@ -1,64 +0,0 @@
-#**
- *  Renders the main query form
- *#
-
-<div class="query-box">
-  <form id="query-form" action="#{url_for_home}" method="GET">
-
-    <div class="inputs">
-      <span #annTitle("Add the query using the &q= parameter")>
-        Find:
-        <input type="text" id="q" name="q" value="$!esc.html($params.get('q'))"/>
-        <input type="submit" id="querySubmit"/>
-        <input type="reset"/>
-      </span>
-      <div class="query-boost">
-        <span #annTitle("Add the boost function &bf=price to the query")>
-          <input type="checkbox" name="bf" value="price"
-            #if($request.params.get('bf') == 'price')checked="true"#end
-          >
-            Boost by Price
-          </input>
-        </span>
-      #parse("query_spatial.vm")
-      #parse("query_group.vm")
-      </div>
-  </div>
-
-    #if($request.params.get('debugQuery'))
-      <input type="hidden" name="debugQuery" value="true"/>
-    #end
-    #if($annotate == true)
-      <input type="hidden" name="annotateBrowse" value="true"/>
-    #end
-    #foreach($fq in $request.params.getParams('fq'))
-      #if ($fq != "{!bbox}")
-        <input type="hidden" name="fq" id="allFQs" value="$esc.html($fq)"/>
-      #end
-    #end
-
-    <div class="constraints" #annTitle("Lists out the &fq filters.  Click to remove.")>
-      #foreach($fq in $params.getParams('fq'))
-        #set($previous_fq_count=$velocityCount - 1)
-        #if($fq != '')
-          &gt;
-          <a style="{text-decoration: line-through;}"
-            href="#url_for_filters($request.params.getParams('fq').subList(0,$previous_fq_count))"
-          >$fq</a>
-        #end
-      #end
-    </div>
-
-    <div class="parsed_query_header">
-      #if($request.params.get('debugQuery'))
-        <a href="#" onclick='jQuery(this).siblings("div").toggle(); return false;'>toggle parsed query</a>
-        <div class="parsed_query" style="display:none">$response.response.debug.parsedquery</div>
-      #end
-      #set($queryOpts = $request.params.get("queryOpts"))
-      #if($queryOpts && $queryOpts != "")
-        <input type="hidden" name="queryOpts" value="$queryOpts"/>
-      #end
-    </div>
-
-  </form>
-</div>
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_group.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_group.vm
deleted file mode 100644
index 42e5457..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_group.vm
+++ /dev/null
@@ -1,43 +0,0 @@
-#**
- *  Query settings for grouping by fields,
- *  e.g.: Manufacturer or Popularity
- *#
-
-#set($queryOpts = $params.get("queryOpts"))
-
-#if($queryOpts == "group")
-  <div>
-    #set($groupF = $request.params.get('group.field'))
-
-    <label #annTitle("Add the &group.field parameter. Multiselect is supported")>
-      Group By:
-      <select id="group" name="group.field" multiple="true">
-        ## TODO: Handle multiple selects correctly
-        ## TODO: fix empty / "No Group" selection
-
-        <option value=""
-          #if($groupF == '')selected="true"#end
-        >
-          No Group
-        </option>
-
-        <option value="manu_exact"
-          #if($groupF == 'manu_exact')selected="true"#end
-        >
-          Manufacturer
-        </option>
-
-        <option value="popularity"
-          #if($groupF == 'popularity')selected="true"#end
-        >
-          Popularity
-        </option>
-
-      </select>
-    </label>  
-
-    <input type="hidden" name="group" value="true"/>
-
-  </div>
-
-#end
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_spatial.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_spatial.vm
deleted file mode 100644
index 2bc2044..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/query_spatial.vm
+++ /dev/null
@@ -1,75 +0,0 @@
-#**
- *  Query logic for selecting location / Geospatial search
- *#
-
-#set($queryOpts = $params.get("queryOpts"))
-
-#if($queryOpts == "spatial")
-
-  <div>
-
-    #set($loc = $request.params.get('pt'))
-    ## Normalize first trip through to "none" because
-    ## an empty string generates an error message later on
-    #if( ! $loc )
-      #set( $loc = "none" )
-    #end
-
-    #set($dist = $request.params.get('d', "10"))
-
-    ## Cities for The Select List
-    #set( $cities = {
-      "none": "No Filter",
-      "45.17614,-93.87341": "Buffalo, MN",
-      "37.7752,-100.0232": "Dodge City, KS",
-      "35.0752,-97.032": "Oklahoma City, OK",
-      "37.7752,-122.4232": "San Francisco CA"
-    })
-
-    <label #annTitle("Add the &pt parameter")>
-      Location Filter:
-      <select id="pt" name="pt">
-
-        ## Generate <option> tag for each city
-        #foreach( $city_lon_lat in $cities.keySet() )
-          #set( $city_name = $cities.get($city_lon_lat) )
-          <option value="$city_lon_lat"
-            #if($loc == $city_lon_lat)selected="true"#end
-          >
-            $city_name
-          </option>
-        #end
-
-      </select>
-
-    </label>
-
-    <span #annTitle("Add the &d parameter")>
-      Distance (KM):
-      <input id="d" name="d" type="text" size="6"
-        value="#if($dist != '')${dist}#{else}10#end"  ## TODO: isn't the default of 10 above sufficient?  no if/else needed?
-      />
-    </span>
-
-    <input type="hidden" name="sfield" value="store"/>
-    <input type="hidden" id="spatialFQ" name="fq" value=""/>
-    <input type="hidden" name="queryOpts" value="spatial"/>        
-
-  </div>
-
-  <script type="text/javascript">
-    $('#query-form').submit(function() {
-      if ($("#pt").val() != "none") {
-        $("#spatialFQ").val("{!bbox}");
-      }
-      $fqs = $("#allFQs").val();
-      $fqs = $fqs.replace("{!bbox}", "");
-      if ($fqs == ''){
-        $("#allFQs").remove();
-      }
-      $("#allFQs").val($fqs);
-      return true;
-    });
-  </script>
-
-#end
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/results_list.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/results_list.vm
deleted file mode 100644
index f73532b..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/results_list.vm
+++ /dev/null
@@ -1,22 +0,0 @@
-#**
- *  Render the main Results List
- *#
-
-## Usually displayed inside <div class="results">
-
-#if($response.response.get('grouped'))
-
-  #foreach($grouping in $response.response.get('grouped'))
-    #parse("hit_grouped.vm")
-  #end
-
-#else
-
-  #foreach($doc in $response.results)
-    #parse("hit.vm")
-    ## Can get an extremely simple view of the doc
-    ## which might be nicer for debugging
-    ##parse("hit_plain.vm")
-  #end
-
-#end
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/richtext_doc.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/richtext_doc.vm
deleted file mode 100644
index 74f1c07..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/richtext_doc.vm
+++ /dev/null
@@ -1,153 +0,0 @@
-#**
- *  Render a complex document in the results list
- *#
-
-## Load Mime-Type List and Mapping
-#parse('mime_type_lists.vm')
-## Sets:
-## * supportedMimeTypes, AKA supportedtypes
-## * mimeExtensionsMap, AKA extMap
-
-## Title
-#if($doc.getFieldValue('title'))
-  #set($title = $esc.html($doc.getFirstValue('title')))
-#else
-  #set($title = "["+$doc.getFieldValue('id')+"]")
-#end
-
-## URL
-#if($doc.getFieldValue('url'))
-  #set($url = $doc.getFieldValue('url'))
-#elseif($doc.getFieldValue('resourcename'))
-  #set($url = "file:///$doc.getFieldValue('resourcename')")
-#else
-  #set($url = "$doc.getFieldValue('id')")
-#end
-
-## Sort out Mime-Type
-#set($ct = $doc.getFirstValue('content_type').split(";").get(0))
-#set($filename = $doc.getFieldValue('resourcename'))
-#set($filetype = false)
-#set($filetype = $mimeExtensionsMap.get($ct))
-
-## TODO: falling back to file extension is convenient,
-## except when you don't have an icon for that extension
-## example "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
-## document with a .docx extension.
-## It'd be nice to fall back to an "unknown" or the existing "file" type
-## We sort of do this below, but only if the filename has no extension
-## (anything after the last dot).
-
-#if(!$filetype)
-  #set($filetype = $filename.substring($filename.lastIndexOf(".")).substring(1))
-#end
-
-## #if(!$filetype)
-##   #set($filetype = "file")
-## #end
-## #if(!$supportedMimeTypes.contains($filetype))
-##   #set($filetype = "file")
-## #end
-
-## Row 1: Icon and Title and mlt link
-<div class="result-title">
-  ## Icon
-  ## Small file type icons from http://www.splitbrain.org/projects/file_icons (public domain)
-  <img src="#{url_root}/img/filetypes/${filetype}.png" align="center">
-
-  ## Title, hyperlinked
-  <a href="${url}" target="_blank">
-    <b>$title</b></a>
-
-  ## Link for MLT / More Like This / Find Similar
-  <span class="mlt">
-    #if($params.getBool('mlt', false) == false)
-      <a href="#lensNoQ&q=id:%22$docId%22&mlt=true">
-        More Like This</a>
-    #end
-  </span>
-
-</div>
-
-## Row 2?: ID / URL
-<div>
-  Id: #field('id')
-</div>
-
-## Resource Name
-<div>
-  #if($doc.getFieldValue('resourcename'))
-    Resource name: $filename 
-  #elseif($url)
-    URL: $url
-  #end
-  #if($ct)
-    ($ct)
-  #end
-</div>
-
-## Author
-#if($doc.getFieldValue('author'))
-  <div>
-    Author: #field('author')
-  </div>
-#end
-
-## Last_Modified Date
-#if($doc.getFieldValue('last_modified'))
-  <div>
-    last-modified:
-    #field('last_modified')
-  </div>
-#end
-
-## Main content of doc
-<div class="result-body">
-  #field('content')
-</div>
-
-## Display Similar Documents / MLT = More Like This
-<div class="mlt">
-  #set($mlt = $mltResults.get($docId))
-  #set($mltOn = $params.getBool('mlt'))
-  #if($mltOn == true)
-    <div class="field-name">
-      Similar Items
-    </div>
-  #end
-  ## If has MLT enabled An Entries to show
-  #if ($mltOn && $mlt && $mlt.size() > 0)
-    <ul>
-      #foreach($mltHit in $mlt)
-        #set($mltId = $mltHit.getFieldValue('id'))
-        <li>
-          <div>
-            <a href="#url_for_home?q=id:$mltId">
-              $mltId</a>
-          </div>
-          <div>
-            <span class="field-name">
-              Title:
-            </span>
-            $mltHit.getFieldValue('title')
-          </div>
-          <div>
-            <span class="field-name">
-              Author:
-            </span>
-            $mltHit.getFieldValue('author')
-            <span class="field-name">
-              Description:
-            </span>
-            $mltHit.getFieldValue('description')
-          </div>
-        </li>
-      #end    ## end for each mltHit in $mlt
-    </ul>
-  ## Else MLT Enabled but no mlt results for this query
-  #elseif($mltOn && $mlt.size() == 0)
-    <div>No Similar Items Found</div>
-  #end
-</div>  ## div class=mlt
-
-#parse('debug.vm')
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/suggest.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/suggest.vm
deleted file mode 100644
index dae6b83..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/suggest.vm
+++ /dev/null
@@ -1,8 +0,0 @@
-#**
- *  Provides cynamic spelling suggestions
- *  as you type in the search form
- *#
-
-#foreach($t in $response.response.terms.name)
-  $t.key
-#end
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/tabs.vm b/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/tabs.vm
deleted file mode 100644
index da19cbc..0000000
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/velocity/tabs.vm
+++ /dev/null
@@ -1,50 +0,0 @@
-#**
- *  Provides navigation/access to Advanced search options
- *  Usually displayed near the top of the page
- *#
-
-##TODO: Make some nice tabs here
-
-#set($queryOpts = $params.get("queryOpts"))
-
-<div class="tabs-bar" #annTitle("Click the link to demonstrate various Solr capabilities")>
-
-  <span>Type of Search:</span>
-
-  ##queryOpts=$queryOpts
-
-  ## return to Simple Search
-  ##set( $selected = ($queryOpts && $queryOpts != "") )
-  #set( $selected = ! $queryOpts )
-  <span class="tab #if($selected)selected#end">
-    #if($selected)
-      Simple
-    #else
-      <a href="#url_for_home/?#debug#annotate">
-        Simple</a>
-    #end
-  </span>
-
-  ## GEO-Spatial / Location Based
-  #set( $selected = ($queryOpts == "spatial") )
-  <span class="tab #if($selected)selected#end">
-    #if($selected)
-      Spatial
-    #else
-      <a href="#url_for_home?&queryOpts=spatial#debug#annotate">
-        Spatial</a>
-    #end
-  </span>
-
-  ## Group By Field
-  #set( $selected = ($queryOpts == "group") )
-  <span class="tab #if($selected)selected#end">
-    #if($selected)
-      Group By
-    #else
-      <a href="#url_for_home?#debug#annotate&queryOpts=group&group=true&group.field=manu_exact">
-        Group By</a>
-    #end
-  </span>
-
-</div>


[lucene-solr] 01/10: remove solr/contrib/velocity

Posted by eh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ehatcher pushed a commit to branch jira/solr-14792
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 1a72db7215ed606d78cbf3dbd67af356deec3330
Author: Erik Hatcher <er...@lucidworks.com>
AuthorDate: Thu Sep 3 14:16:21 2020 -0400

    remove solr/contrib/velocity
---
 solr/contrib/velocity/build.gradle                 |  33 --
 .../java/org/apache/solr/response/PageTool.java    |  92 ----
 .../solr/response/SolrVelocityResourceLoader.java  |  61 ---
 .../solr/response/VelocityResponseWriter.java      | 468 ---------------------
 .../src/java/org/apache/solr/response/package.html |  23 -
 solr/contrib/velocity/src/java/overview.html       |  21 -
 .../velocity/src/resources/VM_global_library.vm    |   4 -
 solr/contrib/velocity/src/resources/_macros.vm     |  70 ---
 solr/contrib/velocity/src/resources/macros.vm      |   3 -
 .../velocity/src/resources/velocity/_default.vm    |  14 -
 .../velocity/src/resources/velocity/browse.vm      |  73 ----
 .../velocity/src/resources/velocity/error.vm       |   4 -
 .../velocity/src/resources/velocity/facets.vm      |  23 -
 .../velocity/src/resources/velocity/footer.vm      |  19 -
 .../velocity/src/resources/velocity/head.vm        | 185 --------
 .../contrib/velocity/src/resources/velocity/hit.vm |  27 --
 .../velocity/src/resources/velocity/layout.vm      |  19 -
 .../src/resources/velocity/resources.properties    |   6 -
 .../src/resources/velocity/results_list.vm         |   3 -
 .../velocity/src/test-files/velocity/file.vm       |   1 -
 .../velocity/solr/collection1/conf/schema.xml      |  26 --
 .../velocity/solr/collection1/conf/solrconfig.xml  |  52 ---
 .../solr/collection1/conf/velocity-init.properties |  18 -
 .../collection1/conf/velocity/VM_global_library.vm |   3 -
 .../solr/collection1/conf/velocity/encoding.vm     |   1 -
 .../solr/collection1/conf/velocity/layout.vm       |   1 -
 .../solr/collection1/conf/velocity/locale.vm       |   1 -
 .../collection1/conf/velocity/locale_number.vm     |   1 -
 .../solr/collection1/conf/velocity/macros.vm       |   3 -
 .../solr/collection1/conf/velocity/numFound.vm     |   1 -
 .../collection1/conf/velocity/outside_the_box.vm   |   4 -
 .../solr/collection1/conf/velocity/resource_get.vm |   1 -
 .../conf/velocity/sandbox_intersection.vm          |   5 -
 .../conf/velocity/test_macro_legacy_support.vm     |   1 -
 .../conf/velocity/test_macro_overridden.vm         |   1 -
 .../conf/velocity/test_macro_visible.vm            |   1 -
 solr/contrib/velocity/src/test/custom_tool.vm      |  19 -
 solr/contrib/velocity/src/test/foreach.vm          |  14 -
 .../test/org/apache/solr/velocity/MockTool.java    |  34 --
 .../solr/velocity/VelocityResponseWriterTest.java  | 318 --------------
 .../src/test/velocity/resources.properties         |  18 -
 .../src/test/velocity/resources_en_UK.properties   |  18 -
 42 files changed, 1690 deletions(-)

diff --git a/solr/contrib/velocity/build.gradle b/solr/contrib/velocity/build.gradle
deleted file mode 100644
index b17b38b..0000000
--- a/solr/contrib/velocity/build.gradle
+++ /dev/null
@@ -1,33 +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.
- */
-
-
-apply plugin: 'java-library'
-
-description = 'Solr Velocity Response Writer'
-
-dependencies {
-  implementation project(':solr:core')
-
-  implementation('org.apache.velocity.tools:velocity-tools-view-jsp', {
-    exclude group: "commons-beanutils", module: "commons-beanutils"
-    exclude group: "org.apache.commons", module: "commons-digester3"
-    exclude group: "com.github.cliftonlabs", module: "json-simple"
-  })
-
-  testImplementation project(':solr:test-framework')
-}
diff --git a/solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java b/solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java
deleted file mode 100644
index 193c89b..0000000
--- a/solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java
+++ /dev/null
@@ -1,92 +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.response;
-
-import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.search.DocList;
-import org.apache.solr.search.DocSlice;
-import org.apache.solr.common.SolrDocumentList;
-import org.apache.solr.common.SolrException;
-
-/**
- * This class is used by the Velocity response writer to provide a consistent paging tool for use by templates.
- *
- * TODO: add more details
- */
-public class PageTool {
-  private long start;
-  private int results_per_page = 10;
-  private long results_found;
-  private int page_count;
-  private int current_page_number;
-
-  public PageTool(SolrQueryRequest request, SolrQueryResponse response) {
-    String rows = request.getParams().get("rows");
-
-    if (rows != null) {
-      results_per_page = Integer.parseInt(rows);
-    }
-    //TODO: Handle group by results
-    Object docs = response.getResponse();
-    if (docs != null) {
-      if (docs instanceof DocSlice) {
-        results_found = ((DocSlice) docs).matches();
-        start = ((DocSlice) docs).offset();
-      } else if(docs instanceof ResultContext) {
-        DocList dl = ((ResultContext) docs).getDocList();
-        results_found = dl.matches();
-        start = dl.offset();
-      } else if(docs instanceof SolrDocumentList) {
-        SolrDocumentList doc_list = (SolrDocumentList) docs;
-        results_found = doc_list.getNumFound();
-        start = doc_list.getStart();
-      } else {
-        throw new SolrException(SolrException.ErrorCode.UNKNOWN, "Unknown response type "+docs+". Expected one of DocSlice, ResultContext or SolrDocumentList");
-      }
-    }
-
-    page_count = (int) Math.ceil(results_found / (double) results_per_page);
-    current_page_number = (int) Math.ceil(start / (double) results_per_page) + (page_count > 0 ? 1 : 0);
-  }
-
-  public long getStart() {
-    return start;
-  }
-
-  public int getResults_per_page() {
-    return results_per_page;
-  }
-
-  public long getResults_found() {
-    return results_found;
-  }
-
-  public int getPage_count() {
-    return page_count;
-  }
-
-  public int getCurrent_page_number() {
-    return current_page_number;
-  }
-
-  @Override
-  public String toString() {
-    return "Found " + results_found +
-           " Page " + current_page_number + " of " + page_count +
-           " Starting at " + start + " per page " + results_per_page;
-  }
-}
diff --git a/solr/contrib/velocity/src/java/org/apache/solr/response/SolrVelocityResourceLoader.java b/solr/contrib/velocity/src/java/org/apache/solr/response/SolrVelocityResourceLoader.java
deleted file mode 100644
index bf778e1..0000000
--- a/solr/contrib/velocity/src/java/org/apache/solr/response/SolrVelocityResourceLoader.java
+++ /dev/null
@@ -1,61 +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.response;
-
-import java.io.IOException;
-import java.io.Reader;
-
-import org.apache.solr.core.SolrResourceLoader;
-import org.apache.velocity.exception.ResourceNotFoundException;
-import org.apache.velocity.runtime.resource.Resource;
-import org.apache.velocity.runtime.resource.loader.ResourceLoader;
-import org.apache.velocity.util.ExtProperties;
-
-/**
-  * Velocity resource loader wrapper around Solr resource loader
-  */
-public class SolrVelocityResourceLoader extends ResourceLoader {
-  private SolrResourceLoader loader;
-
-  public SolrVelocityResourceLoader(SolrResourceLoader loader) {
-    super();
-    this.loader = loader;
-  }
-
-  @Override
-  public void init(ExtProperties extendedProperties) {
-  }
-
-  @Override
-  public Reader getResourceReader(String source, String encoding) throws ResourceNotFoundException {
-    try {
-      return buildReader(loader.openResource("velocity/" + source), encoding);
-    } catch (IOException ioe) {
-      throw new ResourceNotFoundException(ioe);
-    }
-  }
-
-  @Override
-  public boolean isSourceModified(Resource resource) {
-    return false;
-  }
-
-  @Override
-  public long getLastModified(Resource resource) {
-    return 0;
-  }
-}
diff --git a/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java b/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java
deleted file mode 100644
index 58d8b2b..0000000
--- a/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java
+++ /dev/null
@@ -1,468 +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.response;
-
-import java.io.File;
-import java.io.FilePermission;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.lang.invoke.MethodHandles;
-import java.nio.charset.StandardCharsets;
-import java.security.AccessControlContext;
-import java.security.AccessController;
-import java.security.Permissions;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.security.ProtectionDomain;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-import java.util.PropertyPermission;
-import java.util.ResourceBundle;
-
-import org.apache.solr.client.solrj.SolrResponse;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.client.solrj.response.SolrResponseBase;
-import org.apache.solr.common.SolrException;
-import org.apache.solr.common.params.CommonParams;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.SolrCore;
-import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.util.plugin.SolrCoreAware;
-import org.apache.velocity.Template;
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.VelocityEngine;
-import org.apache.velocity.runtime.RuntimeConstants;
-import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
-import org.apache.velocity.tools.generic.CollectionTool;
-import org.apache.velocity.tools.generic.ComparisonDateTool;
-import org.apache.velocity.tools.generic.DisplayTool;
-import org.apache.velocity.tools.generic.EscapeTool;
-import org.apache.velocity.tools.generic.LocaleConfig;
-import org.apache.velocity.tools.generic.MathTool;
-import org.apache.velocity.tools.generic.NumberTool;
-import org.apache.velocity.tools.generic.ResourceTool;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.solr.common.params.CommonParams.SORT;
-
-public class VelocityResponseWriter implements QueryResponseWriter, SolrCoreAware {
-  // init param names, these are _only_ loaded at init time (no per-request control of these)
-  //   - multiple different named writers could be created with different init params
-  public static final String TEMPLATE_BASE_DIR = "template.base.dir";
-  public static final String PROPERTIES_FILE = "init.properties.file";
-
-  // System property names, these are _only_ loaded at node startup (no per-request control of these)
-  public static final String SOLR_RESOURCE_LOADER_ENABLED = "velocity.resourceloader.solr.enabled";
-
-  // request param names
-  public static final String TEMPLATE = "v.template";
-  public static final String LAYOUT = "v.layout";
-  public static final String LAYOUT_ENABLED = "v.layout.enabled";
-  public static final String CONTENT_TYPE = "v.contentType";
-  public static final String JSON = "v.json";
-  public static final String LOCALE = "v.locale";
-
-  public static final String TEMPLATE_EXTENSION = ".vm";
-  public static final String DEFAULT_CONTENT_TYPE = "text/html;charset=UTF-8";
-  public static final String JSON_CONTENT_TYPE = "application/json;charset=UTF-8";
-
-  private File fileResourceLoaderBaseDir;
-  private String initPropertiesFileName;  // used just to hold from init() to inform()
-
-  private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  private Properties velocityInitProps = new Properties();
-  private Map<String,String> customTools = new HashMap<String,String>();
-
-  @Override
-  public void init(@SuppressWarnings({"rawtypes"})NamedList args) {
-    log.warn("VelocityResponseWriter is deprecated. This may be removed in future Solr releases. Please SOLR-14065.");
-    fileResourceLoaderBaseDir = null;
-    String templateBaseDir = (String) args.get(TEMPLATE_BASE_DIR);
-
-    if (templateBaseDir != null && !templateBaseDir.isEmpty()) {
-      fileResourceLoaderBaseDir = new File(templateBaseDir).getAbsoluteFile();
-      if (!fileResourceLoaderBaseDir.exists()) { // "*not* exists" condition!
-        log.warn("{} specified does not exist: {}", TEMPLATE_BASE_DIR, fileResourceLoaderBaseDir);
-        fileResourceLoaderBaseDir = null;
-      } else {
-        if (!fileResourceLoaderBaseDir.isDirectory()) { // "*not* a directory" condition
-          log.warn("{} specified is not a directory: {}", TEMPLATE_BASE_DIR, fileResourceLoaderBaseDir);
-          fileResourceLoaderBaseDir = null;
-        }
-      }
-    }
-
-    initPropertiesFileName = (String) args.get(PROPERTIES_FILE);
-
-    @SuppressWarnings({"rawtypes"})
-    NamedList tools = (NamedList)args.get("tools");
-    if (tools != null) {
-      for(Object t : tools) {
-        @SuppressWarnings({"rawtypes"})
-        Map.Entry tool = (Map.Entry)t;
-        customTools.put(tool.getKey().toString(), tool.getValue().toString());
-      }
-    }
-  }
-
-  @Override
-  public void inform(SolrCore core) {
-    // need to leverage SolrResourceLoader, so load init.properties.file here instead of init()
-    if (initPropertiesFileName != null) {
-      try {
-        velocityInitProps.load(new InputStreamReader(core.getResourceLoader().openResource(initPropertiesFileName), StandardCharsets.UTF_8));
-      } catch (IOException e) {
-        log.warn("Error loading {} specified property file: {}", PROPERTIES_FILE, initPropertiesFileName, e);
-      }
-    }
-    }
-
-  @Override
-  public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
-    String contentType = request.getParams().get(CONTENT_TYPE);
-
-    // Use the v.contentType specified, or either of the default content types depending on the presence of v.json
-    return (contentType != null) ? contentType : ((request.getParams().get(JSON) == null) ? DEFAULT_CONTENT_TYPE : JSON_CONTENT_TYPE);
-  }
-
-  @Override
-  public void write(Writer writer, SolrQueryRequest request, SolrQueryResponse response) throws IOException {
-    // run doWrite() with the velocity sandbox
-    try {
-      AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
-        @Override
-        public Void run() throws IOException {
-          doWrite(writer, request, response);
-          return null;
-        }
-      }, VELOCITY_SANDBOX);
-    } catch (PrivilegedActionException e) {
-      throw (IOException) e.getException();
-    }
-  }
-
-  // sandbox for velocity code
-  // TODO: we could read in a policy file instead, in case someone needs to tweak it?
-  private static final AccessControlContext VELOCITY_SANDBOX;
-  static {
-    Permissions permissions = new Permissions();
-    // TODO: restrict the scope of this! we probably only need access to classpath
-    permissions.add(new FilePermission("<<ALL FILES>>", "read,readlink"));
-    // properties needed by SolrResourceLoader (called from velocity code)
-    permissions.add(new PropertyPermission("jetty.testMode", "read"));
-    permissions.add(new PropertyPermission("solr.allow.unsafe.resourceloading", "read"));
-    // properties needed by log4j (called from velocity code)
-    permissions.add(new PropertyPermission("java.version", "read"));
-    // needed by velocity duck-typing
-    permissions.add(new RuntimePermission("accessDeclaredMembers"));
-    permissions.setReadOnly();
-    VELOCITY_SANDBOX = new AccessControlContext(new ProtectionDomain[] { new ProtectionDomain(null, permissions) });
-  }
-
-  private void doWrite(Writer writer, SolrQueryRequest request, SolrQueryResponse response) throws IOException {
-    VelocityEngine engine = createEngine(request);  // TODO: have HTTP headers available for configuring engine
-
-    Template template = getTemplate(engine, request);
-
-    VelocityContext context = createContext(request, response);
-    context.put("engine", engine);  // for $engine.resourceExists(...)
-
-    String layoutTemplate = request.getParams().get(LAYOUT);
-    boolean layoutEnabled = request.getParams().getBool(LAYOUT_ENABLED, true) && layoutTemplate != null;
-
-    String jsonWrapper = request.getParams().get(JSON);
-    boolean wrapResponse = layoutEnabled || jsonWrapper != null;
-
-    // create output
-    if (!wrapResponse) {
-      // straight-forward template/context merge to output
-      template.merge(context, writer);
-    }
-    else {
-      // merge to a string buffer, then wrap with layout and finally as JSON
-      StringWriter stringWriter = new StringWriter();
-      template.merge(context, stringWriter);
-
-      if (layoutEnabled) {
-        context.put("content", stringWriter.toString());
-        stringWriter = new StringWriter();
-        try {
-          engine.getTemplate(layoutTemplate + TEMPLATE_EXTENSION).merge(context, stringWriter);
-        } catch (Exception e) {
-          throw new IOException(e.getMessage());
-        }
-      }
-
-      if (jsonWrapper != null) {
-        for (int i=0; i<jsonWrapper.length(); i++) {
-          if (!Character.isJavaIdentifierPart(jsonWrapper.charAt(i))) {
-            throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Invalid function name for " + JSON + ": '" + jsonWrapper + "'");
-          }
-        }
-        writer.write(jsonWrapper + "(");
-        writer.write(getJSONWrap(stringWriter.toString()));
-        writer.write(')');
-      } else {  // using a layout, but not JSON wrapping
-        writer.write(stringWriter.toString());
-      }
-    }
-  }
-
-  @SuppressWarnings({"unchecked"})
-  private VelocityContext createContext(SolrQueryRequest request, SolrQueryResponse response) {
-    VelocityContext context = new VelocityContext();
-
-    // Register useful Velocity "tools"
-    String locale = request.getParams().get(LOCALE);
-    @SuppressWarnings({"rawtypes"})
-    Map toolConfig = new HashMap();
-    toolConfig.put("locale", locale);
-
-
-    context.put("log", log);   // TODO: add test; TODO: should this be overridable with a custom "log" named tool?
-    context.put("esc", new EscapeTool());
-    context.put("date", new ComparisonDateTool());
-    context.put(SORT, new CollectionTool());
-
-    MathTool mathTool = new MathTool();
-    mathTool.configure(toolConfig);
-    context.put("math", mathTool);
-
-    NumberTool numberTool = new NumberTool();
-    numberTool.configure(toolConfig);
-    context.put("number", numberTool);
-
-
-    DisplayTool displayTool = new DisplayTool();
-    displayTool.configure(toolConfig);
-    context.put("display", displayTool);
-
-    ResourceTool resourceTool = new SolrVelocityResourceTool(request.getCore().getSolrConfig().getResourceLoader().getClassLoader());
-    resourceTool.configure(toolConfig);
-    context.put("resource", resourceTool);
-
-    if (request.getCore().getCoreDescriptor().isConfigSetTrusted()) {
-      // Load custom tools, only if in a trusted configset
-
-      /*
-          // Custom tools, specified in config as:
-              <queryResponseWriter name="velocityWithCustomTools" class="solr.VelocityResponseWriter">
-                <lst name="tools">
-                  <str name="mytool">com.example.solr.velocity.MyTool</str>
-                </lst>
-              </queryResponseWriter>
-      */
-      // Custom tools can override any of the built-in tools provided above, by registering one with the same name
-      if (request.getCore().getCoreDescriptor().isConfigSetTrusted()) {
-        for (Map.Entry<String, String> entry : customTools.entrySet()) {
-          String name = entry.getKey();
-          // TODO: at least log a warning when one of the *fixed* tools classes is same name with a custom one, currently silently ignored
-          Object customTool = SolrCore.createInstance(entry.getValue(), Object.class, "VrW custom tool: " + name, request.getCore(), request.getCore().getResourceLoader());
-          if (customTool instanceof LocaleConfig) {
-            ((LocaleConfig) customTool).configure(toolConfig);
-          }
-          context.put(name, customTool);
-        }
-      }
-
-      // custom tools _cannot_ override context objects added below, like $request and $response
-    }
-
-
-    // Turn the SolrQueryResponse into a SolrResponse.
-    // QueryResponse has lots of conveniences suitable for a view
-    // Problem is, which SolrResponse class to use?
-    // One patch to SOLR-620 solved this by passing in a class name as
-    // as a parameter and using reflection and Solr's class loader to
-    // create a new instance.  But for now the implementation simply
-    // uses QueryResponse, and if it chokes in a known way, fall back
-    // to bare bones SolrResponseBase.
-    // Can this writer know what the handler class is?  With echoHandler=true it can get its string name at least
-    SolrResponse rsp = new QueryResponse();
-    NamedList<Object> parsedResponse = BinaryResponseWriter.getParsedResponse(request, response);
-    try {
-      rsp.setResponse(parsedResponse);
-
-      // page only injected if QueryResponse works
-      context.put("page", new PageTool(request, response));  // page tool only makes sense for a SearchHandler request
-      context.put("debug",((QueryResponse)rsp).getDebugMap());
-    } catch (ClassCastException e) {
-      // known edge case where QueryResponse's extraction assumes "response" is a SolrDocumentList
-      // (AnalysisRequestHandler emits a "response")
-      rsp = new SolrResponseBase();
-      rsp.setResponse(parsedResponse);
-    }
-
-    context.put("request", request);
-    context.put("response", rsp);
-
-    return context;
-  }
-
-  private VelocityEngine createEngine(SolrQueryRequest request) {
-
-    boolean trustedMode = request.getCore().getCoreDescriptor().isConfigSetTrusted();
-
-
-    VelocityEngine engine = new VelocityEngine();
-
-    // load the built-in _macros.vm first, then load VM_global_library.vm for legacy (pre-5.0) support,
-    // and finally allow macros.vm to have the final say and override anything defined in the preceding files.
-    engine.setProperty(RuntimeConstants.VM_LIBRARY, "_macros.vm,VM_global_library.vm,macros.vm");
-
-    // Standard templates autoload, but not the macro one(s), by default, so let's just make life
-    // easier, and consistent, for macro development too.
-    engine.setProperty(RuntimeConstants.VM_LIBRARY_AUTORELOAD, "true");
-
-    /*
-      Set up Velocity resource loader(s)
-       terminology note: "resource loader" is overloaded here, there is Solr's resource loader facility for plugins,
-       and there are Velocity template resource loaders.  It's confusing, they overlap: there is a Velocity resource
-       loader that loads templates from Solr's resource loader (SolrVelocityResourceLoader).
-
-      The Velocity resource loader order is `[file,][solr],builtin` intentionally ordered in this manner.
-      The "file" resource loader, enabled when the configset is trusted and `template.base.dir` is specified as a
-      response writer init property.
-
-      The "solr" resource loader, enabled when the configset is trusted, and provides templates from a velocity/
-      sub-tree in either the classpath or under conf/.
-
-      By default, only "builtin" resource loader is enabled, providing tenplates from builtin Solr .jar files.
-
-      The basic browse templates are built into
-      this plugin, but can be individually overridden by placing a same-named template in the template.base.dir specified
-      directory, or within a trusted configset's velocity/ directory.
-     */
-    ArrayList<String> loaders = new ArrayList<String>();
-    if ((fileResourceLoaderBaseDir != null) && trustedMode) {
-      loaders.add("file");
-      engine.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, fileResourceLoaderBaseDir.getAbsolutePath());
-    }
-    if (trustedMode) {
-      // The solr resource loader serves templates under a velocity/ subtree from <lib>, conf/,
-      // or SolrCloud's configuration tree.  Or rather the other way around, other resource loaders are rooted
-      // from the top, whereas this is velocity/ sub-tree rooted.
-      loaders.add("solr");
-      engine.setProperty("solr.resource.loader.instance", new SolrVelocityResourceLoader(request.getCore().getSolrConfig().getResourceLoader()));
-    }
-
-    // Always have the built-in classpath loader.  This is needed when using VM_LIBRARY macros, as they are required
-    // to be present if specified, and we want to have a nice macros facility built-in for users to use easily, and to
-    // extend in custom ways.
-    loaders.add("builtin");
-    engine.setProperty("builtin.resource.loader.instance", new ClasspathResourceLoader());
-
-    engine.setProperty(RuntimeConstants.RESOURCE_LOADER, String.join(",", loaders));
-
-
-    engine.setProperty(RuntimeConstants.INPUT_ENCODING, "UTF-8");
-    engine.setProperty(RuntimeConstants.SPACE_GOBBLING, RuntimeConstants.SpaceGobbling.LINES.toString());
-
-    // install a class/package restricting uberspector
-    engine.setProperty(RuntimeConstants.UBERSPECT_CLASSNAME,"org.apache.velocity.util.introspection.SecureUberspector");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_PACKAGES,"java.lang.reflect");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Class");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.ClassLoader");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Compiler");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.InheritableThreadLocal");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Package");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Process");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Runtime");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.RuntimePermission");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.SecurityManager");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.System");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.Thread");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.ThreadGroup");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"java.lang.ThreadLocal");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"org.apache.solr.core.SolrResourceLoader");
-    engine.addProperty(RuntimeConstants.INTROSPECTOR_RESTRICT_CLASSES,"org.apache.solr.core.CoreContainer");
-
-    if (trustedMode) {
-      // Work around VELOCITY-908 with Velocity not handling locales properly
-      Object spaceGobblingInitProperty = velocityInitProps.get(RuntimeConstants.SPACE_GOBBLING);
-      if (spaceGobblingInitProperty != null) {
-        // If there is an init property, uppercase it before Velocity.
-        velocityInitProps.put(RuntimeConstants.SPACE_GOBBLING,
-            String.valueOf(spaceGobblingInitProperty).toUpperCase(Locale.ROOT));
-      }
-      // bring in any custom properties too
-      engine.setProperties(velocityInitProps);
-    }
-
-    engine.init();
-
-    return engine;
-  }
-
-  private Template getTemplate(VelocityEngine engine, SolrQueryRequest request) throws IOException {
-    Template template;
-
-    String templateName = request.getParams().get(TEMPLATE);
-
-    String qt = request.getParams().get(CommonParams.QT);
-    String path = (String) request.getContext().get("path");
-    if (templateName == null && path != null) {
-      templateName = path;
-    }  // TODO: path is never null, so qt won't get picked up  maybe special case for '/select' to use qt, otherwise use path?
-    if (templateName == null && qt != null) {
-      templateName = qt;
-    }
-    if (templateName == null) templateName = "index";
-    try {
-      template = engine.getTemplate(templateName + TEMPLATE_EXTENSION);
-    } catch (Exception e) {
-      throw new IOException(e.getMessage());
-    }
-
-    return template;
-  }
-
-  private String getJSONWrap(String xmlResult) {  // maybe noggit or Solr's JSON utilities can make this cleaner?
-    // escape the double quotes and backslashes
-    String replace1 = xmlResult.replaceAll("\\\\", "\\\\\\\\");
-    replace1 = replace1.replaceAll("\\n", "\\\\n");
-    replace1 = replace1.replaceAll("\\r", "\\\\r");
-    String replaced = replace1.replaceAll("\"", "\\\\\"");
-    // wrap it in a JSON object
-    return "{\"result\":\"" + replaced + "\"}";
-  }
-
-  // see: https://github.com/apache/velocity-tools/blob/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/ResourceTool.java
-  private static class SolrVelocityResourceTool extends ResourceTool {
-
-    private ClassLoader solrClassLoader;
-
-    public SolrVelocityResourceTool(ClassLoader cl) {
-      this.solrClassLoader = cl;
-    }
-
-    @Override
-    protected ResourceBundle getBundle(String baseName, Object loc) {
-      // resource bundles for this tool must be in velocity "package"
-      return ResourceBundle.getBundle(
-          "velocity." + baseName,
-          (loc == null) ? this.getLocale() : this.toLocale(loc),
-          solrClassLoader);
-    }
-  }
-}
diff --git a/solr/contrib/velocity/src/java/org/apache/solr/response/package.html b/solr/contrib/velocity/src/java/org/apache/solr/response/package.html
deleted file mode 100644
index b36606c..0000000
--- a/solr/contrib/velocity/src/java/org/apache/solr/response/package.html
+++ /dev/null
@@ -1,23 +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>
-<body>
-{@link org.apache.solr.response.VelocityResponseWriter} and related code.
-</body>
-</html>
diff --git a/solr/contrib/velocity/src/java/overview.html b/solr/contrib/velocity/src/java/overview.html
deleted file mode 100644
index 2168639..0000000
--- a/solr/contrib/velocity/src/java/overview.html
+++ /dev/null
@@ -1,21 +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.
--->
-<html>
-<body>
-Apache Solr Search Server: Velocity Response Writer contrib
-</body>
-</html>
diff --git a/solr/contrib/velocity/src/resources/VM_global_library.vm b/solr/contrib/velocity/src/resources/VM_global_library.vm
deleted file mode 100644
index fd3699b..0000000
--- a/solr/contrib/velocity/src/resources/VM_global_library.vm
+++ /dev/null
@@ -1,4 +0,0 @@
-## legacy support, the writer will load this as a macro library as it used to
-## but best not to have your own file called VM_global_library.vm; put them in macros.vm instead.
-## This file is needed for the "builtin" resource loader as Velocity requires all macro library files exist, but
-## we don't want users to have to have a macro library file in their template directories.
diff --git a/solr/contrib/velocity/src/resources/_macros.vm b/solr/contrib/velocity/src/resources/_macros.vm
deleted file mode 100644
index 406c4a9..0000000
--- a/solr/contrib/velocity/src/resources/_macros.vm
+++ /dev/null
@@ -1,70 +0,0 @@
-#macro(param $key)$request.params.get($key)#end
-
-#macro(url_root)/solr#end
-
-#macro(core_name)$request.core.name#end
-#macro(url_for_solr)#{url_root}#if($request.core.name != "")/$request.core.name#end#end
-#macro(url_for_home)#url_for_solr$request.context.path#end
-
-#macro(q)&q=$!{esc.url($request.params.get('q'))}#end
-
-#macro(fqs $p)#foreach($fq in $p)#if($velocityCount>1)&#{end}fq=$esc.url($fq)#end#end
-
-#macro(debug)#if($debug)&debug=true#end#end
-
-#macro(sort $p)#if($p)#foreach($s in $p)&sort=$esc.url($s)#end#end#end
-
-#macro(lensNoQ)?#if($request.params.getParams('fq') and $request.params.getParams('fq').size() > 0)&#fqs($request.params.getParams('fq'))#end#sort($request.params.getParams('sort'))#debug#end
-#macro(lens)#lensNoQ#q#end
-
-#macro(url_for_lens)#{url_for_home}#lens#end
-
-#macro(url_for_start $start)#url_for_home#lens&start=$start#end
-
-#macro(url_for_filters $p)#url_for_home?#q#if($p.size() > 0)&#fqs($p)#end#debug#end
-
-#macro(url_for_nested_facet_query $field)#url_for_home#lens&fq=$esc.url($field)#end
-
-#macro(url_for_facet_filter $field $value)#url_for_home#lens&fq=#if($value!=$null)$esc.url($field):%22$esc.url($value)%22#else-$esc.url($field):[*+TO+*]#end#end
-
-#macro(url_for_facet_date_filter $field $value)#url_for_home#lens&fq=$esc.url($field):$esc.url($value)#end
-
-#macro(url_for_facet_range_filter $field $value)#url_for_home#lens&fq=$esc.url($field):$esc.url($value)#end
-
-# TODO: make this parameterized fully, no context sensitivity
-#macro(field $f)
-  #if($response.response.highlighting.get($docId).get($f).get(0))
-    #set($pad = "")
-      #foreach($v in $response.response.highlighting.get($docId).get($f))
-        $pad$v##  #TODO: $esc.html() or maybe make that optional?
-        #set($pad = " ... ")
-      #end
-  #else
-    $esc.html($display.list($doc.getFieldValues($f), ", "))
-  #end
-#end
-
-#macro(link_to_previous_page)
-  #if($page.current_page_number > 1)
-    #set($prev_start = $page.start - $page.results_per_page)
-    <a class="prev-page" href="#url_for_start($prev_start)">$resource.previous</a>
-  #end
-#end
-
-#macro(link_to_next_page)
-  #if($page.current_page_number < $page.page_count)
-    #set($next_start = $page.start + $page.results_per_page)
-    <a class="next-page" href="#url_for_start($next_start)">$resource.next</a>
-  #end
-#end
-
-#macro(link_to_page $page_number $text)
-  #if($page_number == $page.current_page_number)
-    $text
-  #else
-    #if($page_number <= $page.page_count)
-      #set($page_start = $page_number * $page.results_per_page - $page.results_per_page)
-      <a class="page" href="#url_for_start($page_start)">$text</a>
-    #end
-  #end
-#end
diff --git a/solr/contrib/velocity/src/resources/macros.vm b/solr/contrib/velocity/src/resources/macros.vm
deleted file mode 100644
index 0018c5f..0000000
--- a/solr/contrib/velocity/src/resources/macros.vm
+++ /dev/null
@@ -1,3 +0,0 @@
-## placeholder for users to specify their own macros
-## This file is needed for the "builtin" resource loader as Velocity requires all macro library files exist.
-## This is the file we want users to override to add their own macros.
diff --git a/solr/contrib/velocity/src/resources/velocity/_default.vm b/solr/contrib/velocity/src/resources/velocity/_default.vm
deleted file mode 100644
index 71cac96..0000000
--- a/solr/contrib/velocity/src/resources/velocity/_default.vm
+++ /dev/null
@@ -1,14 +0,0 @@
-<h1>Request</h1>
-<ul>
-  <li>context.path = $request.context.path</li>
-  <li>params.qt = $!request.params.qt</li>
-</ul>
-
-<pre>
-  $esc.html($request)
-</pre>
-
-<h1>Response</h1>
-<pre>
-  $esc.html($response)
-</pre>
diff --git a/solr/contrib/velocity/src/resources/velocity/browse.vm b/solr/contrib/velocity/src/resources/velocity/browse.vm
deleted file mode 100644
index b651295..0000000
--- a/solr/contrib/velocity/src/resources/velocity/browse.vm
+++ /dev/null
@@ -1,73 +0,0 @@
-#*
-  - Make search box bigger
-  - Add in pivot and other facets?
-  - Work on template default selection logic
-*#
-
-## Show Error Message, if any
-<div class="error">
-  #parse("error.vm")
-</div>
-
-<div class="query-box">
-  <form id="query-form" action="#{url_for_home}" method="GET">
-    $resource.find:
-    <input type="text" id="q" name="q" value="$!esc.html($request.params.get('q'))"/>
-    <input type="submit"/>
-
-    #if($debug) ## TODO: this would automatically happen when arbitrary parameters are kept on URLs
-      <input type="hidden" name="debug" value="true"/>
-    #end
-    #foreach($fq in $request.params.getParams('fq'))
-      <input type="hidden" name="fq" id="allFQs" value="$esc.html($fq)"/>
-    #end
-
-    <div class="constraints">
-      #foreach($fq in $request.params.getParams('fq'))
-        #set($previous_fq_count=$velocityCount - 1)
-        #if($fq != '')
-          &gt;
-          <a href="#url_for_filters($request.params.getParams('fq').subList(0,$previous_fq_count))">$fq</a>
-        #end
-      #end
-    </div>
-
-    <div class="parsed_query_header">
-      #if($debug)
-        <a href="#" onclick='jQuery(this).siblings("div").toggle(); return false;'>toggle parsed query</a>
-        <div class="parsed_query" style="display:none">$response.response.debug.parsedquery</div>
-      #end
-    </div>
-
-  </form>
-</div>
-
-<div class="facets">
-  #parse("facets.vm")
-</div>
-
-<div class="pagination">
-  <span>
-    <span class="results-found">$page.results_found</span>
-    results found in
-    ${response.responseHeader.QTime}ms
-  </span>
-
-  $resource.page_of.insert($page.current_page_number,$page.page_count)
-</div>
-
-## Render Results, actual matching docs
-<div class="results">
-  #parse("results_list.vm")
-</div>
-
-<div class="pagination">
-  #link_to_previous_page
-
-  <span class="results-found">$page.results_found</span>
-  results found.
-
-  $resource.page_of.insert($page.current_page_number,$page.page_count)
-
-  #link_to_next_page
-</div>
diff --git a/solr/contrib/velocity/src/resources/velocity/error.vm b/solr/contrib/velocity/src/resources/velocity/error.vm
deleted file mode 100644
index 1c4d1dc..0000000
--- a/solr/contrib/velocity/src/resources/velocity/error.vm
+++ /dev/null
@@ -1,4 +0,0 @@
-#if( $response.response.error.code )
-  <h1>ERROR $response.response.error.code</h1>
-  $response.response.error.msg
-#end
diff --git a/solr/contrib/velocity/src/resources/velocity/facets.vm b/solr/contrib/velocity/src/resources/velocity/facets.vm
deleted file mode 100644
index e832704..0000000
--- a/solr/contrib/velocity/src/resources/velocity/facets.vm
+++ /dev/null
@@ -1,23 +0,0 @@
-#**
- *  Display facets based on field values
- *  e.g.: fields specified by &facet.field=
- *#
-
-#if($response.facetFields.size() > 0)
-  <h2>Field Facets</h2>
-
-  #foreach($field in $response.facetFields)
-    ## Hide facets without value
-    #if($field.values.size() > 0)
-      <span class="facet-field">$field.name</span>
-      <ul>
-        #foreach($facet in $field.values)
-          <li>
-            <a href="#url_for_facet_filter($field.name, $facet.name)" title="$esc.html($facet.name)">
-              #if($facet.name!=$null)$esc.html($display.truncate($facet.name,20))#else<em>missing</em>#end</a> ($facet.count)
-          </li>
-        #end
-      </ul>
-    #end  ## end if > 0
-  #end    ## end for each facet field
-#end      ## end if response has facet fields
diff --git a/solr/contrib/velocity/src/resources/velocity/footer.vm b/solr/contrib/velocity/src/resources/velocity/footer.vm
deleted file mode 100644
index be9c687..0000000
--- a/solr/contrib/velocity/src/resources/velocity/footer.vm
+++ /dev/null
@@ -1,19 +0,0 @@
-<hr/>
-<div>
-  <span>Options:</span>
-
-  #if($debug)
-    <a href="#url_for_home?#q#if($request.params.getParams('fq').size() > 0)&#fqs($request.params.getParams('fq'))#end">
-      disable debug</a>
-  #else
-    <a href="#url_for_lens&debug=true&fl=*,score">enable debug</a>
-  #end
-  -
-  <a href="#url_for_lens&wt=xml#if($debug)&debug=true#end">XML results</a> ## TODO: Add links for other formats, maybe dynamically?
-
-</div>
-
-<div>
-  <a href="http://lucene.apache.org/solr">Solr Home Page</a>
-</div>
-
diff --git a/solr/contrib/velocity/src/resources/velocity/head.vm b/solr/contrib/velocity/src/resources/velocity/head.vm
deleted file mode 100644
index dbcfb31..0000000
--- a/solr/contrib/velocity/src/resources/velocity/head.vm
+++ /dev/null
@@ -1,185 +0,0 @@
-#**
- *  Provide elements for the <head> section of the HTML document
- *#
-
-  <title>Solr browse: #core_name</title>
-
-  <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
-
-  <link rel="icon" type="image/x-icon" href="#{url_root}/img/favicon.ico"/>
-  <link rel="shortcut icon" type="image/x-icon" href="#{url_root}/img/favicon.ico"/>
-
-  <script type="text/javascript" src="#{url_root}/libs/jquery-3.4.1.min.js"></script>
-
-  <style>
-    #admin{
-      text-align: right;
-      vertical-align: top;
-    }
-
-    #head{
-      width: 100%;
-    }
-
-    .parsed_query_header {
-      font-family: Helvetica, Arial, sans-serif;
-      font-size: 10pt;
-      font-weight: bold;
-    }
-
-    .parsed_query {
-      font-family: Courier, Courier New, monospaced;
-      font-size: 10pt;
-      font-weight: normal;
-    }
-
-    body {
-      font-family: Helvetica, Arial, sans-serif;
-      font-size: 10pt;
-    }
-
-    a {
-      color: #305CB3;
-    }
-
-    em {
-      color: #FF833D;
-    }
-
-    .facets {
-      float: left;
-      margin: 5px;
-      margin-top: 0px;
-      width: 185px;
-      padding: 5px;
-      top: -20px;
-      position: relative;
-    }
-
-    .facets h2 {
-      background: #D9411E;
-      padding: 2px 5px;
-    }
-
-    .facets ul {
-      list-style: none;
-      margin: 0;
-      margin-bottom: 5px;
-      margin-top: 5px;
-      padding-left: 10px;
-    }
-
-    .facets ul li {
-      color: #999;
-      padding: 2px;
-    }
-
-    .facet-field {
-      font-weight: bold;
-    }
-
-    .field-name {
-      font-weight: bold;
-      // align="right" valign="top"
-    }
-
-    .highlighted-facet-field {
-      background: white;
-    }
-
-    .constraints {
-      margin-top: 10px;
-    }
-
-    #query-form{
-      width: 80%;
-    }
-
-    .query-box, .constraints {
-      padding: 5px;
-      margin: 5px;
-      font-weight: normal;
-      font-size: 24px;
-      letter-spacing: 0.08em;
-    }
-
-    .query-box #q {
-      margin-left: 8px;
-      width: 60%;
-      height: 50px;
-      border: 1px solid #999;
-      font-size: 1em;
-      padding: 0.4em;
-    }
-
-    .query-box {
-
-    }
-
-    .query-box .inputs{
-      left: 180px;
-      position: relative;
-
-    }
-
-    #logo {
-      width: 115px;
-      margin: 0px 0px 20px 12px;
-      border-style: none;
-    }
-
-    .pagination {
-      padding-left: 33%;
-      background: #eee;
-      margin: 5px;
-      margin-left: 210px;
-      padding-top: 5px;
-      padding-bottom: 5px;
-    }
-
-    .result-document {
-      border: 1px solid #999;
-      padding: 5px;
-      margin: 5px;
-      margin-left: 210px;
-      margin-bottom: 15px;
-    }
-
-    .result-document div{
-      padding: 5px;
-    }
-
-    .result-title{
-      width:60%;
-    }
-
-    .result-body{
-      background: #ddd;
-    }
-
-    .mlt{
-
-    }
-
-    .result-document:nth-child(2n+1) {
-      background-color: #eee;
-    }
-
-
-    .selected-facet-field {
-      font-weight: bold;
-    }
-
-    li.show {
-      list-style: disc;
-    }
-
-    .error {
-      color: white;
-      background-color: red;
-      left: 210px;
-      width:80%;
-      position: relative;
-
-    }
-  </style>
diff --git a/solr/contrib/velocity/src/resources/velocity/hit.vm b/solr/contrib/velocity/src/resources/velocity/hit.vm
deleted file mode 100644
index ec4dfd8..0000000
--- a/solr/contrib/velocity/src/resources/velocity/hit.vm
+++ /dev/null
@@ -1,27 +0,0 @@
-#set($docId = $doc.getFirstValue($request.schema.uniqueKeyField.name))
-
-
-<div class="result-document">
-
-  <table>
-    #foreach( $fieldName in $doc.fieldNames )
-        <tr>
-          <th align="right" valign="top" style="field-name">
-            $esc.html($fieldName):
-          </th>
-
-          <td align="left" valign="top">
-            #field($fieldName)
-          </td>
-        </tr>
-    #end
-  </table>
-
-  #if($debug)
-    <a href="#" onclick='jQuery(this).siblings("pre").toggle(); return false;'>toggle explain</a>
-
-    <pre style="display:none">
-      $response.getExplainMap().get($docId)
-    </pre>
-  #end
-</div>
diff --git a/solr/contrib/velocity/src/resources/velocity/layout.vm b/solr/contrib/velocity/src/resources/velocity/layout.vm
deleted file mode 100644
index aa68ffc..0000000
--- a/solr/contrib/velocity/src/resources/velocity/layout.vm
+++ /dev/null
@@ -1,19 +0,0 @@
-<html>
-<head>
-  #parse("head.vm")
-</head>
-  <body>
-    <div id="admin"><a href="#url_root/#/#core_name">Solr Admin</a></div>
-    <div id="head">
-      <a href="#url_for_home#if($debug)?debug=true#end"><img src="#{url_root}/img/solr.svg" id="logo"/></a>
-    </div>
-
-    <div id="content">
-      $content
-    </div>
-
-    <div id="footer">
-      #parse("footer.vm")
-    </div>
-  </body>
-</html>
diff --git a/solr/contrib/velocity/src/resources/velocity/resources.properties b/solr/contrib/velocity/src/resources/velocity/resources.properties
deleted file mode 100644
index dff221c..0000000
--- a/solr/contrib/velocity/src/resources/velocity/resources.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-find=Find
-page_of=Page <span class="page-num">{0}</span> of <span class="page-count">{1}</span>
-previous=previous
-next=next
-
-
diff --git a/solr/contrib/velocity/src/resources/velocity/results_list.vm b/solr/contrib/velocity/src/resources/velocity/results_list.vm
deleted file mode 100644
index 91ae6ea..0000000
--- a/solr/contrib/velocity/src/resources/velocity/results_list.vm
+++ /dev/null
@@ -1,3 +0,0 @@
-#foreach($doc in $response.results)
-  #parse("hit.vm")
-#end
diff --git a/solr/contrib/velocity/src/test-files/velocity/file.vm b/solr/contrib/velocity/src/test-files/velocity/file.vm
deleted file mode 100644
index 9a2c773..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/file.vm
+++ /dev/null
@@ -1 +0,0 @@
-testing
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/schema.xml b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/schema.xml
deleted file mode 100644
index 5b12cda..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/schema.xml
+++ /dev/null
@@ -1,26 +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="minimal-velocity" version="1.6">
-  <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
-
-  <field name="id" type="string" indexed="true" stored="true" required="true"/>
-  <dynamicField name="*_s" type="string" indexed="true" stored="true"/>
-
-  <uniqueKey>id</uniqueKey>
-</schema>
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/solrconfig.xml b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/solrconfig.xml
deleted file mode 100644
index 35ce52b..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/solrconfig.xml
+++ /dev/null
@@ -1,52 +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.
--->
-
-<config>
-  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
-
-  <!--<lib dir="../../contrib/velocity/lib" />-->
-  <!--<lib dir="../../dist/" regex="solr-velocity-\d.*\.jar" />-->
-
-  <schemaFactory class="ClassicIndexSchemaFactory"/>
-
-  <requestHandler name="search" class="solr.SearchHandler" default="true">
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-       <int name="rows">10</int>
-     </lst>
-    </requestHandler>
-
-  <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter"/>
-
-  <queryResponseWriter name="velocityWithInitProps" class="solr.VelocityResponseWriter">
-    <str name="init.properties.file">velocity-init.properties</str>
-  </queryResponseWriter>
-
-  <queryResponseWriter name="velocityWithCustomTools" class="solr.VelocityResponseWriter">
-    <lst name="tools">
-      <!-- how someone would typically add a custom tool, with a custom, non-clashing name -->
-      <str name="mytool">org.apache.solr.velocity.MockTool</str>
-
-      <!-- override the $log context object -->
-      <str name="log">org.apache.solr.velocity.MockTool</str>
-
-      <!-- Try to override response, but ignored -->
-      <str name="response">org.apache.solr.velocity.MockTool</str>
-    </lst>
-  </queryResponseWriter>
-</config>
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity-init.properties b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity-init.properties
deleted file mode 100644
index 853e5fc..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity-init.properties
+++ /dev/null
@@ -1,18 +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.
-#
-
-foreach.provide.scope.control=false
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/VM_global_library.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/VM_global_library.vm
deleted file mode 100644
index 7bd767e..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/VM_global_library.vm
+++ /dev/null
@@ -1,3 +0,0 @@
-#macro(legacy_macro)legacy_macro_SUCCESS#end
-
-#macro(url_root)Loaded from: VM_global_library.vm#end
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/encoding.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/encoding.vm
deleted file mode 100644
index 419f3f2..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/encoding.vm
+++ /dev/null
@@ -1 +0,0 @@
-éñçø∂îñg
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/layout.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/layout.vm
deleted file mode 100644
index 39136e1..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/layout.vm
+++ /dev/null
@@ -1 +0,0 @@
-{{{$content}}}
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale.vm
deleted file mode 100644
index a85fd05..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale.vm
+++ /dev/null
@@ -1 +0,0 @@
-$resource.color
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale_number.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale_number.vm
deleted file mode 100644
index 9994022..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/locale_number.vm
+++ /dev/null
@@ -1 +0,0 @@
-$number.format(2112)
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/macros.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/macros.vm
deleted file mode 100644
index 46a508f..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/macros.vm
+++ /dev/null
@@ -1,3 +0,0 @@
-#macro(test_macro)test_macro_SUCCESS#end
-
-#macro(url_root)Loaded from: macros.vm#end
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/numFound.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/numFound.vm
deleted file mode 100644
index 7bafdcd..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/numFound.vm
+++ /dev/null
@@ -1 +0,0 @@
-$response.response.response.numFound
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/outside_the_box.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/outside_the_box.vm
deleted file mode 100644
index c52c94b..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/outside_the_box.vm
+++ /dev/null
@@ -1,4 +0,0 @@
-#set($x='')
-#set($sys=$x.class.forName('java.lang.System'))
-#set($ex=$sys.getProperty('os.name'))
-$ex
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/resource_get.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/resource_get.vm
deleted file mode 100644
index 8a4890f..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/resource_get.vm
+++ /dev/null
@@ -1 +0,0 @@
-$resource.get("color","resources","en_UK")
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/sandbox_intersection.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/sandbox_intersection.vm
deleted file mode 100644
index 80c7422..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/sandbox_intersection.vm
+++ /dev/null
@@ -1,5 +0,0 @@
-#set($x='')
-#set($sys=$x.class.forName('java.nio.file.Paths'))
-#set($path=$sys.get('/dumbass/denied_location'))
-#set($ex=$path.resolve($path).toRealPath())
-$ex
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_legacy_support.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_legacy_support.vm
deleted file mode 100644
index 30f32fe..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_legacy_support.vm
+++ /dev/null
@@ -1 +0,0 @@
-#legacy_macro
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_overridden.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_overridden.vm
deleted file mode 100644
index f06b28f..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_overridden.vm
+++ /dev/null
@@ -1 +0,0 @@
-#url_root
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_visible.vm b/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_visible.vm
deleted file mode 100644
index 7a5baed..0000000
--- a/solr/contrib/velocity/src/test-files/velocity/solr/collection1/conf/velocity/test_macro_visible.vm
+++ /dev/null
@@ -1 +0,0 @@
-#test_macro
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test/custom_tool.vm b/solr/contrib/velocity/src/test/custom_tool.vm
deleted file mode 100644
index 3efff7d..0000000
--- a/solr/contrib/velocity/src/test/custom_tool.vm
+++ /dev/null
@@ -1,19 +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. *#
-
-mytool.star=$!mytool.star("LATERALUS")
-mytool.locale=$!mytool.locale
-log.star=$!log.star("log overridden")
-response.star=$!response.star("response overridden??")
diff --git a/solr/contrib/velocity/src/test/foreach.vm b/solr/contrib/velocity/src/test/foreach.vm
deleted file mode 100644
index 5d7d1e9..0000000
--- a/solr/contrib/velocity/src/test/foreach.vm
+++ /dev/null
@@ -1,14 +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. *##foreach($x in ["a","b"])$!foreach.index#end
diff --git a/solr/contrib/velocity/src/test/org/apache/solr/velocity/MockTool.java b/solr/contrib/velocity/src/test/org/apache/solr/velocity/MockTool.java
deleted file mode 100644
index c6287fd..0000000
--- a/solr/contrib/velocity/src/test/org/apache/solr/velocity/MockTool.java
+++ /dev/null
@@ -1,34 +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.velocity;
-
-import org.apache.solr.core.SolrCore;
-import org.apache.velocity.tools.generic.LocaleConfig;
-
-public class MockTool extends LocaleConfig {
-  private final SolrCore core;
-
-  public MockTool(SolrCore core) {
-    this.core = core;
-  }
-
-  public String star(String str) {
-    return "** " + str + " **";
-  }
-
-  public SolrCore getCore() { return core; }
-}
diff --git a/solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java b/solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java
deleted file mode 100644
index 1aa3dfa..0000000
--- a/solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java
+++ /dev/null
@@ -1,318 +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.velocity;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.security.AccessControlException;
-import java.util.Properties;
-
-import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.common.SolrException;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.response.QueryResponseWriter;
-import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.response.VelocityResponseWriter;
-import org.apache.velocity.exception.MethodInvocationException;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-
-public class VelocityResponseWriterTest extends SolrTestCaseJ4 {
-  @BeforeClass
-  public static void beforeClass() throws Exception {
-    initCore("solrconfig.xml", "schema.xml", getFile("velocity/solr").getAbsolutePath());
-  }
-
-  @AfterClass
-  public static void afterClass() throws Exception {
-  }
-
-  @Override
-  public void setUp() throws Exception {
-    // This test case toggles the configset used from trusted to untrusted - return to default of trusted for each test
-    h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(true);
-    super.setUp();
-  }
-
-  @Test
-  public void testVelocityResponseWriterRegistered() {
-    QueryResponseWriter writer = h.getCore().getQueryResponseWriter("velocity");
-    assertTrue("VrW registered check", writer instanceof VelocityResponseWriter);
-  }
-
-  @Test
-  public void testSecureUberspector() throws Exception {
-    VelocityResponseWriter vrw = new VelocityResponseWriter();
-    NamedList<String> nl = new NamedList<>();
-    nl.add("template.base.dir", getFile("velocity").getAbsolutePath());
-    vrw.init(nl);
-    SolrQueryRequest req = req(VelocityResponseWriter.TEMPLATE,"outside_the_box");
-    SolrQueryResponse rsp = new SolrQueryResponse();
-    StringWriter buf = new StringWriter();
-    vrw.write(buf, req, rsp);
-    assertEquals("$ex",buf.toString());  // $ex rendered literally because it is null, and thus did not succeed to break outside the box
-  }
-
-  @Test
-  @Ignore("SOLR-14025: Velocity's SecureUberspector addresses this")
-  public void testTemplateSandbox() throws Exception {
-    assumeTrue("This test only works with security manager", System.getSecurityManager() != null);
-    VelocityResponseWriter vrw = new VelocityResponseWriter();
-    NamedList<String> nl = new NamedList<>();
-    nl.add("template.base.dir", getFile("velocity").getAbsolutePath());
-    vrw.init(nl);
-    SolrQueryRequest req = req(VelocityResponseWriter.TEMPLATE,"outside_the_box");
-    SolrQueryResponse rsp = new SolrQueryResponse();
-    StringWriter buf = new StringWriter();
-    try {
-      vrw.write(buf, req, rsp);
-      fail("template broke outside the box, retrieved: " + buf);
-    } catch (MethodInvocationException e) {
-      assertNotNull(e.getCause());
-      assertEquals(AccessControlException.class, e.getCause().getClass());
-      // expected failure, can't get outside the box
-    }
-  }
-
-  @Test
-  @Ignore("SOLR-14025: Velocity's SecureUberspector addresses this")
-  public void testSandboxIntersection() throws Exception {
-    assumeTrue("This test only works with security manager", System.getSecurityManager() != null);
-    VelocityResponseWriter vrw = new VelocityResponseWriter();
-    NamedList<String> nl = new NamedList<>();
-    nl.add("template.base.dir", getFile("velocity").getAbsolutePath());
-    vrw.init(nl);
-    SolrQueryRequest req = req(VelocityResponseWriter.TEMPLATE,"sandbox_intersection");
-    SolrQueryResponse rsp = new SolrQueryResponse();
-    StringWriter buf = new StringWriter();
-    try {
-      vrw.write(buf, req, rsp);
-      fail("template broke outside the box, retrieved: " + buf);
-    } catch (MethodInvocationException e) {
-      assertNotNull(e.getCause());
-      assertEquals(AccessControlException.class, e.getCause().getClass());
-      // expected failure, can't get outside the box
-    }
-  }
-
-  @Test
-  public void testFileResourceLoader() throws Exception {
-    VelocityResponseWriter vrw = new VelocityResponseWriter();
-    NamedList<String> nl = new NamedList<>();
-    nl.add("template.base.dir", getFile("velocity").getAbsolutePath());
-    vrw.init(nl);
-    SolrQueryRequest req = req(VelocityResponseWriter.TEMPLATE,"file");
-    SolrQueryResponse rsp = new SolrQueryResponse();
-    StringWriter buf = new StringWriter();
-    vrw.write(buf, req, rsp);
-    assertEquals("testing", buf.toString());
-  }
-
-  @Test
-  public void testTemplateTrust() throws Exception {
-    // Try on trusted configset....
-    assertEquals("0", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"numFound")));
-
-    // Turn off trusted configset, which disables the Solr resource loader
-    h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(false);
-    assertFalse(h.getCoreContainer().getCoreDescriptor(coreName).isConfigSetTrusted());
-
-    try {
-      assertEquals("0", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"numFound")));
-      fail("template rendering should have failed, from an untrusted configset");
-    } catch (IOException e) {
-      // expected exception
-      assertEquals(IOException.class, e.getClass());
-    }
-
-    // set the harness back to the default of trusted
-    h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(true);
-  }
-
-
-  @Test
-  public void testSolrResourceLoaderTemplate() throws Exception {
-    assertEquals("0", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"numFound")));
-  }
-
-  @Test
-  public void testEncoding() throws Exception {
-    assertEquals("éñçø∂îñg", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"encoding")));
-  }
-
-  @Test
-  public void testMacros() throws Exception {
-    // tests that a macro in a custom macros.vm is visible
-    assertEquals("test_macro_SUCCESS", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"test_macro_visible")));
-
-    // tests that a builtin (_macros.vm) macro, #url_root in this case, can be overridden in a custom macros.vm
-    // the macro is also defined in VM_global_library.vm, which should also be overridden by macros.vm
-    assertEquals("Loaded from: macros.vm", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"test_macro_overridden")));
-
-    // tests that macros defined in VM_global_library.vm are visible.  This file was where macros in pre-5.0 versions were defined
-    assertEquals("legacy_macro_SUCCESS", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"test_macro_legacy_support")));
-  }
-
-  @Test
-  public void testInitProps() throws Exception {
-    // The test init properties file turns off being able to use $foreach.index (the implicit loop counter)
-    // The foreach.vm template uses $!foreach.index, with ! suppressing the literal "$foreach.index" output
-
-    assertEquals("01", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"foreach")));
-    assertEquals("", h.query(req("q","*:*", "wt","velocityWithInitProps",VelocityResponseWriter.TEMPLATE,"foreach")));
-
-    // Turn off trusted configset, which disables the init properties
-    h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(false);
-    assertFalse(h.getCoreContainer().getCoreDescriptor(coreName).isConfigSetTrusted());
-
-    assertEquals("01", h.query(req("q","*:*", "wt","velocityWithInitProps",VelocityResponseWriter.TEMPLATE,"foreach")));
-
-    // set the harness back to the default of trusted
-    h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(true);
-  }
-
-  @Test
-  public void testCustomTools() throws Exception {
-    // Render this template once without a custom tool defined, and once with it defined.  The tool has a `.star` method.
-    // The tool added as `mytool`, `log`, and `response`.  `log` is designed to be overridable, but not `response`
-    //    mytool.star=$!mytool.star("LATERALUS")
-    //    mytool.locale=$!mytool.locale
-    //    log.star=$!log.star("log overridden")
-    //    response.star=$!response.star("response overridden??")
-
-    // First without the tool defined, with `$!` turning null object/method references into empty string
-    Properties rendered_props = new Properties();
-    String rsp = h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"custom_tool"));
-    rendered_props.load(new StringReader(rsp));
-    // ignore mytool.locale here, as it will be the random test one
-    assertEquals("",rendered_props.getProperty("mytool.star"));
-    assertEquals("",rendered_props.getProperty("log.star"));
-    assertEquals("",rendered_props.getProperty("response.star"));
-
-    // Now with custom tools defined:
-    rsp = h.query(req("q","*:*", "wt","velocityWithCustomTools",VelocityResponseWriter.TEMPLATE,"custom_tool",VelocityResponseWriter.LOCALE, "de_DE"));
-    rendered_props.clear();
-    rendered_props.load(new StringReader(rsp));
-    assertEquals("** LATERALUS **",rendered_props.getProperty("mytool.star"));
-    assertEquals("** log overridden **",rendered_props.getProperty("log.star"));
-    assertEquals("",rendered_props.getProperty("response.star"));
-    assertEquals("de_DE",rendered_props.getProperty("mytool.locale"));
-
-
-    // Turn off trusted configset, which disables the custom tool injection
-    h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(false);
-    assertFalse(h.getCoreContainer().getCoreDescriptor(coreName).isConfigSetTrusted());
-
-    rsp = h.query(req("q","*:*", "wt","velocityWithCustomTools",VelocityResponseWriter.TEMPLATE,"custom_tool",VelocityResponseWriter.LOCALE, "de_DE"));
-    rendered_props.clear();
-    rendered_props.load(new StringReader(rsp));
-    assertEquals("",rendered_props.getProperty("mytool.star"));
-    assertEquals("",rendered_props.getProperty("log.star"));
-    assertEquals("",rendered_props.getProperty("response.star"));
-    assertEquals("",rendered_props.getProperty("mytool.locale"));
-
-    // set the harness back to the default of trusted
-    h.getCoreContainer().getCoreDescriptor(h.coreName).setConfigSetTrusted(true);
-
-
-    // Custom tools can also have a SolrCore-arg constructor because they are instantiated with SolrCore.createInstance
-    // TODO: do we really need to support this?  no great loss, as a custom tool could take a SolrCore object as a parameter to
-    // TODO: any method, so one could do $mytool.my_method($request.core)
-    // I'm currently inclined to make this feature undocumented/unsupported, as we may want to instantiate classes
-    // in a different manner that only supports no-arg constructors, commented (passing) test case out
-    //    assertEquals("collection1", h.query(req("q","*:*", "wt","velocityWithCustomTools",VelocityResponseWriter.TEMPLATE,"t",
-    //        SolrParamResourceLoader.TEMPLATE_PARAM_PREFIX+"t", "$mytool.core.name")))
-    //           - NOTE: example uses removed inline param; convert to external template as needed
-  }
-
-  @Test
-  public void testLocaleFeature() throws Exception {
-    assertEquals("Color", h.query(req("q", "*:*", "wt", "velocity", VelocityResponseWriter.TEMPLATE, "locale",
-        VelocityResponseWriter.LOCALE,"en_US")));
-    assertEquals("Colour", h.query(req("q", "*:*", "wt", "velocity", VelocityResponseWriter.TEMPLATE, "locale",
-        VelocityResponseWriter.LOCALE,"en_UK")));
-
-    // Test that $resource.get(key,baseName,locale) works with specified locale
-    assertEquals("Colour", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"resource_get")));
-
-    // Test that $number tool uses the specified locale
-    assertEquals("2,112", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"locale_number",
-        VelocityResponseWriter.LOCALE, "en_US")));
-    assertEquals("2.112", h.query(req("q","*:*", "wt","velocity",VelocityResponseWriter.TEMPLATE,"locale_number",
-        VelocityResponseWriter.LOCALE, "de_DE")));
-  }
-
-  @Test
-  public void testLayoutFeature() throws Exception {
-    assertEquals("{{{0}}}", h.query(req("q","*:*", "wt","velocity",
-        VelocityResponseWriter.TEMPLATE,"numFound", VelocityResponseWriter.LAYOUT,"layout")));
-
-    // even with v.layout specified, layout can be disabled explicitly
-    assertEquals("0", h.query(req("q","*:*", "wt","velocity",
-        VelocityResponseWriter.TEMPLATE,"numFound",
-        VelocityResponseWriter.LAYOUT,"layout",
-        VelocityResponseWriter.LAYOUT_ENABLED,"false")));
-  }
-
-  @Test
-  public void testJSONWrapper() throws Exception {
-    assertEquals("foo({\"result\":\"0\"})", h.query(req("q", "*:*", "wt", "velocity",
-        VelocityResponseWriter.TEMPLATE, "numFound",
-        VelocityResponseWriter.JSON,"foo")));
-
-    // Now with layout, for good measure
-    assertEquals("foo({\"result\":\"{{{0}}}\"})", h.query(req("q", "*:*", "wt", "velocity",
-        VelocityResponseWriter.TEMPLATE, "numFound",
-        VelocityResponseWriter.JSON,"foo",
-        VelocityResponseWriter.LAYOUT,"layout")));
-
-    assertQEx("Bad function name should throw exception", req("q", "*:*", "wt", "velocity",
-        VelocityResponseWriter.TEMPLATE, "numFound",
-        VelocityResponseWriter.JSON,"<foo>"), SolrException.ErrorCode.BAD_REQUEST
-    );
-  }
-
-  @Test
-  public void testContentType() {
-    VelocityResponseWriter vrw = new VelocityResponseWriter();
-    NamedList<String> nl = new NamedList<>();
-    vrw.init(nl);
-    SolrQueryResponse rsp = new SolrQueryResponse();
-
-    // with v.json=wrf, content type should default to application/json
-    assertEquals("application/json;charset=UTF-8",
-        vrw.getContentType(req(VelocityResponseWriter.TEMPLATE, "numFound",
-            VelocityResponseWriter.JSON, "wrf"), rsp));
-
-    // with no v.json specified, the default text/html should be returned
-    assertEquals("text/html;charset=UTF-8",
-        vrw.getContentType(req(VelocityResponseWriter.TEMPLATE, "numFound"), rsp));
-
-    // if v.contentType is specified, that should be used, even if v.json is specified
-    assertEquals("text/plain",
-        vrw.getContentType(req(VelocityResponseWriter.TEMPLATE, "numFound",
-            VelocityResponseWriter.CONTENT_TYPE,"text/plain"), rsp));
-    assertEquals("text/plain",
-        vrw.getContentType(req(VelocityResponseWriter.TEMPLATE, "numFound",
-            VelocityResponseWriter.JSON,"wrf",
-            VelocityResponseWriter.CONTENT_TYPE,"text/plain"), rsp));
-  }
-}
diff --git a/solr/contrib/velocity/src/test/velocity/resources.properties b/solr/contrib/velocity/src/test/velocity/resources.properties
deleted file mode 100644
index ec6320f..0000000
--- a/solr/contrib/velocity/src/test/velocity/resources.properties
+++ /dev/null
@@ -1,18 +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.
-#
-
-color=Color
\ No newline at end of file
diff --git a/solr/contrib/velocity/src/test/velocity/resources_en_UK.properties b/solr/contrib/velocity/src/test/velocity/resources_en_UK.properties
deleted file mode 100644
index 21a476f..0000000
--- a/solr/contrib/velocity/src/test/velocity/resources_en_UK.properties
+++ /dev/null
@@ -1,18 +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.
-#
-
-color=Colour
\ No newline at end of file